Spaces:
Running
Running
Sync from GitHub via hub-sync
Browse files- VERSION +1 -1
- pyproject.toml +2 -0
- smolagents/smol_langfuse.py +52 -0
- uv.lock +32 -0
VERSION
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
|
|
|
|
| 1 |
+
e76d85a709e8890dd69cfe41f32690ebbd534312
|
pyproject.toml
CHANGED
|
@@ -9,7 +9,9 @@ dependencies = [
|
|
| 9 |
"e2b-code-interpreter>=2.6.2",
|
| 10 |
"gradio>=5.49.1",
|
| 11 |
"huggingface-hub>=1.11.0",
|
|
|
|
| 12 |
"numpy>=2.4.4",
|
|
|
|
| 13 |
"pandas>=3.0.2",
|
| 14 |
"smolagents[e2b,litellm,telemetry,toolkit]>=1.22.0",
|
| 15 |
]
|
|
|
|
| 9 |
"e2b-code-interpreter>=2.6.2",
|
| 10 |
"gradio>=5.49.1",
|
| 11 |
"huggingface-hub>=1.11.0",
|
| 12 |
+
"langfuse>=4.5.1",
|
| 13 |
"numpy>=2.4.4",
|
| 14 |
+
"openinference-instrumentation-smolagents>=0.1.27",
|
| 15 |
"pandas>=3.0.2",
|
| 16 |
"smolagents[e2b,litellm,telemetry,toolkit]>=1.22.0",
|
| 17 |
]
|
smolagents/smol_langfuse.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# https://huggingface.co/docs/smolagents/tutorials/inspect_runs
|
| 2 |
+
|
| 3 |
+
import os
|
| 4 |
+
from langfuse import Langfuse
|
| 5 |
+
|
| 6 |
+
import smolagents.local_python_executor as lpe
|
| 7 |
+
from concurrent.futures import ThreadPoolExecutor
|
| 8 |
+
|
| 9 |
+
# Fix for compatibility with smolagents >= 1.22.0 and openinference-instrumentation-smolagents
|
| 10 |
+
if not hasattr(lpe, "ThreadPoolExecutor"):
|
| 11 |
+
lpe.ThreadPoolExecutor = ThreadPoolExecutor
|
| 12 |
+
|
| 13 |
+
from smolagents import (
|
| 14 |
+
CodeAgent,
|
| 15 |
+
ToolCallingAgent,
|
| 16 |
+
WebSearchTool,
|
| 17 |
+
VisitWebpageTool,
|
| 18 |
+
InferenceClientModel,
|
| 19 |
+
)
|
| 20 |
+
|
| 21 |
+
# Initialize Langfuse
|
| 22 |
+
langfuse = Langfuse()
|
| 23 |
+
|
| 24 |
+
# Verify connection
|
| 25 |
+
if langfuse.auth_check():
|
| 26 |
+
print("✓ Langfuse connection successful!")
|
| 27 |
+
else:
|
| 28 |
+
print("✗ Langfuse connection failed. Check your API key and host.")
|
| 29 |
+
|
| 30 |
+
model = InferenceClientModel("deepseek-ai/DeepSeek-V4-Flash")
|
| 31 |
+
|
| 32 |
+
search_agent = CodeAgent(
|
| 33 |
+
tools=[WebSearchTool(), VisitWebpageTool()],
|
| 34 |
+
model=model,
|
| 35 |
+
name="search_agent",
|
| 36 |
+
description="This is an agent that can do web search.",
|
| 37 |
+
)
|
| 38 |
+
|
| 39 |
+
manager_agent = CodeAgent(
|
| 40 |
+
tools=[],
|
| 41 |
+
model=model,
|
| 42 |
+
managed_agents=[search_agent],
|
| 43 |
+
)
|
| 44 |
+
|
| 45 |
+
if __name__ == "__main__":
|
| 46 |
+
result = manager_agent.run(
|
| 47 |
+
"How can Langfuse be used to monitor and improve the reasoning and decision-making of smolagents when they execute multi-step tasks, like dynamically adjusting a recipe based on user feedback or available ingredients?"
|
| 48 |
+
)
|
| 49 |
+
|
| 50 |
+
print("\nAgent Result:")
|
| 51 |
+
print(result)
|
| 52 |
+
print("\n✓ Done!")
|
uv.lock
CHANGED
|
@@ -353,6 +353,15 @@ wheels = [
|
|
| 353 |
{ url = "https://files.pythonhosted.org/packages/ca/48/c954218b2a250e23f178f10167c4173fecb5a75d2c206f0a67ba58006c26/authlib-1.7.0-py2.py3-none-any.whl", hash = "sha256:e36817afb02f6f0b6bf55f150782499ddd6ddf44b402bb055d3263cc65ac9ae0", size = 258779, upload-time = "2026-04-18T11:00:26.64Z" },
|
| 354 |
]
|
| 355 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 356 |
[[package]]
|
| 357 |
name = "beautifulsoup4"
|
| 358 |
version = "4.14.3"
|
|
@@ -1091,7 +1100,9 @@ dependencies = [
|
|
| 1091 |
{ name = "e2b-code-interpreter" },
|
| 1092 |
{ name = "gradio" },
|
| 1093 |
{ name = "huggingface-hub" },
|
|
|
|
| 1094 |
{ name = "numpy" },
|
|
|
|
| 1095 |
{ name = "pandas" },
|
| 1096 |
{ name = "smolagents", extra = ["e2b", "litellm", "telemetry", "toolkit"] },
|
| 1097 |
]
|
|
@@ -1102,7 +1113,9 @@ requires-dist = [
|
|
| 1102 |
{ name = "e2b-code-interpreter", specifier = ">=2.6.2" },
|
| 1103 |
{ name = "gradio", specifier = ">=5.49.1" },
|
| 1104 |
{ name = "huggingface-hub", specifier = ">=1.11.0" },
|
|
|
|
| 1105 |
{ name = "numpy", specifier = ">=2.4.4" },
|
|
|
|
| 1106 |
{ name = "pandas", specifier = ">=3.0.2" },
|
| 1107 |
{ name = "smolagents", extras = ["e2b", "litellm", "telemetry", "toolkit"], specifier = ">=1.22.0" },
|
| 1108 |
]
|
|
@@ -1280,6 +1293,25 @@ wheels = [
|
|
| 1280 |
{ url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" },
|
| 1281 |
]
|
| 1282 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1283 |
[[package]]
|
| 1284 |
name = "ldap3"
|
| 1285 |
version = "2.9.1"
|
|
|
|
| 353 |
{ url = "https://files.pythonhosted.org/packages/ca/48/c954218b2a250e23f178f10167c4173fecb5a75d2c206f0a67ba58006c26/authlib-1.7.0-py2.py3-none-any.whl", hash = "sha256:e36817afb02f6f0b6bf55f150782499ddd6ddf44b402bb055d3263cc65ac9ae0", size = 258779, upload-time = "2026-04-18T11:00:26.64Z" },
|
| 354 |
]
|
| 355 |
|
| 356 |
+
[[package]]
|
| 357 |
+
name = "backoff"
|
| 358 |
+
version = "2.2.1"
|
| 359 |
+
source = { registry = "https://pypi.org/simple" }
|
| 360 |
+
sdist = { url = "https://files.pythonhosted.org/packages/47/d7/5bbeb12c44d7c4f2fb5b56abce497eb5ed9f34d85701de869acedd602619/backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba", size = 17001, upload-time = "2022-10-05T19:19:32.061Z" }
|
| 361 |
+
wheels = [
|
| 362 |
+
{ url = "https://files.pythonhosted.org/packages/df/73/b6e24bd22e6720ca8ee9a85a0c4a2971af8497d8f3193fa05390cbd46e09/backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8", size = 15148, upload-time = "2022-10-05T19:19:30.546Z" },
|
| 363 |
+
]
|
| 364 |
+
|
| 365 |
[[package]]
|
| 366 |
name = "beautifulsoup4"
|
| 367 |
version = "4.14.3"
|
|
|
|
| 1100 |
{ name = "e2b-code-interpreter" },
|
| 1101 |
{ name = "gradio" },
|
| 1102 |
{ name = "huggingface-hub" },
|
| 1103 |
+
{ name = "langfuse" },
|
| 1104 |
{ name = "numpy" },
|
| 1105 |
+
{ name = "openinference-instrumentation-smolagents" },
|
| 1106 |
{ name = "pandas" },
|
| 1107 |
{ name = "smolagents", extra = ["e2b", "litellm", "telemetry", "toolkit"] },
|
| 1108 |
]
|
|
|
|
| 1113 |
{ name = "e2b-code-interpreter", specifier = ">=2.6.2" },
|
| 1114 |
{ name = "gradio", specifier = ">=5.49.1" },
|
| 1115 |
{ name = "huggingface-hub", specifier = ">=1.11.0" },
|
| 1116 |
+
{ name = "langfuse", specifier = ">=4.5.1" },
|
| 1117 |
{ name = "numpy", specifier = ">=2.4.4" },
|
| 1118 |
+
{ name = "openinference-instrumentation-smolagents", specifier = ">=0.1.27" },
|
| 1119 |
{ name = "pandas", specifier = ">=3.0.2" },
|
| 1120 |
{ name = "smolagents", extras = ["e2b", "litellm", "telemetry", "toolkit"], specifier = ">=1.22.0" },
|
| 1121 |
]
|
|
|
|
| 1293 |
{ url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" },
|
| 1294 |
]
|
| 1295 |
|
| 1296 |
+
[[package]]
|
| 1297 |
+
name = "langfuse"
|
| 1298 |
+
version = "4.5.1"
|
| 1299 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1300 |
+
dependencies = [
|
| 1301 |
+
{ name = "backoff" },
|
| 1302 |
+
{ name = "httpx" },
|
| 1303 |
+
{ name = "opentelemetry-api" },
|
| 1304 |
+
{ name = "opentelemetry-exporter-otlp-proto-http" },
|
| 1305 |
+
{ name = "opentelemetry-sdk" },
|
| 1306 |
+
{ name = "packaging" },
|
| 1307 |
+
{ name = "pydantic" },
|
| 1308 |
+
{ name = "wrapt" },
|
| 1309 |
+
]
|
| 1310 |
+
sdist = { url = "https://files.pythonhosted.org/packages/48/bd/9b12c9dd3ae1883619b20daa6d60f20a780ce2d25564d9b2168db27cbeb0/langfuse-4.5.1.tar.gz", hash = "sha256:fe8f9219f4101c0921934b0aeb1b45834f8e7d248e5f830b2c89c5b40aea6d83", size = 279735, upload-time = "2026-04-24T15:21:43.976Z" }
|
| 1311 |
+
wheels = [
|
| 1312 |
+
{ url = "https://files.pythonhosted.org/packages/2b/63/77bd7220dfd60885a272a851f780b3f83e0f653ee3a852347552c3e24a28/langfuse-4.5.1-py3-none-any.whl", hash = "sha256:5923cafe8289c9e3c53cb6992f4b46ec3132473b9f9eb65eb33ad28e2682db81", size = 479527, upload-time = "2026-04-24T15:21:45.568Z" },
|
| 1313 |
+
]
|
| 1314 |
+
|
| 1315 |
[[package]]
|
| 1316 |
name = "ldap3"
|
| 1317 |
version = "2.9.1"
|