diff --git a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/Dockerfile.tl b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/Dockerfile similarity index 87% rename from instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/Dockerfile.tl rename to instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/Dockerfile index 0f2e7c4..a77757e 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/Dockerfile.tl +++ b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/Dockerfile @@ -11,13 +11,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* # Copy required packages (build context is repo root) -COPY util/opentelemetry-util-genai-traceloop-translator /app/opentelemetry-util-genai-traceloop-translator +# COPY util/opentelemetry-util-genai-traceloop-translator /app/opentelemetry-util-genai-traceloop-translator COPY instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner /app/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner WORKDIR /app/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop # Install Python dependencies (excluding local -e packages and git+ssh dependencies) -RUN pip install --no-cache-dir -r requirements.traceloop.txt +RUN pip install --no-cache-dir -r requirements.txt # Verify packages are installed correctly RUN python3 -c "from opentelemetry.util.genai.handler import get_telemetry_handler; print('✓ GenAI handler available')" && \ @@ -28,7 +28,7 @@ RUN python3 -c "from opentelemetry.util.genai.handler import get_telemetry_handl python3 -c "from opentelemetry.util.genai.traceloop import enable_traceloop_translator; print('✓ Traceloop translator available')" # Make the script executable -RUN chmod +x main_traceloop.py +RUN chmod +x main.py # Set default environment variables ENV OTEL_PYTHON_LOG_CORRELATION=true \ @@ -37,4 +37,4 @@ ENV OTEL_PYTHON_LOG_CORRELATION=true \ PYTHONUNBUFFERED=1 # Run the Traceloop version -CMD ["python3", "main_traceloop.py"] \ No newline at end of file +CMD ["python3", "main.py"] \ No newline at end of file diff --git a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/Dockerfile.lc b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/Dockerfile.lc deleted file mode 100644 index 5f14b1c..0000000 --- a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/Dockerfile.lc +++ /dev/null @@ -1,69 +0,0 @@ -# Use Python 3.12 as base image -FROM python:3.12-slim - -# Set working directory -WORKDIR /app - -# Install system dependencies -RUN apt-get update && apt-get install -y --no-install-recommends \ - git \ - && rm -rf /var/lib/apt/lists/* - -# Copy the entire instrumentation-genai and util directories to maintain package paths -# Build context is at repo root to access both instrumentation-genai/ and util/ -COPY instrumentation-genai/opentelemetry-instrumentation-langchain /app/opentelemetry-instrumentation-langchain -COPY util/opentelemetry-util-genai /app/opentelemetry-util-genai -COPY util/opentelemetry-util-genai-traceloop-translator /app/opentelemetry-util-genai-traceloop-translator -COPY util/opentelemetry-util-genai-evals /app/opentelemetry-util-genai-evals -COPY util/opentelemetry-util-genai-evals-deepeval /app/opentelemetry-util-genai-evals-deepeval -COPY util/opentelemetry-util-genai-emitters-splunk /app/opentelemetry-util-genai-emitters-splunk - -# Set working directory to the traceloop example -WORKDIR /app/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop - -# Install Python dependencies from requirements.traceloop.txt (excluding local -e packages and git+ssh) -# First, create a temporary requirements file without the local editable packages and SSH git dependencies -RUN grep -v "^-e" requirements.traceloop.txt | grep -v "git+ssh" > /tmp/requirements_external.txt && \ - pip install --no-cache-dir -r /tmp/requirements_external.txt && \ - rm /tmp/requirements_external.txt - -# Install the local packages in editable mode -# The Traceloop translator will enable zero-code instrumentation via .pth file -# splunk-otel-instrumentation-langchain IS installed -RUN cd /app/opentelemetry-util-genai && \ - pip install --no-cache-dir --no-deps -e . && \ - cd /app/opentelemetry-util-genai-evals && \ - pip install --no-cache-dir --no-deps -e . && \ - cd /app/opentelemetry-util-genai-evals-deepeval && \ - pip install --no-cache-dir --no-deps -e . && \ - cd /app/opentelemetry-util-genai-emitters-splunk && \ - pip install --no-cache-dir --no-deps -e . && \ - cd /app/opentelemetry-instrumentation-langchain && \ - pip install --no-cache-dir --no-deps -e . && \ - cd /app/opentelemetry-util-genai-traceloop-translator && \ - pip install --no-cache-dir --no-deps -e . - -# Verify packages are installed correctly -RUN python3 -c "from opentelemetry.util.genai.handler import get_telemetry_handler; print('✓ GenAI handler available')" && \ - python3 -c "from opentelemetry.util.genai.evals import create_evaluation_manager; print('✓ Evaluation manager available')" && \ - python3 -c "import opentelemetry.util.genai.emitters.splunk; print('✓ Splunk emitters available')" && \ - python3 -c "import opentelemetry.util.evaluator.deepeval; print('✓ Deepeval evaluator module available')" && \ - python3 -c "import deepeval; print('✓ Deepeval SDK installed')" && \ - python3 -c "from opentelemetry.util.genai.traceloop import enable_traceloop_translator; print('✓ Traceloop translator available')" - -# Make the script executable -RUN chmod +x main_traceloop.py - -# Set default environment variables for OpenTelemetry -ENV OTEL_PYTHON_LOG_CORRELATION=true \ - OTEL_PYTHON_LOG_LEVEL=info \ - OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ - PYTHONUNBUFFERED=1 - -# Health check (optional) -HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ - CMD python3 -c "import sys; sys.exit(0)" - -# Run the Traceloop version -CMD ["python3", "main_traceloop.py"] - diff --git a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/README.md b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/README.md new file mode 100644 index 0000000..38b2899 --- /dev/null +++ b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/README.md @@ -0,0 +1,138 @@ +# Multi-Agent Travel Planner (Traceloop translator + OpenTelemetry) + +This example shows a small team of LangChain agents connected by a LangGraph state machine to produce a week-long city break itinerary (flights, hotel, activities, synthesis). It demonstrates GenAI observability (traces, metrics, logs, evaluation metrics) using the Traceloop SDK. + +Also, for [more info](https://help.splunk.com/en/splunk-observability-cloud/observability-for-ai/instrument-an-ai-application/collect-data-from-traceloop-instrumented-ai-applications) + +## 1. Architecture Overview + +Agents (ReAct-style): + +1. `coordinator` – Interprets traveller request and outlines a plan. +2. `flight_specialist` – Suggests flight option (tool: `mock_search_flights`). +3. `hotel_specialist` – Recommends hotel (tool: `mock_search_hotels`). +4. `activity_specialist` – Curates activities (tool: `mock_search_activities`). +5. `plan_synthesizer` – Produces final structured itinerary. + +Note: for LangGraph nodes to be recognized as `AgentInvocation` by the instrumentation, it has to have the following configuration + +- `agent_name` metadata in the LangGraph config, i.e. + +```python +_create_react_agent(llm, tools=[]).with_config( + { + "metadata": { + "agent_name": "coordinator", + }, + } +``` + +- `agent` tags in the config, i.e + +```python +_create_react_agent(llm, tools=[]).with_config( + { + "tags": ["agent:coordinator"], + } +``` + +See more example in `main.py` example. + +LangGraph `StateGraph` drives transitions; `should_continue` moves through sequence until `END`. State (`PlannerState`) accumulates messages, per-agent summaries, poison events, and the final itinerary. + +```text +[User Request] --> Pre-Parse (origin/dest/dates) --> START + | + v + LangGraph Workflow + +-------------+----------+-------------+---------------+ + | | | | | + [Coordinator] -> [Flight] -> [Hotel] -> [Activities] -> [Synthesizer] -> END + | | | | | + +-------------+----------+-------------+---------------+ +``` + +## 2. Prompt Poisoning (Quality Noise) + +To exercise evaluation dimensions, the app can inject mild quality-degrading snippets into agent prompts (hallucination, bias, irrelevance, negative sentiment, toxicity). Controlled by env vars: + +| Variable | Default | Purpose | +|----------|---------|---------| +| `TRAVEL_POISON_PROB` | `0.8` | Probability a step is poisoned | +| `TRAVEL_POISON_TYPES` | `hallucination,bias,irrelevance,negative_sentiment,toxicity` | Allowed poison types | +| `TRAVEL_POISON_MAX` | `2` | Max snippets injected per step | +| `TRAVEL_POISON_SEED` | (unset) | Deterministic seed | + +Injected kinds recorded in `state['poison_events']` and can surface evaluation metrics (bias, relevance, hallucination, sentiment, toxicity). Snippets are intentionally mild and safe. + +## 3. Local Setup + +```bash +cd instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop +python3 -m venv .venv +source .venv/bin/activate +pip install -r requirements.txt +``` + +modify `.env`, change there or export your `OPENAI_API_KEY`. Run the app + +Evaluation metrics appear on `model/LLM` spans allowing correlation with injected poison events. These synthetic spans are added in `on_end()` lifecycle of the span using the `TelemetryHandelr` in `splunk-otel-util-genai-translator-traceloop` + +## 4. Docker Usage + +The `Dockerfile` installs dependencies and sets `CMD ["python3", "main.py"]`. + +Build image: + +```bash +docker build -t travel-planner-tl:latest . +``` + +Run manual mode: + +```bash +docker run --rm -e OPENAI_API_KEY=$OPENAI_API_KEY \ + -e OTEL_EXPORTER_OTLP_ENDPOINT=http://host.docker.internal:4317 \ + travel-planner-tl:latest python main.py +``` + +## 7. Kubernetes Deployment + +Example `cronjob.yaml` runs this demo as a cron job workload + +## 8. Core Environment Variables + +| Variable | Purpose | +|----------|---------| +| `OPENAI_API_KEY` | Authenticates ChatOpenAI | +| `OPENAI_MODEL` | Chooses model (default fallback in code) | +| `OTEL_EXPORTER_OTLP_ENDPOINT` | Collector endpoint (gRPC) | +| `OTEL_EXPORTER_OTLP_PROTOCOL` | Usually `grpc` | +| `OTEL_SERVICE_NAME` | Service identity | +| `OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT` | Capture prompt & output content | +| `TRAVEL_POISON_*` | Controls prompt noise injection | + +## 9. Observing Evaluation Metrics + +Metrics & logs exported (names may include operation suffixes): + +- `gen_ai.evaluation.hallucination` +- `gen_ai.evaluation.bias` +- `gen_ai.evaluation.relevance` +- `gen_ai.evaluation.sentiment` +- `gen_ai.evaluation.toxicity` + +Higher scores often correlate with injected poison snippets. + +## 10. Key Files + +| File | Purpose | +|------|---------| +| `main.py` | Workflow, poisoning, optional manual instrumentation setup | +| `Dockerfile` | Container build (editable installs + example requirements) | +| `cronjob.yaml` | Example CronJob manifest (modify for two flavors) | +| `requirements.txt` | Python dependencies for the sample | + +## 11. Disclaimer + +Poison snippets are intentionally mild, non-harmful, and used solely to trigger evaluation telemetry for demonstration. Not production travel advice. diff --git a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/cronjob-tl-lc.yaml b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/cronjob-tl-lc.yaml deleted file mode 100644 index 02b1067..0000000 --- a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/cronjob-tl-lc.yaml +++ /dev/null @@ -1,151 +0,0 @@ -apiVersion: batch/v1 -kind: CronJob -metadata: - name: trip-planner-tl - namespace: o11y-4-ai-admehra - labels: - app: trip-planner-tl - component: telemetry - annotations: - description: "Multi-agent trip planner with Traceloop translator and GenAI evaluations. splunk-otel-instrumentation-langchain is installed" - git-commit: "1b4045e" -spec: - # Run every 30 minutes from 8 AM to 5 PM PST on weekdays (Monday-Friday) - # Offset from travel-planner-tl by 45 minutes (runs at :15 and :45) - schedule: "15,45 8-17 * * 1-5" - timeZone: "America/Los_Angeles" - suspend: false - - # Keep last 3 successful and 1 failed job for debugging - successfulJobsHistoryLimit: 3 - failedJobsHistoryLimit: 1 - - jobTemplate: - metadata: - labels: - app: trip-planner-tl - component: telemetry - spec: - template: - metadata: - labels: - app: trip-planner-tl - component: telemetry - spec: - restartPolicy: OnFailure - - containers: - - name: trip-planner-traceloop - # Multi-platform image (amd64, arm64) with git commit hash tag - image: admehra621/trip-planner-tl-lc:1b4045e - imagePullPolicy: Always - - env: - # === GenAI Semantic Conventions (REQUIRED) === - - name: OTEL_SEMCONV_STABILITY_OPT_IN - value: "gen_ai_latest_experimental" - - # === OpenTelemetry Resource Attributes === - - name: OTEL_RESOURCE_ATTRIBUTES - value: "deployment.environment=o11y-inframon-ai,git.commit.id=1b4045e" - - # === Service name for telemetry === - - name: OTEL_SERVICE_NAME - value: "trip-planner-tl" - - # === OpenAI Configuration === - - name: OPENAI_API_KEY - valueFrom: - secretKeyRef: - name: openai-credentials - key: api-key - - - name: OPENAI_MODEL - value: "gpt-4o-mini" - - # === Deepeval Telemetry Opt-Out === - - name: DEEPEVAL_TELEMETRY_OPT_OUT - value: "1" - - # === GenAI Content Capture === - - name: OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT - value: "true" - - - name: OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT_MODE - value: "SPAN_AND_EVENT" - - # === GenAI Emitters Configuration === - - name: OTEL_INSTRUMENTATION_GENAI_EMITTERS - value: "span_metric_event,splunk" - - - name: OTEL_INSTRUMENTATION_GENAI_EMITTERS_EVALUATION - value: "replace-category:SplunkEvaluationResults" - - # === Evaluation Settings === - # All 5 default evaluations enabled (bias, toxicity, relevance, hallucination, sentiment) - - name: OTEL_INSTRUMENTATION_GENAI_EVALS_RESULTS_AGGREGATION - value: "true" - - # === GenAI Debug Flags (disabled for production) === - # - name: OTEL_GENAI_EVAL_DEBUG_SKIPS - # value: "true" - # - name: OTEL_GENAI_EVAL_DEBUG_EACH - # value: "true" - # - name: OTEL_INSTRUMENTATION_GENAI_DEBUG - # value: "true" - - # === OpenTelemetry Logs Exporter === - - name: OTEL_LOGS_EXPORTER - value: "otlp" - - # === Get the host IP for Splunk OTEL agent === - - name: SPLUNK_OTEL_AGENT - valueFrom: - fieldRef: - fieldPath: status.hostIP - - # === OpenTelemetry OTLP endpoint using Splunk agent === - - name: OTEL_EXPORTER_OTLP_ENDPOINT - value: "http://$(SPLUNK_OTEL_AGENT):4317" - - # === OTLP Protocol (grpc) === - - name: OTEL_EXPORTER_OTLP_PROTOCOL - value: "grpc" - - # === Exclude health check URLs === - - name: OTEL_PYTHON_EXCLUDED_URLS - value: "^(https?://)?[^/]+(/)?$" - - # === Enable Python logging auto instrumentation === - - name: OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED - value: "true" - - # === Enable log correlation === - - name: OTEL_PYTHON_LOG_CORRELATION - value: "true" - - # === Enable LangChain content capture === - - name: OTEL_INSTRUMENTATION_LANGCHAIN_CAPTURE_MESSAGE_CONTENT - value: "true" - - # === Enable Splunk profiler === - - name: SPLUNK_PROFILER_ENABLED - value: "true" - - # === Unbuffered Python output === - - name: PYTHONUNBUFFERED - value: "1" - - # === GenAI evaluation sampling rate === - - name: OTEL_GENAI_EVALUATION_SAMPLING_RATE - value: "1" - - # === Resource limits === - resources: - requests: - memory: "512Mi" - cpu: "500m" - limits: - memory: "1Gi" - cpu: "1000m" - diff --git a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/cronjob-tl.yaml b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/cronjob.yaml similarity index 98% rename from instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/cronjob-tl.yaml rename to instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/cronjob.yaml index e1e3c16..fdcf79a 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/cronjob-tl.yaml +++ b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/cronjob.yaml @@ -8,7 +8,7 @@ metadata: component: telemetry annotations: description: "Multi-agent travel planner with Traceloop translator and GenAI evaluations. splunk-otel-instrumentation-langchain is NOT installed" - git-commit: "adc36a2" + git-commit: "8108b9f" spec: # Run every 30 minutes from 8 AM to 5 PM PST on weekdays (Monday-Friday) schedule: "*/30 8-17 * * 1-5" @@ -36,7 +36,7 @@ spec: containers: - name: travel-planner-traceloop # Multi-platform image (amd64, arm64) with git commit hash tag - image: admehra621/travel-planner-tl:adc36a2 + image: admehra621/travel-planner-tl:8108b9f imagePullPolicy: Always env: @@ -46,7 +46,7 @@ spec: # === OpenTelemetry Resource Attributes === - name: OTEL_RESOURCE_ATTRIBUTES - value: "deployment.environment=o11y-inframon-ai,git.commit.id=adc36a2" + value: "deployment.environment=o11y-inframon-ai,git.commit.id=8108b9f" # === Service name for telemetry === - name: OTEL_SERVICE_NAME diff --git a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/main_traceloop.py b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/main.py similarity index 97% rename from instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/main_traceloop.py rename to instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/main.py index e838132..8e3684b 100755 --- a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/main_traceloop.py +++ b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/main.py @@ -127,8 +127,13 @@ def _configure_otlp_logging() -> None: This is needed for evaluation results to be emitted as OTLP log records. Traceloop SDK handles traces, but we need to explicitly configure logs. + + CRITICAL: Also configures EventLoggerProvider to use the same LoggerProvider, + since Events are just LogRecords and need the same exporter. """ from opentelemetry._logs import get_logger_provider + from opentelemetry import _events + from opentelemetry.sdk._events import EventLoggerProvider # Check if already configured try: @@ -161,6 +166,13 @@ def _configure_otlp_logging() -> None: set_logger_provider(logger_provider) print(f"[INIT] OTLP logging configured, endpoint={log_endpoint}") + # CRITICAL FIX: Configure EventLoggerProvider to use the same LoggerProvider + # Events are just LogRecords under the hood, so they need to go through the + # same LoggerProvider with the OTLP exporter. Without this, events go to + # a default/NoOp provider and never reach the collector! + _events.set_event_logger_provider(EventLoggerProvider(logger_provider)) + print("[INIT] EventLoggerProvider configured (uses same OTLP exporter)") + # Configure logging for evaluation results _configure_otlp_logging() diff --git a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/requirements.old.txt b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/requirements.old.txt deleted file mode 100644 index c8c2080..0000000 --- a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/requirements.old.txt +++ /dev/null @@ -1,84 +0,0 @@ -opentelemetry-util-http==0.59b0 -orjson==3.11.4 -ormsgpack==1.11.0 -packaging==25.0 -platformdirs==4.5.0 -pluggy==1.6.0 -portalocker==3.2.0 -posthog==3.25.0 -pre-commit==3.7.0 -propcache==0.4.1 -protobuf==6.33.0 -pyasn1==0.6.1 -pyasn1_modules==0.4.2 -pydantic==2.12.3 -pydantic-settings==2.11.0 -pydantic_core==2.41.4 -pyfiglet==1.0.4 -Pygments==2.19.2 -pylint==3.0.2 -pyright==1.1.404 -pytest==8.4.2 -pytest-asyncio==1.2.0 -pytest-cov==4.1.0 -pytest-repeat==0.9.4 -pytest-rerunfailures==12.0 -pytest-xdist==3.8.0 -python-dateutil==2.9.0.post0 -python-dotenv==1.2.1 -PyYAML==6.0.3 -readme-renderer==42.0 -regex==2025.10.23 -requests==2.32.5 -requests-toolbelt==1.0.0 -rich==14.2.0 -rsa==4.9.1 -ruamel.yaml==0.17.21 -ruff==0.6.9 -sentry-sdk==2.43.0 -setuptools==80.9.0 -shellingham==1.5.4 -six==1.17.0 -sniffio==1.3.1 -snowballstemmer==3.0.1 -Sphinx==7.1.2 -sphinx-autodoc-typehints==1.25.2 -sphinx-rtd-theme==2.0.0rc4 -sphinxcontrib-applehelp==2.0.0 -sphinxcontrib-devhelp==2.0.0 -sphinxcontrib-htmlhelp==2.1.0 -sphinxcontrib-jquery==4.1 -sphinxcontrib-jsmath==1.0.1 -sphinxcontrib-qthelp==2.0.0 -sphinxcontrib-serializinghtml==2.0.0 -# Editable install with no version control (splunk-otel-genai-emitters-splunk==0.1b0.dev0) --e /app/opentelemetry-util-genai-emitters-splunk -# Editable install with no version control (splunk-otel-genai-evals-deepeval==0.1b0.dev0) --e /app/opentelemetry-util-genai-evals-deepeval -# Editable install with no version control (splunk-otel-util-genai==0.1b0.dev0) --e /app/opentelemetry-util-genai -# Editable install with no version control (splunk-otel-util-genai-evals==0.1b0.dev0) --e /app/opentelemetry-util-genai-evals -# Editable install with no version control (splunk-otel-util-genai-translator-traceloop==0.0.0.dev0) --e /app/opentelemetry-util-genai-traceloop-translator -tabulate==0.9.0 -tenacity==9.1.2 -tiktoken==0.12.0 -tokenizers==0.22.1 -tomlkit==0.13.3 -tqdm==4.67.1 -traceloop-sdk==0.47.5 -typer==0.20.0 -typer-slim==0.20.0 -typing-inspection==0.4.2 -typing_extensions==4.15.0 -urllib3==2.5.0 -virtualenv==20.35.4 -webencodings==0.5.1 -websockets==15.0.1 -wheel==0.45.1 -wrapt==1.17.3 -xxhash==3.6.0 -yarl==1.22.0 -zipp==3.23.0 -zstandard==0.25.0 \ No newline at end of file diff --git a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/requirements.traceloop.txt b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/requirements.traceloop.txt deleted file mode 100644 index 1e0ca0d..0000000 --- a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/requirements.traceloop.txt +++ /dev/null @@ -1,200 +0,0 @@ -aiohappyeyeballs==2.6.1 -aiohttp==3.13.2 -aiosignal==1.4.0 -alabaster==0.7.16 -annotated-types==0.7.0 -anthropic==0.72.0 -anyio==4.11.0 -asgiref==3.10.0 -astroid==3.0.3 -attrs==25.4.0 -babel==2.17.0 -backoff==2.2.1 -bleach==4.1.0 -cachetools==6.2.1 -certifi==2025.10.5 -cfgv==3.4.0 -charset-normalizer==3.4.4 -click==8.2.1 -codespell==2.1.0 -colorama==0.4.6 -coverage==7.11.0 -cuid==0.4 -deepeval==3.3.9 -Deprecated==1.3.1 -dill==0.4.0 -distlib==0.4.0 -distro==1.9.0 -docstring_parser==0.17.0 -docutils==0.20.1 -execnet==2.1.1 -filelock==3.20.0 -flaky==3.8.1 -frozenlist==1.8.0 -fsspec==2025.10.0 -google-auth==2.42.1 -google-genai==1.47.0 -googleapis-common-protos==1.71.0 -grpcio==1.76.0 -h11==0.16.0 -hf-xet==1.2.0 -httpcore==1.0.9 -httpretty==1.1.4 -httpx==0.28.1 -huggingface-hub==1.0.1 -identify==2.6.15 -idna==3.11 -imagesize==1.4.1 -importlib_metadata==8.7.0 -inflection==0.5.1 -iniconfig==2.3.0 -isort==5.13.2 -Jinja2==3.1.6 -jiter==0.11.1 -jsonpatch==1.33 -jsonpointer==3.0.0 -langchain==1.0.3 -langchain-core==1.0.2 -langchain-openai==1.0.1 -langgraph==1.0.2 -langgraph-checkpoint==3.0.0 -langgraph-prebuilt==1.0.2 -langgraph-sdk==0.2.9 -langsmith==0.4.39 -markdown-it-py==4.0.0 -MarkupSafe==3.0.3 -mccabe==0.7.0 -mdurl==0.1.2 -monotonic==1.6 -multidict==6.7.0 -nest-asyncio==1.6.0 -nh3==0.3.2 -nodeenv==1.9.1 -ollama==0.6.0 -openai==2.6.1 -opentelemetry-api @ git+https://github.com/open-telemetry/opentelemetry-python.git@1f68134481c46e476a127b61a36dc69889275d15#subdirectory=opentelemetry-api -opentelemetry-exporter-otlp==1.38.0 -opentelemetry-exporter-otlp-proto-common @ git+https://github.com/open-telemetry/opentelemetry-python.git@1f68134481c46e476a127b61a36dc69889275d15#subdirectory=exporter/opentelemetry-exporter-otlp-proto-common -opentelemetry-exporter-otlp-proto-grpc @ git+https://github.com/open-telemetry/opentelemetry-python.git@1f68134481c46e476a127b61a36dc69889275d15#subdirectory=exporter/opentelemetry-exporter-otlp-proto-grpc -opentelemetry-exporter-otlp-proto-http==1.38.0 -opentelemetry-instrumentation @ git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@071f68697432e7e57b31238a5998dc4c1325855c#subdirectory=opentelemetry-instrumentation -# OpenTelemetry instrumentation packages - version must match traceloop-sdk version (0.47.5) -opentelemetry-instrumentation-alephalpha==0.47.5 -opentelemetry-instrumentation-anthropic==0.47.5 -opentelemetry-instrumentation-bedrock==0.47.5 -opentelemetry-instrumentation-chromadb==0.47.5 -opentelemetry-instrumentation-cohere==0.47.5 -opentelemetry-instrumentation-crewai==0.47.5 -opentelemetry-instrumentation-google-generativeai==0.47.5 -opentelemetry-instrumentation-groq==0.47.5 -opentelemetry-instrumentation-haystack==0.47.5 -opentelemetry-instrumentation-lancedb==0.47.5 -opentelemetry-instrumentation-llamaindex==0.47.5 -opentelemetry-instrumentation-logging==0.59b0 -opentelemetry-instrumentation-marqo==0.47.5 -opentelemetry-instrumentation-mcp==0.47.5 -opentelemetry-instrumentation-milvus==0.47.5 -opentelemetry-instrumentation-mistralai==0.47.5 -opentelemetry-instrumentation-ollama==0.47.5 -opentelemetry-instrumentation-openai==0.47.5 -opentelemetry-instrumentation-openai-agents==0.47.5 -opentelemetry-instrumentation-pinecone==0.47.5 -opentelemetry-instrumentation-qdrant==0.47.5 -opentelemetry-instrumentation-redis==0.59b0 -opentelemetry-instrumentation-replicate==0.47.5 -opentelemetry-instrumentation-requests==0.59b0 -opentelemetry-instrumentation-sagemaker==0.47.5 -opentelemetry-instrumentation-sqlalchemy==0.59b0 -opentelemetry-instrumentation-threading==0.59b0 -opentelemetry-instrumentation-together==0.47.5 -opentelemetry-instrumentation-transformers==0.47.5 -opentelemetry-instrumentation-urllib3==0.59b0 -opentelemetry-instrumentation-vertexai==0.47.5 -opentelemetry-instrumentation-watsonx==0.47.5 -opentelemetry-instrumentation-weaviate==0.47.5 -opentelemetry-instrumentation-writer==0.47.5 -opentelemetry-proto @ git+https://github.com/open-telemetry/opentelemetry-python.git@1f68134481c46e476a127b61a36dc69889275d15#subdirectory=opentelemetry-proto -opentelemetry-sdk @ git+https://github.com/open-telemetry/opentelemetry-python.git@1f68134481c46e476a127b61a36dc69889275d15#subdirectory=opentelemetry-sdk -opentelemetry-semantic-conventions @ git+https://github.com/open-telemetry/opentelemetry-python.git@1f68134481c46e476a127b61a36dc69889275d15#subdirectory=opentelemetry-semantic-conventions -opentelemetry-semantic-conventions-ai==0.4.13 -opentelemetry-test-utils @ git+https://github.com/open-telemetry/opentelemetry-python.git@1f68134481c46e476a127b61a36dc69889275d15#subdirectory=tests/opentelemetry-test-utils -opentelemetry-util-http==0.59b0 -orjson==3.11.4 -ormsgpack==1.11.0 -packaging==25.0 -platformdirs==4.5.0 -pluggy==1.6.0 -portalocker==3.2.0 -posthog==3.25.0 -pre-commit==3.7.0 -propcache==0.4.1 -protobuf==6.33.0 -pyasn1==0.6.1 -pyasn1_modules==0.4.2 -pydantic==2.12.3 -pydantic-settings==2.11.0 -pydantic_core==2.41.4 -pyfiglet==1.0.4 -Pygments==2.19.2 -pylint==3.0.2 -pyright==1.1.404 -pytest==8.4.2 -pytest-asyncio==1.2.0 -pytest-cov==4.1.0 -pytest-repeat==0.9.4 -pytest-rerunfailures==12.0 -pytest-xdist==3.8.0 -python-dateutil==2.9.0.post0 -python-dotenv==1.2.1 -PyYAML==6.0.3 -readme-renderer==42.0 -regex==2025.10.23 -requests==2.32.5 -requests-toolbelt==1.0.0 -rich==14.2.0 -rsa==4.9.1 -ruamel.yaml==0.17.21 -ruff==0.6.9 -sentry-sdk==2.43.0 -setuptools==80.9.0 -shellingham==1.5.4 -six==1.17.0 -sniffio==1.3.1 -snowballstemmer==3.0.1 -Sphinx==7.1.2 -sphinx-autodoc-typehints==1.25.2 -sphinx-rtd-theme==2.0.0rc4 -sphinxcontrib-applehelp==2.0.0 -sphinxcontrib-devhelp==2.0.0 -sphinxcontrib-htmlhelp==2.1.0 -sphinxcontrib-jquery==4.1 -sphinxcontrib-jsmath==1.0.1 -sphinxcontrib-qthelp==2.0.0 -sphinxcontrib-serializinghtml==2.0.0 -splunk-otel-genai-evals-deepeval>=0.1.6 -splunk-otel-util-genai -splunk-otel-util-genai-evals -splunk-otel-genai-emitters-splunk -# Editable install with no version control (splunk-otel-util-genai-translator-traceloop==0.0.0.dev0) --e /app/opentelemetry-util-genai-traceloop-translator -tabulate==0.9.0 -tenacity==9.1.2 -tiktoken==0.12.0 -tokenizers==0.22.1 -tomlkit==0.13.3 -tqdm==4.67.1 -traceloop-sdk==0.47.5 -typer==0.20.0 -typer-slim==0.20.0 -typing-inspection==0.4.2 -typing_extensions==4.15.0 -urllib3==2.5.0 -virtualenv==20.35.4 -webencodings==0.5.1 -websockets==15.0.1 -wheel==0.45.1 -wrapt==1.17.3 -xxhash==3.6.0 -yarl==1.22.0 -zipp==3.23.0 -zstandard==0.25.0 diff --git a/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/requirements.txt b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/requirements.txt new file mode 100644 index 0000000..c5e96e2 --- /dev/null +++ b/instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/traceloop/requirements.txt @@ -0,0 +1,13 @@ +langchain>=1.0.0 +langchain-openai>=1.0.0 +langgraph>=1.0.0 +python-dotenv>=1.0.0 +traceloop-sdk==0.47.5 +deepeval +splunk-otel-genai-evals-deepeval>=0.1.6 +splunk-otel-util-genai +splunk-otel-util-genai-evals +splunk-otel-genai-emitters-splunk +splunk-otel-util-genai-translator-traceloop +python-dotenv +openai