From 54e02e4392f1c1ec1c1fe4a117338cf71d30c07f Mon Sep 17 00:00:00 2001 From: Yun Kim <35776586+Yun-Kim@users.noreply.github.com> Date: Thu, 20 Jul 2023 09:44:58 -0400 Subject: [PATCH] Add datadog-langchain integration doc (#7955) ## Description Added a doc about the [Datadog APM integration for LangChain](https://github.com/DataDog/dd-trace-py/pull/6137). Note that the integration is on `ddtrace`'s end and so no code is introduced/required by this integration into the langchain library. For that reason I've refrained from adding an example notebook (although I've added setup instructions for enabling the integration in the doc) as no code is technically required to enable the integration. Tagging @baskaryan as reviewer on this PR, thank you very much! ## Dependencies Datadog APM users will need to have `ddtrace` installed, but the integration is on `ddtrace` end and so does not introduce any external dependencies to the LangChain project. Co-authored-by: Bagatur --- .../extras/ecosystem/integrations/datadog.mdx | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 docs/extras/ecosystem/integrations/datadog.mdx diff --git a/docs/extras/ecosystem/integrations/datadog.mdx b/docs/extras/ecosystem/integrations/datadog.mdx new file mode 100644 index 00000000000..59bd069c5f9 --- /dev/null +++ b/docs/extras/ecosystem/integrations/datadog.mdx @@ -0,0 +1,88 @@ +# Datadog Tracing + +>[ddtrace](https://github.com/DataDog/dd-trace-py) is a Datadog application performance monitoring (APM) library which provides an integration to monitor your LangChain application. + +Key features of the ddtrace integration for LangChain: +- Traces: Capture LangChain requests, parameters, prompt-completions, and help visualize LangChain operations. +- Metrics: Capture LangChain request latency, errors, and token/cost usage (for OpenAI LLMs and Chat Models). +- Logs: Store prompt completion data for each LangChain operation. +- Dashboard: Combine metrics, logs, and trace data into a single plane to monitor LangChain requests. +- Monitors: Provide alerts in response to spikes in LangChain request latency or error rate. + +Note: The ddtrace LangChain integration currently provides tracing for LLMs, Chat Models, Text Embedding Models, Chains, and Vectorstores. + +## Installation and Setup + +1. Enable APM and StatsD in your Datadog Agent, along with a Datadog API key. For example, in Docker: + +``` +docker run -d --cgroupns host \ + --pid host \ + -v /var/run/docker.sock:/var/run/docker.sock:ro \ + -v /proc/:/host/proc/:ro \ + -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ + -e DD_API_KEY= \ + -p 127.0.0.1:8126:8126/tcp \ + -p 127.0.0.1:8125:8125/udp \ + -e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true \ + -e DD_APM_ENABLED=true \ + gcr.io/datadoghq/agent:latest +``` + +2. Install the Datadog APM Python library. + +``` +pip install ddtrace>=1.17 +``` + + +3. The LangChain integration can be enabled automatically when you prefix your LangChain Python application command with `ddtrace-run`: + +``` +DD_SERVICE="my-service" DD_ENV="staging" DD_API_KEY= ddtrace-run python .py +``` + +**Note**: If the Agent is using a non-default hostname or port, be sure to also set `DD_AGENT_HOST`, `DD_TRACE_AGENT_PORT`, or `DD_DOGSTATSD_PORT`. + +Additionally, the LangChain integration can be enabled programmatically by adding `patch_all()` or `patch(langchain=True)` before the first import of `langchain` in your application. + +Note that using `ddtrace-run` or `patch_all()` will also enable the `requests` and `aiohttp` integrations which trace HTTP requests to LLM providers, as well as the `openai` integration which traces requests to the OpenAI library. + +```python +from ddtrace import config, patch + +# Note: be sure to configure the integration before calling ``patch()``! +# eg. config.langchain["logs_enabled"] = True + +patch(langchain=True) + +# to trace synchronous HTTP requests +# patch(langchain=True, requests=True) + +# to trace asynchronous HTTP requests (to the OpenAI library) +# patch(langchain=True, aiohttp=True) + +# to include underlying OpenAI spans from the OpenAI integration +# patch(langchain=True, openai=True)patch_all +``` + +See the [APM Python library documentation][https://ddtrace.readthedocs.io/en/stable/installation_quickstart.html] for more advanced usage. + + +## Configuration + +See the [APM Python library documentation][https://ddtrace.readthedocs.io/en/stable/integrations.html#langchain] for all the available configuration options. + + +### Log Prompt & Completion Sampling + +To enable log prompt and completion sampling, set the `DD_LANGCHAIN_LOGS_ENABLED=1` environment variable. By default, 10% of traced requests will emit logs containing the prompts and completions. + +To adjust the log sample rate, see the [APM library documentation][https://ddtrace.readthedocs.io/en/stable/integrations.html#langchain]. + +**Note**: Logs submission requires `DD_API_KEY` to be specified when running `ddtrace-run`. + + +## Troubleshooting + +Need help? Create an issue on [ddtrace](https://github.com/DataDog/dd-trace-py) or contact [Datadog support][https://docs.datadoghq.com/help/].