billyaungmyint commited on
Commit
a857b05
·
verified ·
1 Parent(s): 2277115

Sync from GitHub via hub-sync

Browse files
Files changed (4) hide show
  1. VERSION +1 -1
  2. pyproject.toml +2 -0
  3. smolagents/smol_langfuse.py +52 -0
  4. uv.lock +32 -0
VERSION CHANGED
@@ -1 +1 @@
1
- 7af57131ccbed63d444f4a45e8fa1a2a0fdce918
 
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"