Alexandros Popov commited on
Commit
a4cf580
·
1 Parent(s): 73b811a

included telemetry.

Browse files
Files changed (4) hide show
  1. .pre-commit-config.yaml +4 -4
  2. agents.py +18 -0
  3. pyproject.toml +4 -0
  4. uv.lock +40 -3
.pre-commit-config.yaml CHANGED
@@ -29,10 +29,10 @@ repos:
29
  - id: mypy
30
  args: ["--ignore-missing-imports", "--install-types", "--non-interactive"]
31
 
32
- - repo: https://github.com/PyCQA/isort
33
- rev: 5.13.2
34
- hooks:
35
- - id: isort
36
 
37
  - repo: https://github.com/PyCQA/bandit
38
  rev: 1.7.7
 
29
  - id: mypy
30
  args: ["--ignore-missing-imports", "--install-types", "--non-interactive"]
31
 
32
+ # - repo: https://github.com/PyCQA/isort
33
+ # rev: 5.13.2
34
+ # hooks:
35
+ # - id: isort
36
 
37
  - repo: https://github.com/PyCQA/bandit
38
  rev: 1.7.7
agents.py CHANGED
@@ -1,13 +1,31 @@
1
  import argparse
 
2
  import os
3
  import tempfile
4
 
 
 
 
 
5
  from PIL import Image
6
  from smolagents import CodeAgent, InferenceClientModel
7
 
8
  import filters as flt
9
  import judges as jdg
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  HUGGING_FACE_TOKEN = os.environ["HUGGING_FACE_TOKEN"]
12
 
13
  image_operator_model = InferenceClientModel(
 
1
  import argparse
2
+ import base64
3
  import os
4
  import tempfile
5
 
6
+ from openinference.instrumentation.smolagents import SmolagentsInstrumentor
7
+ from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
8
+ from opentelemetry.sdk.trace import TracerProvider
9
+ from opentelemetry.sdk.trace.export import SimpleSpanProcessor
10
  from PIL import Image
11
  from smolagents import CodeAgent, InferenceClientModel
12
 
13
  import filters as flt
14
  import judges as jdg
15
 
16
+ LANGFUSE_PUBLIC_KEY = os.environ["LANGFURE_PUBLIC_KEY"]
17
+ LANGFUSE_SECRET_KEY = os.environ["LANGFUSE_SECRET_KEY"]
18
+ LANGFUSE_AUTH = base64.b64encode(f"{LANGFUSE_PUBLIC_KEY}:{LANGFUSE_SECRET_KEY}".encode()).decode()
19
+
20
+ os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = "https://cloud.langfuse.com/api/public/otel" # EU data region
21
+ os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = f"Authorization=Basic {LANGFUSE_AUTH}"
22
+
23
+ trace_provider = TracerProvider()
24
+ trace_provider.add_span_processor(SimpleSpanProcessor(OTLPSpanExporter()))
25
+
26
+ SmolagentsInstrumentor().instrument(tracer_provider=trace_provider)
27
+
28
+
29
  HUGGING_FACE_TOKEN = os.environ["HUGGING_FACE_TOKEN"]
30
 
31
  image_operator_model = InferenceClientModel(
pyproject.toml CHANGED
@@ -6,9 +6,13 @@ readme = "README.md"
6
  requires-python = ">=3.10"
7
  dependencies = [
8
  "gradio>=5.32.1",
 
9
  "numpy>=2.2.6",
10
  "openai>=1.84.0",
11
  "opencv-python>=4.11.0.86",
 
 
 
12
  "pillow>=11.2.1",
13
  "replicate>=1.0.7",
14
  "smolagents[telemetry,toolkit]>=1.17.0",
 
6
  requires-python = ">=3.10"
7
  dependencies = [
8
  "gradio>=5.32.1",
9
+ "langfuse>=3.0.0",
10
  "numpy>=2.2.6",
11
  "openai>=1.84.0",
12
  "opencv-python>=4.11.0.86",
13
+ "openinference-instrumentation-smolagents>=0.1.12",
14
+ "opentelemetry-exporter-otlp>=1.34.0",
15
+ "opentelemetry-sdk>=1.34.0",
16
  "pillow>=11.2.1",
17
  "replicate>=1.0.7",
18
  "smolagents[telemetry,toolkit]>=1.17.0",
uv.lock CHANGED
@@ -21,9 +21,13 @@ version = "0.1.0"
21
  source = { virtual = "." }
22
  dependencies = [
23
  { name = "gradio" },
 
24
  { name = "numpy" },
25
  { name = "openai" },
26
  { name = "opencv-python" },
 
 
 
27
  { name = "pillow" },
28
  { name = "replicate" },
29
  { name = "smolagents", extra = ["telemetry", "toolkit"] },
@@ -32,9 +36,13 @@ dependencies = [
32
  [package.metadata]
33
  requires-dist = [
34
  { name = "gradio", specifier = ">=5.32.1" },
 
35
  { name = "numpy", specifier = ">=2.2.6" },
36
  { name = "openai", specifier = ">=1.84.0" },
37
  { name = "opencv-python", specifier = ">=4.11.0.86" },
 
 
 
38
  { name = "pillow", specifier = ">=11.2.1" },
39
  { name = "replicate", specifier = ">=1.0.7" },
40
  { name = "smolagents", extras = ["telemetry", "toolkit"], specifier = ">=1.17.0" },
@@ -255,6 +263,15 @@ wheels = [
255
  { url = "https://files.pythonhosted.org/packages/84/29/587c189bbab1ccc8c86a03a5d0e13873df916380ef1be461ebe6acebf48d/authlib-1.6.0-py2.py3-none-any.whl", hash = "sha256:91685589498f79e8655e8a8947431ad6288831d643f11c55c2143ffcc738048d", size = 239981 },
256
  ]
257
 
 
 
 
 
 
 
 
 
 
258
  [[package]]
259
  name = "beautifulsoup4"
260
  version = "4.13.4"
@@ -953,6 +970,26 @@ wheels = [
953
  { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746 },
954
  ]
955
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
956
  [[package]]
957
  name = "lxml"
958
  version = "5.4.0"
@@ -1474,11 +1511,11 @@ wheels = [
1474
 
1475
  [[package]]
1476
  name = "packaging"
1477
- version = "25.0"
1478
  source = { registry = "https://pypi.org/simple" }
1479
- sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 }
1480
  wheels = [
1481
- { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 },
1482
  ]
1483
 
1484
  [[package]]
 
21
  source = { virtual = "." }
22
  dependencies = [
23
  { name = "gradio" },
24
+ { name = "langfuse" },
25
  { name = "numpy" },
26
  { name = "openai" },
27
  { name = "opencv-python" },
28
+ { name = "openinference-instrumentation-smolagents" },
29
+ { name = "opentelemetry-exporter-otlp" },
30
+ { name = "opentelemetry-sdk" },
31
  { name = "pillow" },
32
  { name = "replicate" },
33
  { name = "smolagents", extra = ["telemetry", "toolkit"] },
 
36
  [package.metadata]
37
  requires-dist = [
38
  { name = "gradio", specifier = ">=5.32.1" },
39
+ { name = "langfuse", specifier = ">=3.0.0" },
40
  { name = "numpy", specifier = ">=2.2.6" },
41
  { name = "openai", specifier = ">=1.84.0" },
42
  { name = "opencv-python", specifier = ">=4.11.0.86" },
43
+ { name = "openinference-instrumentation-smolagents", specifier = ">=0.1.12" },
44
+ { name = "opentelemetry-exporter-otlp", specifier = ">=1.34.0" },
45
+ { name = "opentelemetry-sdk", specifier = ">=1.34.0" },
46
  { name = "pillow", specifier = ">=11.2.1" },
47
  { name = "replicate", specifier = ">=1.0.7" },
48
  { name = "smolagents", extras = ["telemetry", "toolkit"], specifier = ">=1.17.0" },
 
263
  { url = "https://files.pythonhosted.org/packages/84/29/587c189bbab1ccc8c86a03a5d0e13873df916380ef1be461ebe6acebf48d/authlib-1.6.0-py2.py3-none-any.whl", hash = "sha256:91685589498f79e8655e8a8947431ad6288831d643f11c55c2143ffcc738048d", size = 239981 },
264
  ]
265
 
266
+ [[package]]
267
+ name = "backoff"
268
+ version = "2.2.1"
269
+ source = { registry = "https://pypi.org/simple" }
270
+ sdist = { url = "https://files.pythonhosted.org/packages/47/d7/5bbeb12c44d7c4f2fb5b56abce497eb5ed9f34d85701de869acedd602619/backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba", size = 17001 }
271
+ wheels = [
272
+ { url = "https://files.pythonhosted.org/packages/df/73/b6e24bd22e6720ca8ee9a85a0c4a2971af8497d8f3193fa05390cbd46e09/backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8", size = 15148 },
273
+ ]
274
+
275
  [[package]]
276
  name = "beautifulsoup4"
277
  version = "4.13.4"
 
970
  { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746 },
971
  ]
972
 
973
+ [[package]]
974
+ name = "langfuse"
975
+ version = "3.0.0"
976
+ source = { registry = "https://pypi.org/simple" }
977
+ dependencies = [
978
+ { name = "backoff" },
979
+ { name = "httpx" },
980
+ { name = "opentelemetry-api" },
981
+ { name = "opentelemetry-exporter-otlp" },
982
+ { name = "opentelemetry-sdk" },
983
+ { name = "packaging" },
984
+ { name = "pydantic" },
985
+ { name = "requests" },
986
+ { name = "wrapt" },
987
+ ]
988
+ sdist = { url = "https://files.pythonhosted.org/packages/21/13/5faae9cc988c135a63eddc247d4cc5808b956f6cde1cd95469e7c67802bf/langfuse-3.0.0.tar.gz", hash = "sha256:c47449ae93a3007efee6b861484f529efb187ddbfb5093e0cb94b84636e0a605", size = 147241 }
989
+ wheels = [
990
+ { url = "https://files.pythonhosted.org/packages/5d/3f/4ebe4e2977b48ba8876dc8a9deecd721655a17dde5d898df19212e9c5609/langfuse-3.0.0-py3-none-any.whl", hash = "sha256:5f493bd15760b15195cc71ec7aaa4f93008058a1f5dfe4b32f72f31cbdc6f605", size = 291814 },
991
+ ]
992
+
993
  [[package]]
994
  name = "lxml"
995
  version = "5.4.0"
 
1511
 
1512
  [[package]]
1513
  name = "packaging"
1514
+ version = "24.2"
1515
  source = { registry = "https://pypi.org/simple" }
1516
+ sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 }
1517
  wheels = [
1518
+ { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 },
1519
  ]
1520
 
1521
  [[package]]