Skip to content

Commit 9dc1075

Browse files
chatbot-rag-app: adds openteletry for cohere with langtrace (#371)
Signed-off-by: Adrian Cole <[email protected]> Co-authored-by: Riccardo Magliocchetti <[email protected]>
1 parent 126181a commit 9dc1075

File tree

4 files changed

+70
-15
lines changed

4 files changed

+70
-15
lines changed

example-apps/chatbot-rag-app/README.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,11 @@ the username "elastic" and password "elastic":
154154
http://localhost:5601/app/apm/traces?rangeFrom=now-15m&rangeTo=now
155155

156156
Under the scenes, chatbot-rag-app is automatically instrumented by the Elastic
157-
Distribution of OpenTelemetry (EDOT) Python. While this supports OpenAI, it may
158-
not yet support all LLM providers. You can see more details about EDOT Python
159-
[here](https://github.com/elastic/elastic-otel-python).
157+
Distribution of OpenTelemetry (EDOT) Python. You can see more details about
158+
EDOT Python [here](https://github.com/elastic/elastic-otel-python).
159+
160+
OpenTelemetry support for LLM providers not included in EDOT Python are provided
161+
by the [Langtrace Python SDK](https://docs.langtrace.ai/sdk/python_sdk).
160162

161163
### Updating package versions
162164

@@ -175,6 +177,8 @@ pip-compile
175177
pip install -r requirements.txt
176178
# Add opentelemetry instrumentation for these dependencies
177179
edot-bootstrap >> requirements.txt
180+
# Missing dependency for langtrace vertexai instrumentation
181+
echo "setuptools" >> requirements.txt
178182
# Install opentelemetry dependencies
179183
pip install -r requirements.txt
180184
```
@@ -196,4 +200,4 @@ See [Langchain documentation][loader-docs] for more ways to load documents.
196200

197201

198202
---
199-
[loader-docs]: https://python.langchain.com/docs/how_to/#document-loaders
203+
[loader-docs]: https://python.langchain.com/docs/how_to/#document-loaders

example-apps/chatbot-rag-app/api/llm_integrations.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ def init_mistral_chat(temperature):
5050

5151

5252
def init_cohere_chat(temperature):
53+
# Cohere is not yet in EDOT. Use the Langtrace Python SDK instead
54+
from langtrace_python_sdk.instrumentation import CohereInstrumentation
55+
56+
CohereInstrumentation().instrument()
5357
return ChatCohere(model=os.getenv("CHAT_MODEL"), temperature=temperature)
5458

5559

example-apps/chatbot-rag-app/requirements.in

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,7 @@ langchain-google-vertexai
1313
langchain-aws
1414
langchain-mistralai
1515

16-
# otel dependencies
16+
# EDOT dependencies
1717
elastic-opentelemetry
18+
# Additional LLM support not in EDOT
19+
langtrace-python-sdk

example-apps/chatbot-rag-app/requirements.txt

Lines changed: 55 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# This file is autogenerated by pip-compile with Python 3.12
2+
# This file is autogenerated by pip-compile with Python 3.13
33
# by the following command:
44
#
55
# pip-compile
@@ -36,12 +36,15 @@ certifi==2024.12.14
3636
# httpcore
3737
# httpx
3838
# requests
39+
# sentry-sdk
3940
charset-normalizer==3.4.0
4041
# via requests
4142
click==8.1.7
4243
# via flask
4344
cohere==5.13.3
4445
# via langchain-cohere
46+
colorama==0.4.6
47+
# via langtrace-python-sdk
4548
dataclasses-json==0.6.7
4649
# via langchain-community
4750
deprecated==1.2.15
@@ -65,7 +68,9 @@ elasticsearch[vectorstore-mmr]==8.17.0
6568
fastavro==1.9.7
6669
# via cohere
6770
filelock==3.16.1
68-
# via huggingface-hub
71+
# via
72+
# huggingface-hub
73+
# transformers
6974
flask==3.1.0
7075
# via
7176
# -r requirements.in
@@ -77,7 +82,9 @@ frozenlist==1.5.0
7782
# aiohttp
7883
# aiosignal
7984
fsspec==2024.10.0
80-
# via huggingface-hub
85+
# via
86+
# huggingface-hub
87+
# langtrace-python-sdk
8188
google-api-core[grpc]==2.24.0
8289
# via
8390
# google-cloud-aiplatform
@@ -122,8 +129,6 @@ googleapis-common-protos[grpc]==1.66.0
122129
# grpcio-status
123130
# opentelemetry-exporter-otlp-proto-grpc
124131
# opentelemetry-exporter-otlp-proto-http
125-
greenlet==3.1.1
126-
# via sqlalchemy
127132
grpc-google-iam-v1==0.13.1
128133
# via google-cloud-resource-manager
129134
grpcio==1.68.1
@@ -153,7 +158,9 @@ httpx-sse==0.4.0
153158
# langchain-google-vertexai
154159
# langchain-mistralai
155160
huggingface-hub==0.27.0
156-
# via tokenizers
161+
# via
162+
# tokenizers
163+
# transformers
157164
idna==3.10
158165
# via
159166
# anyio
@@ -215,6 +222,8 @@ langsmith==0.2.4
215222
# langchain
216223
# langchain-community
217224
# langchain-core
225+
langtrace-python-sdk==3.3.16
226+
# via -r requirements.in
218227
markupsafe==3.0.2
219228
# via
220229
# jinja2
@@ -236,14 +245,17 @@ numpy==1.26.4
236245
# langchain-community
237246
# pandas
238247
# shapely
248+
# transformers
239249
openai==1.58.1
240250
# via langchain-openai
241251
opentelemetry-api==1.29.0
242252
# via
243253
# elastic-opentelemetry
254+
# langtrace-python-sdk
244255
# opentelemetry-exporter-otlp-proto-grpc
245256
# opentelemetry-exporter-otlp-proto-http
246257
# opentelemetry-instrumentation
258+
# opentelemetry-instrumentation-sqlalchemy
247259
# opentelemetry-instrumentation-system-metrics
248260
# opentelemetry-resourcedetector-gcp
249261
# opentelemetry-sdk
@@ -255,13 +267,21 @@ opentelemetry-exporter-otlp-proto-common==1.29.0
255267
# opentelemetry-exporter-otlp-proto-grpc
256268
# opentelemetry-exporter-otlp-proto-http
257269
opentelemetry-exporter-otlp-proto-grpc==1.29.0
258-
# via opentelemetry-exporter-otlp
270+
# via
271+
# langtrace-python-sdk
272+
# opentelemetry-exporter-otlp
259273
opentelemetry-exporter-otlp-proto-http==1.29.0
260-
# via opentelemetry-exporter-otlp
274+
# via
275+
# langtrace-python-sdk
276+
# opentelemetry-exporter-otlp
261277
opentelemetry-instrumentation==0.50b0
262278
# via
263279
# elastic-opentelemetry
280+
# langtrace-python-sdk
281+
# opentelemetry-instrumentation-sqlalchemy
264282
# opentelemetry-instrumentation-system-metrics
283+
opentelemetry-instrumentation-sqlalchemy==0.50b0
284+
# via langtrace-python-sdk
265285
opentelemetry-instrumentation-system-metrics==0.50b0
266286
# via elastic-opentelemetry
267287
opentelemetry-proto==1.29.0
@@ -276,6 +296,7 @@ opentelemetry-resourcedetector-gcp==1.7.0a0
276296
opentelemetry-sdk==1.29.0
277297
# via
278298
# elastic-opentelemetry
299+
# langtrace-python-sdk
279300
# opentelemetry-exporter-otlp-proto-grpc
280301
# opentelemetry-exporter-otlp-proto-http
281302
# opentelemetry-resource-detector-azure
@@ -287,6 +308,7 @@ opentelemetry-semantic-conventions==0.50b0
287308
# via
288309
# elastic-opentelemetry
289310
# opentelemetry-instrumentation
311+
# opentelemetry-instrumentation-sqlalchemy
290312
# opentelemetry-sdk
291313
orjson==3.10.12
292314
# via langsmith
@@ -299,6 +321,8 @@ packaging==24.2
299321
# langchain-core
300322
# marshmallow
301323
# opentelemetry-instrumentation
324+
# opentelemetry-instrumentation-sqlalchemy
325+
# transformers
302326
pandas==2.2.3
303327
# via langchain-cohere
304328
parameterized==0.9.0
@@ -343,6 +367,7 @@ pydantic==2.9.2
343367
# langsmith
344368
# openai
345369
# pydantic-settings
370+
# trace-attributes
346371
pydantic-core==2.23.4
347372
# via
348373
# cohere
@@ -364,8 +389,11 @@ pyyaml==6.0.2
364389
# langchain
365390
# langchain-community
366391
# langchain-core
392+
# transformers
367393
regex==2024.11.6
368-
# via tiktoken
394+
# via
395+
# tiktoken
396+
# transformers
369397
requests==2.32.3
370398
# via
371399
# cohere
@@ -380,12 +408,17 @@ requests==2.32.3
380408
# opentelemetry-resourcedetector-gcp
381409
# requests-toolbelt
382410
# tiktoken
411+
# transformers
383412
requests-toolbelt==1.0.0
384413
# via langsmith
385414
rsa==4.9
386415
# via google-auth
387416
s3transfer==0.10.4
388417
# via boto3
418+
safetensors==0.4.5
419+
# via transformers
420+
sentry-sdk==2.19.2
421+
# via langtrace-python-sdk
389422
shapely==2.0.6
390423
# via google-cloud-aiplatform
391424
simsimd==6.2.1
@@ -401,6 +434,7 @@ sqlalchemy==2.0.36
401434
# via
402435
# langchain
403436
# langchain-community
437+
# langtrace-python-sdk
404438
tabulate==0.9.0
405439
# via langchain-cohere
406440
tenacity==9.0.0
@@ -412,19 +446,25 @@ tiktoken==0.8.0
412446
# via
413447
# -r requirements.in
414448
# langchain-openai
449+
# langtrace-python-sdk
415450
tokenizers==0.21.0
416451
# via
417452
# cohere
418453
# langchain-mistralai
454+
# transformers
419455
tqdm==4.67.1
420456
# via
421457
# huggingface-hub
422458
# openai
459+
# transformers
460+
trace-attributes==7.1.0
461+
# via langtrace-python-sdk
462+
transformers==4.47.1
463+
# via langtrace-python-sdk
423464
types-requests==2.32.0.20241016
424465
# via cohere
425466
typing-extensions==4.12.2
426467
# via
427-
# anyio
428468
# cohere
429469
# huggingface-hub
430470
# langchain-core
@@ -439,18 +479,22 @@ typing-inspect==0.9.0
439479
# via dataclasses-json
440480
tzdata==2024.2
441481
# via pandas
482+
ujson==5.10.0
483+
# via langtrace-python-sdk
442484
urllib3==2.2.3
443485
# via
444486
# botocore
445487
# elastic-transport
446488
# requests
489+
# sentry-sdk
447490
# types-requests
448491
werkzeug==3.1.3
449492
# via flask
450493
wrapt==1.17.0
451494
# via
452495
# deprecated
453496
# opentelemetry-instrumentation
497+
# opentelemetry-instrumentation-sqlalchemy
454498
yarl==1.18.3
455499
# via aiohttp
456500
zipp==3.21.0
@@ -478,3 +522,4 @@ opentelemetry-instrumentation-system-metrics==0.50b0
478522
opentelemetry-instrumentation-tortoiseorm==0.50b0
479523
opentelemetry-instrumentation-urllib3==0.50b0
480524
elastic-opentelemetry-instrumentation-openai==0.6.0
525+
setuptools

0 commit comments

Comments
 (0)