реализон рабочий llm agent с вызовом функций использующий LM Studio в качестве сервера

main
Artem-Darius Weber 1 month ago
commit f7174411e4

@ -0,0 +1,234 @@
import requests
from typing import Any, Dict, List, Optional
from langchain.llms.base import LLM
from langchain.agents import initialize_agent, AgentType, Tool
from pydantic import Field, BaseModel
import os
from dotenv import load_dotenv
from datetime import datetime
import wikipedia
from asteval import Interpreter # For a safer calculator
import logging
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# Load environment variables from .env file if present
load_dotenv()
# Constants for LM Studio API
LM_STUDIO_API_URL = os.getenv("LM_STUDIO_API_URL", "http://192.168.0.104:1234/v1/chat/completions")
MODEL_NAME = os.getenv("LM_STUDIO_MODEL", "lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf")
CONTENT_TYPE = "application/json"
class LMStudioLLM(LLM):
"""
Custom LangChain LLM to interface with LM Studio API.
"""
api_url: str = Field(default=LM_STUDIO_API_URL, description="The API endpoint for LM Studio.")
model: str = Field(default=MODEL_NAME, description="The model path/name.")
temperature: float = Field(default=0.7, description="Sampling temperature.")
max_tokens: Optional[int] = Field(default=4096, description="Maximum number of tokens to generate.")
streaming: bool = Field(default=False, alias="stream", description="Whether to use streaming responses.")
class Config:
populate_by_name = True
@property
def _llm_type(self) -> str:
return "lmstudio"
@property
def identifying_params(self) -> Dict[str, Any]:
return {
"api_url": self.api_url,
"model": self.model,
"temperature": self.temperature,
"max_tokens": self.max_tokens,
"stream": self.streaming,
}
def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str:
"""
Generate a response from the LM Studio model.
Args:
prompt (str): The input prompt.
stop (Optional[List[str]]): Stop sequences.
Returns:
str: The generated response.
"""
headers = {
"Content-Type": CONTENT_TYPE,
}
payload = {
"model": self.model,
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt},
],
"temperature": self.temperature,
"max_tokens": self.max_tokens if self.max_tokens is not None else -1,
"stream": self.streaming, # Uses alias 'stream'
}
logger.info(f"Payload: {payload}")
try:
response = requests.post(
self.api_url,
headers=headers,
json=payload,
timeout=60,
stream=self.streaming
)
response.raise_for_status()
logger.info(f"Response content: {response.text}")
except requests.RequestException as e:
logger.error(f"Failed to connect to LM Studio API: {e}")
raise RuntimeError(f"Failed to connect to LM Studio API: {e}")
if self.streaming:
return self._handle_stream(response)
else:
try:
response_json = response.json()
choices = response_json.get("choices", [])
if not choices:
raise ValueError("No choices found in the response.")
# Extract the first response's content
content = choices[0].get("message", {}).get("content", "")
return content.strip()
except (ValueError, KeyError) as e:
logger.error(f"Invalid response format: {e}")
raise RuntimeError(f"Invalid response format: {e}")
def _handle_stream(self, response: requests.Response) -> str:
"""
Process streaming responses from the LM Studio API.
Args:
response (requests.Response): The streaming response object.
Returns:
str: The concatenated content from the stream.
"""
content = ""
try:
for line in response.iter_lines():
if line:
decoded_line = line.decode('utf-8')
if decoded_line.startswith("data: "):
data = decoded_line[6:]
if data == "[DONE]":
break
try:
json_data = requests.utils.json.loads(data)
choices = json_data.get("choices", [])
for chunk in choices:
delta = chunk.get("delta", {})
piece = delta.get("content", "")
content += piece
except requests.utils.json.JSONDecodeError:
continue
return content.strip()
except Exception as e:
logger.error(f"Error processing streaming response: {e}")
raise RuntimeError(f"Error processing streaming response: {e}")
def calculator(input: str) -> str:
"""
A simple calculator tool that safely evaluates mathematical expressions.
Args:
input (str): The mathematical expression to evaluate.
Returns:
str: The result of the evaluation.
"""
try:
aeval = Interpreter()
result = aeval(input)
return str(result)
except Exception as e:
logger.error(f"Calculator error: {e}")
return f"Error evaluating expression: {e}"
def wikipedia_search(query: str) -> str:
"""
Search Wikipedia for a given query and return a summary.
Args:
query (str): The search query.
Returns:
str: A summary from Wikipedia.
"""
try:
summary = wikipedia.summary(query, sentences=2)
return summary
except wikipedia.exceptions.DisambiguationError as e:
return f"Disambiguation error. Options include: {e.options}"
except wikipedia.exceptions.PageError:
return "No page found for the query."
except Exception as e:
logger.error(f"Wikipedia search error: {e}")
return f"An error occurred: {e}"
def current_time(_input: str) -> str:
"""
Returns the current system time.
Args:
_input (str): Ignored input.
Returns:
str: The current time as a string.
"""
now = datetime.now()
return now.strftime("%Y-%m-%d %H:%M:%S")
# Initialize the custom LLM
llm = LMStudioLLM()
# Define Tools
tools = [
Tool(
name="Calculator",
func=calculator,
description="Useful for performing mathematical calculations. Input should be a valid mathematical expression.",
),
Tool(
name="WikipediaSearch",
func=wikipedia_search,
description="Useful for fetching summaries from Wikipedia. Input should be a search query.",
),
Tool(
name="CurrentTime",
func=current_time,
description="Returns the current system time.",
),
]
# Initialize the Agent
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
handle_parsing_errors=True,
)
# Example Usage
if __name__ == "__main__":
user_input = "What is the capital of France and what is 15 multiplied by 3?"
try:
response = agent({"input": user_input})
print(response["output"])
except Exception as e:
logger.error(f"Agent invocation error: {e}")
print(f"An error occurred: {e}")

@ -0,0 +1,430 @@
ace_tools==0.0
aiobotocore @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_71xswk40o_/croot/aiobotocore_1682537536268/work
aiofiles @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_f56ag8l7kr/croot/aiofiles_1683773599608/work
aiohttp @ file:///Users/cbousseau/work/recipes/ci_py311/aiohttp_1677926054700/work
aioitertools @ file:///tmp/build/80754af9/aioitertools_1607109665762/work
aiosignal @ file:///tmp/build/80754af9/aiosignal_1637843061372/work
aiosqlite @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_3d75lecab1/croot/aiosqlite_1683773918307/work
alabaster @ file:///home/ktietz/src/ci/alabaster_1611921544520/work
alembic==1.14.0
altgraph==0.17.4
anaconda-catalogs @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_e8tmw882qa/croot/anaconda-catalogs_1685727305051/work
anaconda-client==1.12.0
anaconda-navigator==2.4.2
anaconda-project @ file:///Users/cbousseau/work/recipes/ci_py311/anaconda-project_1677964558977/work
annotated-types==0.7.0
anyio @ file:///Users/cbousseau/work/recipes/ci_py311/anyio_1677917528418/work/dist
appdirs==1.4.4
applaunchservices @ file:///Users/cbousseau/work/recipes/ci_py311/applaunchservices_1677955996025/work
appnope @ file:///Users/cbousseau/work/recipes/ci_py311/appnope_1677917710869/work
appscript @ file:///Users/cbousseau/work/recipes/ci_py311/appscript_1677956964648/work
argon2-cffi @ file:///opt/conda/conda-bld/argon2-cffi_1645000214183/work
argon2-cffi-bindings @ file:///Users/cbousseau/work/recipes/ci_py311/argon2-cffi-bindings_1677915727169/work
arrow @ file:///Users/cbousseau/work/recipes/ci_py311/arrow_1677931434012/work
asteval==1.0.5
astroid @ file:///Users/cbousseau/work/recipes/ci_py311/astroid_1677926110661/work
astropy @ file:///Users/cbousseau/work/recipes/ci_py311_2/astropy_1678994125362/work
asttokens @ file:///opt/conda/conda-bld/asttokens_1646925590279/work
async-timeout @ file:///Users/cbousseau/work/recipes/ci_py311/async-timeout_1677925030615/work
atomicwrites==1.4.0
attrs @ file:///Users/cbousseau/work/recipes/ci_py311/attrs_1677906550284/work
audioread==3.0.1
Automat @ file:///tmp/build/80754af9/automat_1600298431173/work
autopep8 @ file:///opt/conda/conda-bld/autopep8_1650463822033/work
Babel @ file:///Users/cbousseau/work/recipes/ci_py311/babel_1677920677615/work
backcall @ file:///home/ktietz/src/ci/backcall_1611930011877/work
backports.functools-lru-cache @ file:///tmp/build/80754af9/backports.functools_lru_cache_1618170165463/work
backports.tempfile @ file:///home/linux1/recipes/ci/backports.tempfile_1610991236607/work
backports.weakref==1.0.post1
bcrypt @ file:///Users/cbousseau/work/recipes/ci_py311/bcrypt_1677931459811/work
beautifulsoup4 @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_fa78jvo_0n/croot/beautifulsoup4-split_1681493044306/work
binaryornot @ file:///tmp/build/80754af9/binaryornot_1617751525010/work
black @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_29yzn6blpk/croot/black_1680737263429/work
bleach @ file:///opt/conda/conda-bld/bleach_1641577558959/work
bokeh @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_7552pi2mmm/croot/bokeh_1690546093040/work
boltons @ file:///Users/cbousseau/work/recipes/ci_py311/boltons_1677965141748/work
botocore @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_45ad_8onrk/croot/botocore_1682528014542/work
Bottleneck @ file:///Users/cbousseau/work/recipes/ci_py311/bottleneck_1677925122241/work
Brotli==1.1.0
brotlipy==0.7.0
certifi @ file:///home/conda/feedstock_root/build_artifacts/certifi_1718025014955/work/certifi
cffi @ file:///Users/cbousseau/work/recipes/ci_py311/cffi_1677903595907/work
chardet @ file:///Users/cbousseau/work/recipes/ci_py311/chardet_1677931647221/work
charset-normalizer @ file:///tmp/build/80754af9/charset-normalizer_1630003229654/work
click @ file:///Users/cbousseau/work/recipes/ci_py311/click_1677920889666/work
cloudpickle @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_da31odypvn/croot/cloudpickle_1683040013858/work
clyent==1.2.2
colorama @ file:///Users/cbousseau/work/recipes/ci_py311/colorama_1677925183444/work
colorcet @ file:///Users/cbousseau/work/recipes/ci_py311/colorcet_1677936559489/work
comm @ file:///Users/cbousseau/work/recipes/ci_py311/comm_1677919149446/work
conda @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_3ehd9hpsix/croot/conda_1690494984812/work
conda-build @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_f467bc822c/croot/conda-build_1690381801495/work
conda-content-trust @ file:///home/conda/feedstock_root/build_artifacts/conda-content-trust_1693490762241/work
conda-libmamba-solver @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_48qgqxi1ys/croot/conda-libmamba-solver_1685032355439/work/src
conda-pack @ file:///tmp/build/80754af9/conda-pack_1611163042455/work
conda-package-handling @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_fc4cx8vjhj/croot/conda-package-handling_1690999937094/work
conda-repo-cli==1.0.41
conda-token @ file:///Users/paulyim/miniconda3/envs/c3i/conda-bld/conda-token_1662660369760/work
conda-verify==3.4.2
conda_index @ file:///Users/cbousseau/work/recipes/ci_py311/conda-index_1677970042779/work
conda_package_streaming @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_aecpaup22q/croot/conda-package-streaming_1690987978274/work
constantly==15.1.0
contourpy @ file:///Users/cbousseau/work/recipes/ci_py311/contourpy_1677925208456/work
cookiecutter @ file:///opt/conda/conda-bld/cookiecutter_1649151442564/work
cryptography @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_a3xvfhudbc/croot/cryptography_1689373681671/work
cssselect==1.1.0
curl_cffi==0.7.1
cycler @ file:///tmp/build/80754af9/cycler_1637851556182/work
cytoolz @ file:///Users/cbousseau/work/recipes/ci_py311/cytoolz_1677931761799/work
dask @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_f3jad8spw3/croot/dask-core_1686782923467/work
dataclasses-json==0.6.7
datasets @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_5eqct1blor/croot/datasets_1684482935720/work
datashader @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_8f3fxewux9/croot/datashader_1689587619365/work
datashape==0.5.4
debugpy @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_563_nwtkoc/croot/debugpy_1690905063850/work
decorator @ file:///opt/conda/conda-bld/decorator_1643638310831/work
defusedxml @ file:///tmp/build/80754af9/defusedxml_1615228127516/work
diff-match-patch @ file:///Users/ktietz/demo/mc3/conda-bld/diff-match-patch_1630511840874/work
dill @ file:///Users/cbousseau/work/recipes/ci_py311/dill_1677926161443/work
distributed @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_46b2z6ud_6/croot/distributed_1686866053959/work
distro==1.9.0
docstring-to-markdown @ file:///Users/cbousseau/work/recipes/ci_py311/docstring-to-markdown_1677931891483/work
docutils @ file:///Users/cbousseau/work/recipes/ci_py311/docutils_1677907269557/work
entrypoints @ file:///Users/cbousseau/work/recipes/ci_py311/entrypoints_1677911798787/work
et-xmlfile==1.1.0
executing @ file:///opt/conda/conda-bld/executing_1646925071911/work
fastapi==0.115.4
fastjsonschema @ file:///Users/cbousseau/work/recipes/ci_py311_2/python-fastjsonschema_1678996913062/work
ffmpy==0.4.0
filelock @ file:///Users/cbousseau/work/recipes/ci_py311/filelock_1677909105322/work
flake8 @ file:///Users/cbousseau/work/recipes/ci_py311/flake8_1677931981927/work
Flask @ file:///Users/cbousseau/work/recipes/ci_py311/flask_1677937489551/work
fonttools==4.25.0
frozenlist @ file:///Users/cbousseau/work/recipes/ci_py311/frozenlist_1677923867353/work
fsspec==2023.5.0
future @ file:///Users/cbousseau/work/recipes/ci_py311_2/future_1678994664110/work
g4f==0.3.2.3
gensim @ file:///Users/cbousseau/work/recipes/ci_py311/gensim_1677971806459/work
glob2 @ file:///home/linux1/recipes/ci/glob2_1610991677669/work
gmpy2 @ file:///Users/cbousseau/work/recipes/ci_py311/gmpy2_1677937751357/work
gpt4free==0.0.0
gradio==5.5.0
gradio_client==1.4.2
graphviz==0.20.3
greenlet @ file:///Users/cbousseau/work/recipes/ci_py311/greenlet_1677926210411/work
h11==0.14.0
h5py @ file:///Users/cbousseau/work/recipes/ci_py311/h5py_1677937901660/work
HeapDict @ file:///Users/ktietz/demo/mc3/conda-bld/heapdict_1630598515714/work
holoviews @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_f0kn6h75hh/croot/holoviews_1690477580363/work
httpcore==1.0.5
httpx==0.27.0
huggingface-hub==0.26.2
hvplot @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_30omxxom8t/croot/hvplot_1686021066828/work
hyperlink @ file:///tmp/build/80754af9/hyperlink_1610130746837/work
idna @ file:///Users/cbousseau/work/recipes/ci_py311/idna_1677906072337/work
imagecodecs @ file:///Users/cbousseau/work/recipes/ci_py311_2/imagecodecs_1678994839331/work
imageio @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_c1sh4q1483/croot/imageio_1687264958491/work
imagesize @ file:///Users/cbousseau/work/recipes/ci_py311/imagesize_1677932611633/work
imbalanced-learn @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_26_yvb9nba/croot/imbalanced-learn_1685020915768/work
importlib-metadata @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_84cgjb624t/croot/importlib-metadata_1678997087058/work
incremental @ file:///tmp/build/80754af9/incremental_1636629750599/work
inflection==0.5.1
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
intake @ file:///Users/cbousseau/work/recipes/ci_py311_2/intake_1678994948878/work
intervaltree @ file:///Users/ktietz/demo/mc3/conda-bld/intervaltree_1630511889664/work
ipykernel @ file:///Users/cbousseau/work/recipes/ci_py311/ipykernel_1677921035781/work
ipython @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_2bkl1d0l7u/croot/ipython_1680701883396/work
ipython-genutils @ file:///tmp/build/80754af9/ipython_genutils_1606773439826/work
ipywidgets @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_f07ugy1hvo/croot/ipywidgets_1679394821999/work
isort @ file:///tmp/build/80754af9/isort_1628603791788/work
itemadapter @ file:///tmp/build/80754af9/itemadapter_1626442940632/work
itemloaders @ file:///opt/conda/conda-bld/itemloaders_1646805235997/work
itsdangerous @ file:///tmp/build/80754af9/itsdangerous_1621432558163/work
jaraco.classes @ file:///tmp/build/80754af9/jaraco.classes_1620983179379/work
jedi @ file:///Users/cbousseau/work/recipes/ci_py311_2/jedi_1678994967789/work
jellyfish @ file:///Users/cbousseau/work/recipes/ci_py311/jellyfish_1677959705446/work
Jinja2 @ file:///Users/cbousseau/work/recipes/ci_py311/jinja2_1677916113134/work
jinja2-time @ file:///opt/conda/conda-bld/jinja2-time_1649251842261/work
jmespath @ file:///Users/ktietz/demo/mc3/conda-bld/jmespath_1630583964805/work
joblib @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_a357ltg47g/croot/joblib_1685113093574/work
json5 @ file:///tmp/build/80754af9/json5_1624432770122/work
jsonpatch==1.33
jsonpointer==2.1
jsonschema @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_2a92785vxi/croot/jsonschema_1678983423459/work
jupyter @ file:///Users/cbousseau/work/recipes/ci_py311/jupyter_1677932849424/work
jupyter-console @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_62liw5pns2/croot/jupyter_console_1679999641189/work
jupyter-events @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_23dk3_r5iy/croot/jupyter_events_1684268066707/work
jupyter-server @ file:///Users/cbousseau/work/recipes/ci_py311/jupyter_server_1677919944873/work
jupyter-ydoc @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_1djmqkjwof/croot/jupyter_ydoc_1683747243427/work
jupyter_client @ file:///Users/cbousseau/work/recipes/ci_py311/jupyter_client_1677914181590/work
jupyter_core @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_d1sy1hlz9t/croot/jupyter_core_1679906585151/work
jupyter_server_fileid @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_a5j1mo_1cs/croot/jupyter_server_fileid_1684273608144/work
jupyter_server_ydoc @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_47q6o0w705/croot/jupyter_server_ydoc_1686767400324/work
jupyterlab @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_a5omaxlzc0/croot/jupyterlab_1686179674589/work
jupyterlab-pygments @ file:///tmp/build/80754af9/jupyterlab_pygments_1601490720602/work
jupyterlab-widgets @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_65wwn9cwab/croot/jupyterlab_widgets_1679055283460/work
jupyterlab_server @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_0fmfqwbrd7/croot/jupyterlab_server_1680792517631/work
keyring @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_8bd22k84zo/croot/keyring_1678999224442/work
kiwisolver @ file:///Users/cbousseau/work/recipes/ci_py311/kiwisolver_1677925326358/work
langchain==0.3.10
langchain-community==0.2.10
langchain-core==0.3.22
langchain-text-splitters==0.3.2
langsmith==0.1.147
lazy-object-proxy @ file:///Users/cbousseau/work/recipes/ci_py311/lazy-object-proxy_1677925379420/work
lazy_loader @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_9c4sl77tg1/croot/lazy_loader_1687264096938/work
libarchive-c @ file:///tmp/build/80754af9/python-libarchive-c_1617780486945/work
libmambapy @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_ba7rom_bbt/croot/mamba-split_1680092817644/work/libmambapy
librosa==0.10.2.post1
linkify-it-py @ file:///Users/cbousseau/work/recipes/ci_py311/linkify-it-py_1677973036983/work
llvmlite @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_fcgbla6sbr/croot/llvmlite_1683555144762/work
lmdb @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_6fumkuh_c0/croot/python-lmdb_1682522347231/work
locket @ file:///Users/cbousseau/work/recipes/ci_py311/locket_1677925419801/work
lxml @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_bbjv2ox7t8/croot/lxml_1679646469466/work
lz4 @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_f0mtitgo6y/croot/lz4_1686063770247/work
macholib==1.16.3
Mako==1.3.7
Markdown @ file:///Users/cbousseau/work/recipes/ci_py311/markdown_1677932925449/work
markdown-it-py @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_43l_4ajkho/croot/markdown-it-py_1684279912406/work
MarkupSafe @ file:///Users/cbousseau/work/recipes/ci_py311/markupsafe_1677914270710/work
marshmallow==3.21.3
matplotlib @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_05rfi32zzb/croot/matplotlib-suite_1679593473526/work
matplotlib-inline @ file:///Users/cbousseau/work/recipes/ci_py311/matplotlib-inline_1677918241899/work
mccabe @ file:///opt/conda/conda-bld/mccabe_1644221741721/work
mdit-py-plugins @ file:///Users/cbousseau/work/recipes/ci_py311/mdit-py-plugins_1677995322132/work
mdurl @ file:///Users/cbousseau/work/recipes/ci_py311/mdurl_1677942260967/work
mistune @ file:///Users/cbousseau/work/recipes/ci_py311/mistune_1677916714667/work
more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work
mpi4py @ file:///Users/cbousseau/work/recipes/ci_py311/mpi4py_1677995449793/work
mpmath @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_17iu6a8a3m/croot/mpmath_1690848269369/work
msgpack @ file:///Users/cbousseau/work/recipes/ci_py311/msgpack-python_1677909260136/work
multidict @ file:///Users/cbousseau/work/recipes/ci_py311/multidict_1677923908690/work
multipledispatch @ file:///Users/cbousseau/work/recipes/ci_py311/multipledispatch_1677960800437/work
multiprocess @ file:///Users/cbousseau/work/recipes/ci_py311/multiprocess_1677942297511/work
munkres==1.1.4
mutagen==1.47.0
mypy-extensions==0.4.3
mysql-connector-python==9.0.0
navigator-updater==0.4.0
nbclassic @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_d6oy9w0m3l/croot/nbclassic_1681756176477/work
nbclient @ file:///Users/cbousseau/work/recipes/ci_py311/nbclient_1677916908988/work
nbconvert @ file:///Users/cbousseau/work/recipes/ci_py311/nbconvert_1677918402558/work
nbformat @ file:///Users/cbousseau/work/recipes/ci_py311/nbformat_1677914501406/work
nest-asyncio @ file:///Users/cbousseau/work/recipes/ci_py311/nest-asyncio_1677912430289/work
networkx @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_b9af3smw_7/croot/networkx_1690562010704/work
nltk @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_ebiuq9880w/croot/nltk_1688114154971/work
notebook @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_37zamp3vxi/croot/notebook_1690984825122/work
notebook_shim @ file:///Users/cbousseau/work/recipes/ci_py311/notebook-shim_1677921216909/work
numba @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_bar0txilh4/croot/numba_1684245494553/work
numexpr @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_76yyu1p9jk/croot/numexpr_1683221830860/work
numpy @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_f9f5xs2fx0/croot/numpy_and_numpy_base_1682520577456/work
numpydoc @ file:///Users/cbousseau/work/recipes/ci_py311/numpydoc_1677960919550/work
ollama==0.4.3
openai==1.38.0
openpyxl==3.0.10
openvoicechat==0.2.4
orjson==3.10.6
packaging==24.1
pandas==1.5.3
pandocfilters @ file:///opt/conda/conda-bld/pandocfilters_1643405455980/work
panel @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_fckdqsngkv/croot/panel_1690822225257/work
param @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_cfp588uo3i/croot/param_1684915323490/work
parsel @ file:///Users/cbousseau/work/recipes/ci_py311/parsel_1678068232273/work
parso @ file:///opt/conda/conda-bld/parso_1641458642106/work
partd @ file:///opt/conda/conda-bld/partd_1647245470509/work
pathlib @ file:///Users/ktietz/demo/mc3/conda-bld/pathlib_1629713961906/work
pathspec @ file:///Users/cbousseau/work/recipes/ci_py311_2/pathspec_1678995598596/work
patsy==0.5.3
pep8==1.7.1
pexpect @ file:///tmp/build/80754af9/pexpect_1605563209008/work
pickleshare @ file:///tmp/build/80754af9/pickleshare_1606932040724/work
Pillow==9.4.0
pkginfo @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_d1oq9rhye6/croot/pkginfo_1679431178842/work
platformdirs @ file:///Users/cbousseau/work/recipes/ci_py311/platformdirs_1677909443319/work
plotly @ file:///Users/cbousseau/work/recipes/ci_py311/plotly_1677953301864/work
pluggy @ file:///Users/cbousseau/work/recipes/ci_py311/pluggy_1677906980825/work
ply==3.11
pooch @ file:///tmp/build/80754af9/pooch_1623324770023/work
poyo @ file:///tmp/build/80754af9/poyo_1617751526755/work
prometheus-client @ file:///Users/cbousseau/work/recipes/ci_py311_2/prometheus_client_1678996808082/work
prompt-toolkit @ file:///Users/cbousseau/work/recipes/ci_py311/prompt-toolkit_1677918689663/work
Protego @ file:///tmp/build/80754af9/protego_1598657180827/work
psutil @ file:///Users/cbousseau/work/recipes/ci_py311_2/psutil_1678995687212/work
ptyprocess @ file:///tmp/build/80754af9/ptyprocess_1609355006118/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl
pure-eval @ file:///opt/conda/conda-bld/pure_eval_1646925070566/work
py-cpuinfo @ file:///Users/ktietz/demo/mc3/conda-bld/py-cpuinfo_1629480366017/work
pyarrow==11.0.0
pyasn1 @ file:///Users/ktietz/demo/mc3/conda-bld/pyasn1_1629708007385/work
pyasn1-modules==0.2.8
PyAudio==0.2.14
pycodestyle @ file:///Users/cbousseau/work/recipes/ci_py311/pycodestyle_1677927047034/work
pycosat @ file:///Users/cbousseau/work/recipes/ci_py311/pycosat_1677933552468/work
pycparser @ file:///tmp/build/80754af9/pycparser_1636541352034/work
pycryptodome==3.20.0
pycryptodomex==3.20.0
pyct @ file:///Users/cbousseau/work/recipes/ci_py311/pyct_1677933596803/work
pycurl==7.45.2
pydantic==2.10.3
pydantic_core==2.27.1
PyDispatcher==2.0.5
pydocstyle @ file:///Users/cbousseau/work/recipes/ci_py311/pydocstyle_1677933616104/work
pydub==0.25.1
pyerfa @ file:///Users/cbousseau/work/recipes/ci_py311/pyerfa_1677933632816/work
pyflakes @ file:///Users/cbousseau/work/recipes/ci_py311/pyflakes_1677927066386/work
Pygments @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_29bs9f_dh9/croot/pygments_1684279974747/work
pyinstaller==6.8.0
pyinstaller-hooks-contrib==2024.7
PyJWT @ file:///Users/cbousseau/work/recipes/ci_py311/pyjwt_1677933681463/work
pylint @ file:///Users/cbousseau/work/recipes/ci_py311/pylint_1677933699245/work
pylint-venv @ file:///Users/cbousseau/work/recipes/ci_py311/pylint-venv_1677961443839/work
pyls-spyder==0.4.0
pyobjc-core @ file:///Users/cbousseau/work/recipes/ci_py311/pyobjc-core_1678112643033/work
pyobjc-framework-Cocoa @ file:///Users/cbousseau/work/recipes/ci_py311/pyobjc-framework-cocoa_1678112805655/work
pyobjc-framework-CoreServices @ file:///Users/cbousseau/work/recipes/ci_py311/pyobjc-framework-coreservices_1678113537167/work
pyobjc-framework-FSEvents @ file:///Users/cbousseau/work/recipes/ci_py311/pyobjc-framework-fsevents_1678112996782/work
pyodbc @ file:///Users/cbousseau/work/recipes/ci_py311/pyodbc_1678001241548/work
pyOpenSSL @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_b8whqav6qm/croot/pyopenssl_1690223428943/work
pyparsing @ file:///Users/cbousseau/work/recipes/ci_py311/pyparsing_1677910832141/work
PyQt5==5.15.11
PyQt5-Qt5==5.15.15
PyQt5_sip==12.15.0
PyQtWebEngine==5.15.7
PyQtWebEngine-Qt5==5.15.15
pyrsistent @ file:///Users/cbousseau/work/recipes/ci_py311/pyrsistent_1677909782145/work
pysbd==0.3.4
PySocks @ file:///Users/cbousseau/work/recipes/ci_py311/pysocks_1677906386870/work
PySpice==1.5
pyTelegramBotAPI==4.21.0
pytest @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_75ehl8i878/croot/pytest_1690474711033/work
python-dateutil @ file:///tmp/build/80754af9/python-dateutil_1626374649649/work
python-docx==1.1.2
python-dotenv==1.0.1
python-json-logger @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_c3baq2ko4j/croot/python-json-logger_1683823815343/work
python-lsp-black @ file:///Users/cbousseau/work/recipes/ci_py311/python-lsp-black_1677961743861/work
python-lsp-jsonrpc==1.0.0
python-lsp-server @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_73tk9oa5lj/croot/python-lsp-server_1681930403042/work
python-multipart==0.0.12
python-slugify @ file:///tmp/build/80754af9/python-slugify_1620405669636/work
python-snappy @ file:///Users/cbousseau/work/recipes/ci_py311/python-snappy_1677954153933/work
python-telegram-bot==21.6
pytoolconfig @ file:///Users/cbousseau/work/recipes/ci_py311/pytoolconfig_1677952331058/work
pytube==15.0.0
pytz @ file:///Users/cbousseau/work/recipes/ci_py311/pytz_1677920497588/work
pyviz-comms @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_54a2e0jluq/croot/pyviz_comms_1685030719530/work
PyWavelets @ file:///Users/cbousseau/work/recipes/ci_py311/pywavelets_1677934749412/work
PyYAML @ file:///Users/cbousseau/work/recipes/ci_py311/pyyaml_1677927153992/work
pyzmq @ file:///Users/cbousseau/work/recipes/ci_py311/pyzmq_1677912759914/work
QDarkStyle @ file:///tmp/build/80754af9/qdarkstyle_1617386714626/work
qstylizer @ file:///Users/cbousseau/work/recipes/ci_py311/qstylizer_1678072198813/work/dist/qstylizer-0.2.2-py2.py3-none-any.whl
QtAwesome @ file:///Users/cbousseau/work/recipes/ci_py311/qtawesome_1677961781784/work
qtconsole @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_86g4aht18r/croot/qtconsole_1681394233851/work
QtPy @ file:///Users/cbousseau/work/recipes/ci_py311/qtpy_1677925820115/work
queuelib==1.5.0
regex @ file:///Users/cbousseau/work/recipes/ci_py311/regex_1677961821876/work
requests==2.32.3
requests-file @ file:///Users/ktietz/demo/mc3/conda-bld/requests-file_1629455781986/work
requests-toolbelt @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_3fee1fr2ex/croot/requests-toolbelt_1690874011813/work
responses @ file:///tmp/build/80754af9/responses_1619800270522/work
rfc3339-validator @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_76ae5cu30h/croot/rfc3339-validator_1683077051957/work
rfc3986-validator @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_d0l5zd97kt/croot/rfc3986-validator_1683058998431/work
rich==13.9.4
rope @ file:///Users/cbousseau/work/recipes/ci_py311/rope_1677934821109/work
Rtree @ file:///Users/cbousseau/work/recipes/ci_py311/rtree_1677961892694/work
ruamel-yaml-conda @ file:///Users/cbousseau/work/recipes/ci_py311/ruamel_yaml_1677961911260/work
ruamel.yaml @ file:///Users/cbousseau/work/recipes/ci_py311/ruamel.yaml_1677934845850/work
ruff==0.7.3
s3fs @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_94qu8izf0w/croot/s3fs_1682551484893/work
sacremoses @ file:///tmp/build/80754af9/sacremoses_1633107328213/work
safehttpx==0.1.1
schemdraw==0.17
scikit-image @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_12rg0hdzgk/croot/scikit-image_1682528304529/work
scikit-learn @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_75x_mwrnoj/croot/scikit-learn_1690978919744/work
scipy==1.10.1
Scrapy @ file:///Users/cbousseau/work/recipes/ci_py311/scrapy_1678002824834/work
seaborn @ file:///Users/cbousseau/work/recipes/ci_py311/seaborn_1677961968762/work
semantic-version==2.10.0
Send2Trash @ file:///tmp/build/80754af9/send2trash_1632406701022/work
service-identity @ file:///Users/ktietz/demo/mc3/conda-bld/service_identity_1629460757137/work
shellingham==1.5.4
sip @ file:///Users/cbousseau/work/recipes/ci_py311/sip_1677923661665/work
six @ file:///tmp/build/80754af9/six_1644875935023/work
smart-open @ file:///Users/cbousseau/work/recipes/ci_py311/smart_open_1677955621457/work
sniffio @ file:///Users/cbousseau/work/recipes/ci_py311/sniffio_1677917188478/work
snowballstemmer @ file:///tmp/build/80754af9/snowballstemmer_1637937080595/work
sortedcontainers @ file:///tmp/build/80754af9/sortedcontainers_1623949099177/work
sounddevice==0.5.1
soundfile==0.12.1
soupsieve @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_cfrx9hmp3g/croot/soupsieve_1680518480034/work
soxr==0.5.0.post1
Sphinx @ file:///Users/cbousseau/work/recipes/ci_py311/sphinx_1677955655588/work
sphinxcontrib-applehelp @ file:///home/ktietz/src/ci/sphinxcontrib-applehelp_1611920841464/work
sphinxcontrib-devhelp @ file:///home/ktietz/src/ci/sphinxcontrib-devhelp_1611920923094/work
sphinxcontrib-htmlhelp @ file:///tmp/build/80754af9/sphinxcontrib-htmlhelp_1623945626792/work
sphinxcontrib-jsmath @ file:///home/ktietz/src/ci/sphinxcontrib-jsmath_1611920942228/work
sphinxcontrib-qthelp @ file:///home/ktietz/src/ci/sphinxcontrib-qthelp_1611921055322/work
sphinxcontrib-serializinghtml @ file:///tmp/build/80754af9/sphinxcontrib-serializinghtml_1624451540180/work
spyder @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_f02k_edsgq/croot/spyder_1681934090757/work
spyder-kernels @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_18_uk_uzcm/croot/spyder-kernels_1681309301436/work
SQLAlchemy @ file:///Users/cbousseau/work/recipes/ci_py311/sqlalchemy_1677934876727/work
stack-data @ file:///opt/conda/conda-bld/stack_data_1646927590127/work
starlette==0.41.2
statsmodels @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_d39rlzrllo/croot/statsmodels_1689937269798/work
sympy==1.13.1
tables @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_2d3fzevm9d/croot/pytables_1685123231215/work
tabulate @ file:///Users/cbousseau/work/recipes/ci_py311/tabulate_1678003852126/work
TBB==0.2
tblib @ file:///Users/ktietz/demo/mc3/conda-bld/tblib_1629402031467/work
telegram==0.0.1
tenacity @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_0ew5sfng29/croot/tenacity_1682972282256/work
terminado @ file:///Users/cbousseau/work/recipes/ci_py311/terminado_1677918849903/work
text-unidecode @ file:///Users/ktietz/demo/mc3/conda-bld/text-unidecode_1629401354553/work
textdistance @ file:///tmp/build/80754af9/textdistance_1612461398012/work
threadpoolctl @ file:///Users/ktietz/demo/mc3/conda-bld/threadpoolctl_1629802263681/work
three-merge @ file:///tmp/build/80754af9/three-merge_1607553261110/work
tifffile @ file:///tmp/build/80754af9/tifffile_1627275862826/work
tinycss2 @ file:///Users/cbousseau/work/recipes/ci_py311/tinycss2_1677917352983/work
tldextract @ file:///opt/conda/conda-bld/tldextract_1646638314385/work
tokenizers @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_123g4rizbe/croot/tokenizers_1687191917415/work
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
tomlkit==0.12.0
toolz @ file:///Users/cbousseau/work/recipes/ci_py311/toolz_1677925870232/work
torch==2.5.1
torchaudio==2.5.1
tornado @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_28d93aezp2/croot/tornado_1690848278715/work
tqdm @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_ac7zic_tin/croot/tqdm_1679561870178/work
traitlets @ file:///Users/cbousseau/work/recipes/ci_py311/traitlets_1677911650502/work
transformers @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_aecnjml9j7/croot/transformers_1684843867688/work
Twisted @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_3c_lnc4s5c/croot/twisted_1683796895946/work
typer==0.13.0
typing-inspect==0.9.0
typing_extensions @ file:///home/conda/feedstock_root/build_artifacts/typing_extensions_1717802530399/work
uc-micro-py @ file:///Users/cbousseau/work/recipes/ci_py311/uc-micro-py_1677963537430/work
ujson @ file:///Users/cbousseau/work/recipes/ci_py311/ujson_1677927397272/work
Unidecode @ file:///tmp/build/80754af9/unidecode_1614712377438/work
urllib3==2.2.2
uvicorn==0.32.0
w3lib @ file:///Users/ktietz/demo/mc3/conda-bld/w3lib_1629359764703/work
watchdog @ file:///Users/cbousseau/work/recipes/ci_py311/watchdog_1677963700938/work
wcwidth @ file:///Users/ktietz/demo/mc3/conda-bld/wcwidth_1629357192024/work
webencodings==0.5.1
websocket-client @ file:///Users/cbousseau/work/recipes/ci_py311/websocket-client_1677918996745/work
websockets==12.0
Werkzeug @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_fc9kcczuwd/croot/werkzeug_1679489745296/work
whatthepatch @ file:///Users/cbousseau/work/recipes/ci_py311/whatthepatch_1677934976505/work
widgetsnbextension @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_cd_nvw5x1_/croot/widgetsnbextension_1679313872684/work
wikipedia==1.4.0
wrapt @ file:///Users/cbousseau/work/recipes/ci_py311/wrapt_1677925966862/work
wurlitzer @ file:///Users/cbousseau/work/recipes/ci_py311/wurlitzer_1677955854875/work
xarray @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_a14bvvrzzp/croot/xarray_1689041477812/work
xlwings @ file:///Users/cbousseau/work/recipes/ci_py311_2/xlwings_1678996173448/work
xxhash @ file:///Users/cbousseau/work/recipes/ci_py311/python-xxhash_1677954188023/work
xyzservices @ file:///Users/cbousseau/work/recipes/ci_py311/xyzservices_1677927443768/work
y-py @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_58d555zc6u/croot/y-py_1683555409055/work
yapf @ file:///tmp/build/80754af9/yapf_1615749224965/work
yarl @ file:///Users/cbousseau/work/recipes/ci_py311/yarl_1677926011607/work
ypy-websocket @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_e638ipunz1/croot/ypy-websocket_1684192343550/work
yt-dlp==2024.8.1
zict @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_06f3lix4ji/croot/zict_1682698748419/work
zipp @ file:///Users/cbousseau/work/recipes/ci_py311/zipp_1677907997878/work
zope.interface @ file:///Users/cbousseau/work/recipes/ci_py311/zope.interface_1678055276546/work
zstandard @ file:///Users/cbousseau/work/recipes/ci_py311_2/zstandard_1678996192313/work
Loading…
Cancel
Save