From c73ef1c712b9da30aec70d93e5ffbce97a3f5e3f Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Tue, 27 May 2025 10:47:39 +0800 Subject: [PATCH 1/3] chatbot-rag-app: updates to latest openai and uses uv to compile deps Signed-off-by: Adrian Cole --- docker/docker-compose-elastic.yml | 8 +- example-apps/chatbot-rag-app/Dockerfile | 4 +- example-apps/chatbot-rag-app/README.md | 29 +-- .../chatbot-rag-app/docker-compose.yml | 19 ++ example-apps/chatbot-rag-app/requirements.txt | 193 ++++++++++-------- k8s/k8s-manifest-elastic.yml | 8 +- 6 files changed, 141 insertions(+), 120 deletions(-) diff --git a/docker/docker-compose-elastic.yml b/docker/docker-compose-elastic.yml index 5d2339925..87f1ab878 100644 --- a/docker/docker-compose-elastic.yml +++ b/docker/docker-compose-elastic.yml @@ -62,7 +62,7 @@ configs: services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:9.0.0 + image: docker.elastic.co/elasticsearch/elasticsearch:9.0.1 container_name: elasticsearch ports: - 9200:9200 @@ -98,7 +98,7 @@ services: depends_on: elasticsearch: condition: service_healthy - image: docker.elastic.co/elasticsearch/elasticsearch:9.0.0 + image: docker.elastic.co/elasticsearch/elasticsearch:9.0.1 container_name: elasticsearch_settings restart: 'no' # gen-ai assistants in kibana save state in a way that requires system @@ -113,7 +113,7 @@ services: ' kibana: - image: docker.elastic.co/kibana/kibana:9.0.0 + image: docker.elastic.co/kibana/kibana:9.0.1 container_name: kibana depends_on: elasticsearch_settings: @@ -137,7 +137,7 @@ services: interval: 1s otel-collector: - image: docker.elastic.co/elastic-agent/elastic-otel-collector:9.0.0 + image: docker.elastic.co/elastic-agent/elastic-otel-collector:9.0.1 container_name: otel-collector depends_on: elasticsearch: diff --git a/example-apps/chatbot-rag-app/Dockerfile b/example-apps/chatbot-rag-app/Dockerfile index 90295d765..d8029da29 100644 --- a/example-apps/chatbot-rag-app/Dockerfile +++ b/example-apps/chatbot-rag-app/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22-alpine AS build-step +FROM node:24-alpine AS build-step WORKDIR /app ENV PATH=/node_modules/.bin:$PATH COPY frontend ./frontend @@ -6,7 +6,7 @@ RUN cd frontend && yarn install RUN cd frontend && REACT_APP_API_HOST=/api yarn build # Use glibc-based image to get pre-compiled wheels for grpcio and tiktoken -FROM python:3.12-slim +FROM python:3.13-slim WORKDIR /app RUN mkdir -p ./frontend/build diff --git a/example-apps/chatbot-rag-app/README.md b/example-apps/chatbot-rag-app/README.md index 1e3512f59..51e11c656 100644 --- a/example-apps/chatbot-rag-app/README.md +++ b/example-apps/chatbot-rag-app/README.md @@ -159,21 +159,18 @@ nvm use --lts #### Configure your Python environment Before we can run the app, we need a working Python environment with the -correct packages installed: +correct packages installed. This uses [uv][uv] for efficiency. ```bash -python3 -m venv .venv -source .venv/bin/activate -# Install dotenv which is a portable way to load environment variables. -pip install "python-dotenv[cli]" -pip install -r requirements.txt +uv venv --python 3.13 +uv pip install -r requirements.txt ``` #### Create your Elasticsearch index First, ingest the data into elasticsearch: ```bash -dotenv run -- flask create-index +uv run -q --env-file .env flask create-index ``` *Note*: This may take several minutes to complete @@ -182,7 +179,7 @@ dotenv run -- flask create-index Now, run the app, which listens on http://localhost:4000 ```bash -dotenv run -- python api/app.py +uv run -q --env-file .env python api/app.py ``` ## Advanced @@ -219,20 +216,7 @@ To update package versions, recreate [requirements.txt](requirements.txt) and reinstall like this. Once checked in, any commands above will use updates. ```bash -rm -rf .venv requirements.txt -python3 -m venv .venv -source .venv/bin/activate -pip install --upgrade pip -# Install dev requirements for pip-compile and edot-bootstrap -pip install pip-tools elastic-opentelemetry -# Recreate requirements.txt -pip-compile -# Install main dependencies -pip install -r requirements.txt -# Add opentelemetry instrumentation for these dependencies -edot-bootstrap >> requirements.txt -# Install opentelemetry dependencies -pip install -r requirements.txt +docker compose run --rm recreate-requirements ``` ### Elasticsearch index and chat_history index @@ -265,3 +249,4 @@ docker compose up --build --force-recreate [docker-compose]: ../../docker/docker-compose-elastic.yml [edot-python]: https://github.com/elastic/elastic-otel-python [k8s-manifest-elastic]: ../../k8s/k8s-manifest-elastic.yml +[uv]: https://docs.astral.sh/uv/getting-started/installation/ \ No newline at end of file diff --git a/example-apps/chatbot-rag-app/docker-compose.yml b/example-apps/chatbot-rag-app/docker-compose.yml index 5a9e781dc..b6927af10 100644 --- a/example-apps/chatbot-rag-app/docker-compose.yml +++ b/example-apps/chatbot-rag-app/docker-compose.yml @@ -33,3 +33,22 @@ services: - "4000:4000" extra_hosts: # send localhost traffic to the docker host, e.g. your laptop - "localhost:host-gateway" + + recreate-requirements: + image: python:3.13-slim + volumes: + - .:/app + working_dir: /app + profiles: + - util # don't start this as a service + command: > # use `uv` as `pip compile` hangs due to large requirements + bash -c " + rm -f requirements.txt && + pip install uv && + uv venv /tmp/.venv && + source /tmp/.venv/bin/activate && + uv pip install elastic-opentelemetry && + uv pip compile requirements.in -o requirements.txt && + uv pip sync requirements.txt && + edot-bootstrap >> requirements.txt + " diff --git a/example-apps/chatbot-rag-app/requirements.txt b/example-apps/chatbot-rag-app/requirements.txt index 4acb569e4..20daf7f89 100644 --- a/example-apps/chatbot-rag-app/requirements.txt +++ b/example-apps/chatbot-rag-app/requirements.txt @@ -1,12 +1,8 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile -# +# This file was autogenerated by uv via the following command: +# uv pip compile requirements.in -o requirements.txt aiohappyeyeballs==2.6.1 # via aiohttp -aiohttp==3.11.18 +aiohttp==3.12.2 # via langchain-community aiosignal==1.3.2 # via aiohttp @@ -14,6 +10,7 @@ annotated-types==0.7.0 # via pydantic anyio==4.9.0 # via + # google-genai # httpx # openai attrs==25.3.0 @@ -24,22 +21,24 @@ boto3==1.38.0 # via # langchain-aws # langtrace-python-sdk -botocore==1.38.0 +botocore==1.38.23 # via # boto3 # s3transfer +bottleneck==1.5.0 + # via langchain-google-vertexai cachetools==5.5.2 # via google-auth -certifi==2025.1.31 +certifi==2025.4.26 # via # elastic-transport # httpcore # httpx # requests # sentry-sdk -charset-normalizer==3.4.1 +charset-normalizer==3.4.2 # via requests -click==8.1.8 +click==8.2.1 # via flask cohere==5.15.0 # via langchain-cohere @@ -60,42 +59,42 @@ distro==1.9.0 # via openai docstring-parser==0.16 # via google-cloud-aiplatform -elastic-opentelemetry==1.0.0 +elastic-opentelemetry==1.2.0 # via -r requirements.in elastic-transport==8.17.1 # via elasticsearch -elasticsearch[vectorstore-mmr]==8.18.0 +elasticsearch==8.18.1 # via # -r requirements.in # langchain-elasticsearch -fastavro==1.10.0 +fastavro==1.11.1 # via cohere filelock==3.18.0 # via # huggingface-hub # transformers -flask==3.1.0 +flask==3.1.1 # via # -r requirements.in # flask-cors -flask-cors==5.0.1 +flask-cors==6.0.0 # via -r requirements.in frozenlist==1.6.0 # via # aiohttp # aiosignal -fsspec==2025.3.2 +fsspec==2025.5.1 # via # huggingface-hub # langtrace-python-sdk -google-api-core[grpc]==2.24.2 +google-api-core==2.24.2 # via # google-cloud-aiplatform # google-cloud-bigquery # google-cloud-core # google-cloud-resource-manager # google-cloud-storage -google-auth==2.39.0 +google-auth==2.40.2 # via # google-api-core # google-cloud-aiplatform @@ -103,9 +102,10 @@ google-auth==2.39.0 # google-cloud-core # google-cloud-resource-manager # google-cloud-storage -google-cloud-aiplatform==1.90.0 + # google-genai +google-cloud-aiplatform==1.94.0 # via langchain-google-vertexai -google-cloud-bigquery==3.31.0 +google-cloud-bigquery==3.33.0 # via google-cloud-aiplatform google-cloud-core==2.4.3 # via @@ -121,20 +121,24 @@ google-crc32c==1.7.1 # via # google-cloud-storage # google-resumable-media +google-genai==1.16.1 + # via google-cloud-aiplatform google-resumable-media==2.7.2 # via # google-cloud-bigquery # google-cloud-storage -googleapis-common-protos[grpc]==1.70.0 +googleapis-common-protos==1.70.0 # via # google-api-core # grpc-google-iam-v1 # grpcio-status # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http +greenlet==3.2.2 + # via sqlalchemy grpc-google-iam-v1==0.14.2 # via google-cloud-resource-manager -grpcio==1.72.0rc1 +grpcio==1.71.0 # via # google-api-core # googleapis-common-protos @@ -143,15 +147,18 @@ grpcio==1.72.0rc1 # opentelemetry-exporter-otlp-proto-grpc grpcio-status==1.71.0 # via google-api-core -h11==0.14.0 +h11==0.16.0 # via httpcore halo==0.0.31 # via -r requirements.in -httpcore==1.0.8 +hf-xet==1.1.2 + # via huggingface-hub +httpcore==1.0.9 # via httpx httpx==0.28.1 # via # cohere + # google-genai # langchain-google-vertexai # langchain-mistralai # langsmith @@ -162,7 +169,7 @@ httpx-sse==0.4.0 # langchain-community # langchain-google-vertexai # langchain-mistralai -huggingface-hub==0.30.2 +huggingface-hub==0.32.1 # via # tokenizers # transformers @@ -178,7 +185,7 @@ itsdangerous==2.2.0 # via flask jinja2==3.1.6 # via flask -jiter==0.9.0 +jiter==0.10.0 # via openai jmespath==1.0.1 # via @@ -188,17 +195,17 @@ jsonpatch==1.33 # via langchain-core jsonpointer==3.0.0 # via jsonpatch -langchain==0.3.24 +langchain==0.3.25 # via # -r requirements.in # langchain-community -langchain-aws==0.2.21 +langchain-aws==0.2.23 # via -r requirements.in langchain-cohere==0.4.4 # via -r requirements.in -langchain-community==0.3.22 +langchain-community==0.3.24 # via langchain-cohere -langchain-core==0.3.55 +langchain-core==0.3.61 # via # langchain # langchain-aws @@ -211,45 +218,50 @@ langchain-core==0.3.55 # langchain-text-splitters langchain-elasticsearch==0.3.2 # via -r requirements.in -langchain-google-vertexai==2.0.20 +langchain-google-vertexai==2.0.24 # via -r requirements.in langchain-mistralai==0.2.10 # via -r requirements.in -langchain-openai==0.3.14 +langchain-openai==0.3.18 # via -r requirements.in langchain-text-splitters==0.3.8 # via langchain -langsmith==0.3.33 +langsmith==0.3.42 # via # langchain # langchain-community # langchain-core -langtrace-python-sdk==3.8.15 +langtrace-python-sdk==3.8.18 # via -r requirements.in log-symbols==0.0.14 # via halo markupsafe==3.0.2 # via + # flask # jinja2 # werkzeug marshmallow==3.26.1 # via dataclasses-json -multidict==6.4.3 +multidict==6.4.4 # via # aiohttp # yarl mypy-extensions==1.1.0 # via typing-inspect -numpy==2.2.5 +numexpr==2.10.2 + # via langchain-google-vertexai +numpy==2.2.6 # via + # bottleneck # elasticsearch # langchain-aws # langchain-community + # numexpr # shapely # transformers -openai==1.75.0 +openai==1.82.0 # via langchain-openai -opentelemetry-api==1.31.1 +opentelemetry-api==1.33.1 # via # elastic-opentelemetry # langtrace-python-sdk @@ -261,31 +273,31 @@ opentelemetry-api==1.31.1 # opentelemetry-resourcedetector-gcp # opentelemetry-sdk # opentelemetry-semantic-conventions -opentelemetry-exporter-otlp==1.31.1 +opentelemetry-exporter-otlp==1.33.1 # via elastic-opentelemetry -opentelemetry-exporter-otlp-proto-common==1.31.1 +opentelemetry-exporter-otlp-proto-common==1.33.1 # via # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-exporter-otlp-proto-grpc==1.31.1 +opentelemetry-exporter-otlp-proto-grpc==1.33.1 # via # langtrace-python-sdk # opentelemetry-exporter-otlp -opentelemetry-exporter-otlp-proto-http==1.31.1 +opentelemetry-exporter-otlp-proto-http==1.33.1 # via # langtrace-python-sdk # opentelemetry-exporter-otlp -opentelemetry-instrumentation==0.52b1 +opentelemetry-instrumentation==0.54b1 # via # elastic-opentelemetry # langtrace-python-sdk # opentelemetry-instrumentation-sqlalchemy # opentelemetry-instrumentation-system-metrics -opentelemetry-instrumentation-sqlalchemy==0.52b1 +opentelemetry-instrumentation-sqlalchemy==0.54b1 # via langtrace-python-sdk -opentelemetry-instrumentation-system-metrics==0.52b1 +opentelemetry-instrumentation-system-metrics==0.54b1 # via elastic-opentelemetry -opentelemetry-proto==1.31.1 +opentelemetry-proto==1.33.1 # via # opentelemetry-exporter-otlp-proto-common # opentelemetry-exporter-otlp-proto-grpc @@ -294,7 +306,7 @@ opentelemetry-resource-detector-azure==0.1.5 # via elastic-opentelemetry opentelemetry-resourcedetector-gcp==1.8.0a0 # via elastic-opentelemetry -opentelemetry-sdk==1.31.1 +opentelemetry-sdk==1.33.1 # via # elastic-opentelemetry # langtrace-python-sdk @@ -305,13 +317,13 @@ opentelemetry-sdk==1.31.1 # opentelemetry-sdk-extension-aws opentelemetry-sdk-extension-aws==2.1.0 # via elastic-opentelemetry -opentelemetry-semantic-conventions==0.52b1 +opentelemetry-semantic-conventions==0.54b1 # via # elastic-opentelemetry # opentelemetry-instrumentation # opentelemetry-instrumentation-sqlalchemy # opentelemetry-sdk -orjson==3.10.16 +orjson==3.10.18 # via langsmith packaging==24.2 # via @@ -346,16 +358,19 @@ protobuf==5.29.4 # proto-plus psutil==7.0.0 # via opentelemetry-instrumentation-system-metrics +pyarrow==19.0.1 + # via langchain-google-vertexai pyasn1==0.6.1 # via # pyasn1-modules # rsa pyasn1-modules==0.4.2 # via google-auth -pydantic==2.11.3 +pydantic==2.11.5 # via # cohere # google-cloud-aiplatform + # google-genai # langchain # langchain-aws # langchain-cohere @@ -366,7 +381,7 @@ pydantic==2.11.3 # openai # pydantic-settings # trace-attributes -pydantic-core==2.33.1 +pydantic-core==2.33.2 # via # cohere # pydantic @@ -396,6 +411,7 @@ requests==2.32.3 # google-api-core # google-cloud-bigquery # google-cloud-storage + # google-genai # huggingface-hub # langchain # langchain-community @@ -413,9 +429,11 @@ s3transfer==0.12.0 # via boto3 safetensors==0.5.3 # via transformers -sentry-sdk==2.26.1 +sentry-sdk==2.29.1 + # via langtrace-python-sdk +setuptools==80.9.0 # via langtrace-python-sdk -shapely==2.1.0 +shapely==2.1.1 # via google-cloud-aiplatform simsimd==6.2.1 # via elasticsearch @@ -429,7 +447,7 @@ sniffio==1.3.1 # openai spinners==0.0.24 # via halo -sqlalchemy==2.0.40 +sqlalchemy==2.0.41 # via # langchain # langchain-community @@ -438,7 +456,7 @@ tenacity==9.1.2 # via # langchain-community # langchain-core -termcolor==3.0.1 +termcolor==3.1.0 # via halo tiktoken==0.9.0 # via @@ -457,18 +475,18 @@ tqdm==4.67.1 # transformers trace-attributes==7.2.1 # via langtrace-python-sdk -transformers==4.51.3 +transformers==4.52.3 # via langtrace-python-sdk -types-pyyaml==6.0.12.20250402 +types-pyyaml==6.0.12.20250516 # via langchain-cohere -types-requests==2.32.0.20250328 +types-requests==2.32.0.20250515 # via cohere typing-extensions==4.13.2 # via - # anyio # cohere # elasticsearch # google-cloud-aiplatform + # google-genai # huggingface-hub # langchain-core # openai @@ -481,7 +499,7 @@ typing-extensions==4.13.2 # typing-inspection typing-inspect==0.9.0 # via dataclasses-json -typing-inspection==0.4.0 +typing-inspection==0.4.1 # via # pydantic # pydantic-settings @@ -494,8 +512,10 @@ urllib3==2.4.0 # requests # sentry-sdk # types-requests -validators==0.34.0 +validators==0.35.0 # via langchain-google-vertexai +websockets==15.0.1 + # via google-genai werkzeug==3.1.3 # via # flask @@ -507,34 +527,31 @@ wrapt==1.17.2 # opentelemetry-instrumentation-sqlalchemy yarl==1.20.0 # via aiohttp -zipp==3.21.0 +zipp==3.22.0 # via importlib-metadata zstandard==0.23.0 # via langsmith - -# The following packages are considered to be unsafe in a requirements file: -# setuptools -opentelemetry-instrumentation-asyncio==0.52b1 -opentelemetry-instrumentation-dbapi==0.52b1 -opentelemetry-instrumentation-logging==0.52b1 -opentelemetry-instrumentation-sqlite3==0.52b1 -opentelemetry-instrumentation-threading==0.52b1 -opentelemetry-instrumentation-urllib==0.52b1 -opentelemetry-instrumentation-wsgi==0.52b1 +opentelemetry-instrumentation-asyncio==0.54b1 +opentelemetry-instrumentation-dbapi==0.54b1 +opentelemetry-instrumentation-logging==0.54b1 +opentelemetry-instrumentation-sqlite3==0.54b1 +opentelemetry-instrumentation-threading==0.54b1 +opentelemetry-instrumentation-urllib==0.54b1 +opentelemetry-instrumentation-wsgi==0.54b1 opentelemetry-instrumentation-vertexai>=2.0b0 -opentelemetry-instrumentation-aiohttp-client==0.52b1 -opentelemetry-instrumentation-aiohttp-server==0.52b1 -opentelemetry-instrumentation-boto3sqs==0.52b1 -opentelemetry-instrumentation-botocore==0.52b1 -opentelemetry-instrumentation-click==0.52b1 -opentelemetry-instrumentation-elasticsearch==0.52b1 -opentelemetry-instrumentation-flask==0.52b1 -opentelemetry-instrumentation-grpc==0.52b1 -opentelemetry-instrumentation-httpx==0.52b1 -opentelemetry-instrumentation-jinja2==0.52b1 -opentelemetry-instrumentation-requests==0.52b1 -opentelemetry-instrumentation-sqlalchemy==0.52b1 -opentelemetry-instrumentation-system-metrics==0.52b1 -opentelemetry-instrumentation-tortoiseorm==0.52b1 -opentelemetry-instrumentation-urllib3==0.52b1 +opentelemetry-instrumentation-aiohttp-client==0.54b1 +opentelemetry-instrumentation-aiohttp-server==0.54b1 +opentelemetry-instrumentation-boto3sqs==0.54b1 +opentelemetry-instrumentation-botocore==0.54b1 +opentelemetry-instrumentation-click==0.54b1 +opentelemetry-instrumentation-elasticsearch==0.54b1 +opentelemetry-instrumentation-flask==0.54b1 +opentelemetry-instrumentation-grpc==0.54b1 +opentelemetry-instrumentation-httpx==0.54b1 +opentelemetry-instrumentation-jinja2==0.54b1 +opentelemetry-instrumentation-requests==0.54b1 +opentelemetry-instrumentation-sqlalchemy==0.54b1 +opentelemetry-instrumentation-system-metrics==0.54b1 +opentelemetry-instrumentation-tortoiseorm==0.54b1 +opentelemetry-instrumentation-urllib3==0.54b1 elastic-opentelemetry-instrumentation-openai diff --git a/k8s/k8s-manifest-elastic.yml b/k8s/k8s-manifest-elastic.yml index 061e555b5..6eeddefe7 100644 --- a/k8s/k8s-manifest-elastic.yml +++ b/k8s/k8s-manifest-elastic.yml @@ -37,7 +37,7 @@ spec: spec: containers: - name: elasticsearch - image: docker.elastic.co/elasticsearch/elasticsearch:9.0.0 + image: docker.elastic.co/elasticsearch/elasticsearch:9.0.1 ports: - containerPort: 9200 env: @@ -107,7 +107,7 @@ spec: # gen-ai assistants in kibana save state in a way that requires system # access, so set kibana_system's password to a known value. - name: setup-kibana-system-user - image: docker.elastic.co/elasticsearch/elasticsearch:9.0.0 + image: docker.elastic.co/elasticsearch/elasticsearch:9.0.1 command: - bash - -c @@ -119,7 +119,7 @@ spec: -H "Content-Type: application/json" | grep -q "^{}"; do sleep 5; done; containers: - name: kibana - image: docker.elastic.co/kibana/kibana:9.0.0 + image: docker.elastic.co/kibana/kibana:9.0.1 ports: - containerPort: 5601 env: @@ -237,7 +237,7 @@ spec: spec: containers: - name: otel-collector - image: docker.elastic.co/elastic-agent/elastic-otel-collector:9.0.0 + image: docker.elastic.co/elastic-agent/elastic-otel-collector:9.0.1 command: ["/usr/bin/tini", "--"] args: ["/usr/local/bin/docker-entrypoint", "--config=/usr/share/elastic-agent/config.yaml"] volumeMounts: From 75e9bd112c39fa468966be44b9e5066727056173 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Tue, 27 May 2025 13:56:49 +0800 Subject: [PATCH 2/3] fix pinning Signed-off-by: Adrian Cole --- .../chatbot-rag-app/docker-compose.yml | 20 ++- example-apps/chatbot-rag-app/requirements.txt | 169 +++++++++++++++--- 2 files changed, 155 insertions(+), 34 deletions(-) diff --git a/example-apps/chatbot-rag-app/docker-compose.yml b/example-apps/chatbot-rag-app/docker-compose.yml index b6927af10..b3f0f7e7a 100644 --- a/example-apps/chatbot-rag-app/docker-compose.yml +++ b/example-apps/chatbot-rag-app/docker-compose.yml @@ -37,18 +37,22 @@ services: recreate-requirements: image: python:3.13-slim volumes: - - .:/app - working_dir: /app + - .:/src + working_dir: /build profiles: - util # don't start this as a service - command: > # use `uv` as `pip compile` hangs due to large requirements + command: > bash -c " - rm -f requirements.txt && pip install uv && - uv venv /tmp/.venv && - source /tmp/.venv/bin/activate && - uv pip install elastic-opentelemetry && + uv venv && + cp /src/requirements.in . && + # First, install the application requirements into the venv uv pip compile requirements.in -o requirements.txt && uv pip sync requirements.txt && - edot-bootstrap >> requirements.txt + # Next, detect and add instrumentation requirements + uv pip install elastic-opentelemetry && + uv run edot-bootstrap >> requirements.in && + # Finally, recreate a new pinned requirements.txt + uv pip compile requirements.in -o requirements.txt + cp requirements.txt /src/requirements.txt " diff --git a/example-apps/chatbot-rag-app/requirements.txt b/example-apps/chatbot-rag-app/requirements.txt index 20daf7f89..c482775a8 100644 --- a/example-apps/chatbot-rag-app/requirements.txt +++ b/example-apps/chatbot-rag-app/requirements.txt @@ -61,6 +61,8 @@ docstring-parser==0.16 # via google-cloud-aiplatform elastic-opentelemetry==1.2.0 # via -r requirements.in +elastic-opentelemetry-instrumentation-openai==1.1.1 + # via -r requirements.in elastic-transport==8.17.1 # via elasticsearch elasticsearch==8.18.1 @@ -264,12 +266,35 @@ openai==1.82.0 opentelemetry-api==1.33.1 # via # elastic-opentelemetry + # elastic-opentelemetry-instrumentation-openai # langtrace-python-sdk # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http # opentelemetry-instrumentation + # opentelemetry-instrumentation-aiohttp-client + # opentelemetry-instrumentation-aiohttp-server + # opentelemetry-instrumentation-asyncio + # opentelemetry-instrumentation-boto3sqs + # opentelemetry-instrumentation-botocore + # opentelemetry-instrumentation-click + # opentelemetry-instrumentation-dbapi + # opentelemetry-instrumentation-elasticsearch + # opentelemetry-instrumentation-flask + # opentelemetry-instrumentation-grpc + # opentelemetry-instrumentation-httpx + # opentelemetry-instrumentation-jinja2 + # opentelemetry-instrumentation-logging + # opentelemetry-instrumentation-requests # opentelemetry-instrumentation-sqlalchemy + # opentelemetry-instrumentation-sqlite3 # opentelemetry-instrumentation-system-metrics + # opentelemetry-instrumentation-threading + # opentelemetry-instrumentation-tortoiseorm + # opentelemetry-instrumentation-urllib + # opentelemetry-instrumentation-urllib3 + # opentelemetry-instrumentation-vertexai + # opentelemetry-instrumentation-wsgi + # opentelemetry-propagator-aws-xray # opentelemetry-resourcedetector-gcp # opentelemetry-sdk # opentelemetry-semantic-conventions @@ -290,13 +315,87 @@ opentelemetry-exporter-otlp-proto-http==1.33.1 opentelemetry-instrumentation==0.54b1 # via # elastic-opentelemetry + # elastic-opentelemetry-instrumentation-openai # langtrace-python-sdk + # opentelemetry-instrumentation-aiohttp-client + # opentelemetry-instrumentation-aiohttp-server + # opentelemetry-instrumentation-asyncio + # opentelemetry-instrumentation-boto3sqs + # opentelemetry-instrumentation-botocore + # opentelemetry-instrumentation-click + # opentelemetry-instrumentation-dbapi + # opentelemetry-instrumentation-elasticsearch + # opentelemetry-instrumentation-flask + # opentelemetry-instrumentation-grpc + # opentelemetry-instrumentation-httpx + # opentelemetry-instrumentation-jinja2 + # opentelemetry-instrumentation-logging + # opentelemetry-instrumentation-requests # opentelemetry-instrumentation-sqlalchemy + # opentelemetry-instrumentation-sqlite3 # opentelemetry-instrumentation-system-metrics + # opentelemetry-instrumentation-threading + # opentelemetry-instrumentation-tortoiseorm + # opentelemetry-instrumentation-urllib + # opentelemetry-instrumentation-urllib3 + # opentelemetry-instrumentation-vertexai + # opentelemetry-instrumentation-wsgi +opentelemetry-instrumentation-aiohttp-client==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-aiohttp-server==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-asyncio==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-boto3sqs==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-botocore==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-click==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-dbapi==0.54b1 + # via + # -r requirements.in + # opentelemetry-instrumentation-sqlite3 +opentelemetry-instrumentation-elasticsearch==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-flask==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-grpc==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-httpx==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-jinja2==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-logging==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-requests==0.54b1 + # via -r requirements.in opentelemetry-instrumentation-sqlalchemy==0.54b1 - # via langtrace-python-sdk + # via + # -r requirements.in + # langtrace-python-sdk +opentelemetry-instrumentation-sqlite3==0.54b1 + # via -r requirements.in opentelemetry-instrumentation-system-metrics==0.54b1 - # via elastic-opentelemetry + # via + # -r requirements.in + # elastic-opentelemetry +opentelemetry-instrumentation-threading==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-tortoiseorm==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-urllib==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-urllib3==0.54b1 + # via -r requirements.in +opentelemetry-instrumentation-vertexai==2.0b0 + # via -r requirements.in +opentelemetry-instrumentation-wsgi==0.54b1 + # via + # -r requirements.in + # opentelemetry-instrumentation-flask +opentelemetry-propagator-aws-xray==1.0.2 + # via opentelemetry-instrumentation-botocore opentelemetry-proto==1.33.1 # via # opentelemetry-exporter-otlp-proto-common @@ -320,9 +419,37 @@ opentelemetry-sdk-extension-aws==2.1.0 opentelemetry-semantic-conventions==0.54b1 # via # elastic-opentelemetry + # elastic-opentelemetry-instrumentation-openai # opentelemetry-instrumentation + # opentelemetry-instrumentation-aiohttp-client + # opentelemetry-instrumentation-aiohttp-server + # opentelemetry-instrumentation-asyncio + # opentelemetry-instrumentation-boto3sqs + # opentelemetry-instrumentation-botocore + # opentelemetry-instrumentation-click + # opentelemetry-instrumentation-dbapi + # opentelemetry-instrumentation-elasticsearch + # opentelemetry-instrumentation-flask + # opentelemetry-instrumentation-grpc + # opentelemetry-instrumentation-httpx + # opentelemetry-instrumentation-requests # opentelemetry-instrumentation-sqlalchemy + # opentelemetry-instrumentation-tortoiseorm + # opentelemetry-instrumentation-urllib + # opentelemetry-instrumentation-urllib3 + # opentelemetry-instrumentation-vertexai + # opentelemetry-instrumentation-wsgi # opentelemetry-sdk +opentelemetry-util-http==0.54b1 + # via + # opentelemetry-instrumentation-aiohttp-client + # opentelemetry-instrumentation-aiohttp-server + # opentelemetry-instrumentation-flask + # opentelemetry-instrumentation-httpx + # opentelemetry-instrumentation-requests + # opentelemetry-instrumentation-urllib + # opentelemetry-instrumentation-urllib3 + # opentelemetry-instrumentation-wsgi orjson==3.10.18 # via langsmith packaging==24.2 @@ -335,6 +462,7 @@ packaging==24.2 # langsmith # marshmallow # opentelemetry-instrumentation + # opentelemetry-instrumentation-flask # opentelemetry-instrumentation-sqlalchemy # transformers propcache==0.3.1 @@ -523,35 +651,24 @@ werkzeug==3.1.3 wrapt==1.17.2 # via # deprecated + # elastic-opentelemetry-instrumentation-openai # opentelemetry-instrumentation + # opentelemetry-instrumentation-aiohttp-client + # opentelemetry-instrumentation-aiohttp-server + # opentelemetry-instrumentation-asyncio + # opentelemetry-instrumentation-boto3sqs + # opentelemetry-instrumentation-click + # opentelemetry-instrumentation-dbapi + # opentelemetry-instrumentation-elasticsearch + # opentelemetry-instrumentation-grpc + # opentelemetry-instrumentation-httpx + # opentelemetry-instrumentation-jinja2 # opentelemetry-instrumentation-sqlalchemy + # opentelemetry-instrumentation-threading + # opentelemetry-instrumentation-urllib3 yarl==1.20.0 # via aiohttp zipp==3.22.0 # via importlib-metadata zstandard==0.23.0 # via langsmith -opentelemetry-instrumentation-asyncio==0.54b1 -opentelemetry-instrumentation-dbapi==0.54b1 -opentelemetry-instrumentation-logging==0.54b1 -opentelemetry-instrumentation-sqlite3==0.54b1 -opentelemetry-instrumentation-threading==0.54b1 -opentelemetry-instrumentation-urllib==0.54b1 -opentelemetry-instrumentation-wsgi==0.54b1 -opentelemetry-instrumentation-vertexai>=2.0b0 -opentelemetry-instrumentation-aiohttp-client==0.54b1 -opentelemetry-instrumentation-aiohttp-server==0.54b1 -opentelemetry-instrumentation-boto3sqs==0.54b1 -opentelemetry-instrumentation-botocore==0.54b1 -opentelemetry-instrumentation-click==0.54b1 -opentelemetry-instrumentation-elasticsearch==0.54b1 -opentelemetry-instrumentation-flask==0.54b1 -opentelemetry-instrumentation-grpc==0.54b1 -opentelemetry-instrumentation-httpx==0.54b1 -opentelemetry-instrumentation-jinja2==0.54b1 -opentelemetry-instrumentation-requests==0.54b1 -opentelemetry-instrumentation-sqlalchemy==0.54b1 -opentelemetry-instrumentation-system-metrics==0.54b1 -opentelemetry-instrumentation-tortoiseorm==0.54b1 -opentelemetry-instrumentation-urllib3==0.54b1 -elastic-opentelemetry-instrumentation-openai From fbeffef8c23fd75bc9667bd00754dcfd27b75bdc Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Wed, 28 May 2025 12:50:07 +0800 Subject: [PATCH 3/3] feedback Signed-off-by: Adrian Cole --- example-apps/chatbot-rag-app/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example-apps/chatbot-rag-app/README.md b/example-apps/chatbot-rag-app/README.md index 51e11c656..de092abaf 100644 --- a/example-apps/chatbot-rag-app/README.md +++ b/example-apps/chatbot-rag-app/README.md @@ -193,7 +193,7 @@ This happens automatically, when using docker. If running with python directly, prefix `python` with `opentelemetry-instrument` to enable OpenTelemetry. ```bash -dotenv run -- opentelemetry-instrument python api/app.py +uv run -q --env-file .env opentelemetry-instrument python api/app.py ``` [env.example](env.example) defaults to use an OpenTelemetry Collector,