> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentops.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# LangChain

> Track your LangChain agents with AgentOps

[LangChain](https://python.langchain.com/docs/tutorials/) is a framework for developing applications powered by language models. AgentOps automatically tracks your LangChain agents by integrating its callback handler.

## Installation

Install AgentOps and the necessary LangChain dependencies:

<CodeGroup>
  ```bash pip theme={null}
  pip install agentops langchain langchain-community langchain-openai python-dotenv
  ```

  ```bash poetry theme={null}
  poetry add agentops langchain langchain-community langchain-openai python-dotenv
  ```

  ```bash uv theme={null}
  uv pip install agentops langchain langchain-community langchain-openai python-dotenv
  ```
</CodeGroup>

## Setting Up API Keys

You'll need API keys for AgentOps and OpenAI (as `ChatOpenAI` is commonly used with LangChain):

* **OPENAI\_API\_KEY**: From the [OpenAI Platform](https://platform.openai.com/api-keys)
* **AGENTOPS\_API\_KEY**: From your [AgentOps Dashboard](https://app.agentops.ai/)

Set these as environment variables or in a `.env` file.

<CodeGroup>
  ```bash Export to CLI theme={null}
  export OPENAI_API_KEY="your_openai_api_key_here"
  export AGENTOPS_API_KEY="your_agentops_api_key_here"
  ```

  ```txt Set in .env file theme={null}
  OPENAI_API_KEY="your_openai_api_key_here"
  AGENTOPS_API_KEY="your_agentops_api_key_here"
  ```
</CodeGroup>

Then load them in your Python code:

```python theme={null}
from dotenv import load_dotenv
import os

load_dotenv()

AGENTOPS_API_KEY = os.getenv("AGENTOPS_API_KEY")
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
```

## Usage

Integrating AgentOps with LangChain involves using the `LangchainCallbackHandler`.

<Tip>
  You don't need a separate `agentops.init()` call; the `LangchainCallbackHandler` initializes the AgentOps client automatically if an API key is provided to it or found in the environment.
</Tip>

Here's a basic example:

```python theme={null}
from langchain_community.chat_models import ChatOpenAI
from langchain.agents import initialize_agent, AgentType, Tool # Corrected Tool import
from langchain.tools import DuckDuckGoSearchRun # Example tool
from agentops.integration.callbacks.langchain import LangchainCallbackHandler


# 1. Initialize LangchainCallbackHandler
# AGENTOPS_API_KEY can be passed here or loaded from environment
handler = LangchainCallbackHandler(api_key=AGENTOPS_API_KEY, tags=['LangChain Example'])

# 2. Define tools for the agent
search_tool = DuckDuckGoSearchRun()
tools = [
    Tool( # Wrap DuckDuckGoSearchRun in a Tool object
        name="DuckDuckGo Search",
        func=search_tool.run,
        description="Useful for when you need to answer questions about current events or the current state of the world."
    )
]

# 3. Configure LLM with the AgentOps handler
# OPENAI_API_KEY can be passed here or loaded from environment
llm = ChatOpenAI(openai_api_key=OPENAI_API_KEY,
                 callbacks=[handler],
                 model='gpt-3.5-turbo',
                 temperature=0) # Added temperature for reproducibility

# 4. Initialize your agent, passing the handler to callbacks
agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True,
    callbacks=[handler], 
    handle_parsing_errors=True
)

# 5. Run your agent
try:
    response = agent.run("Who is the current CEO of OpenAI and what is his most recent public statement?")
    print(response)
except Exception as e:
    print(f"An error occurred: {e}")
```

Visit the [AgentOps Dashboard](https://app.agentops.ai/) to see your session.

## Examples

<CardGroup cols={1}>
  <Card title="LangChain Example" icon="notebook" href="/v2/examples/langchain">
    A detailed notebook demonstrating the LangChain callback handler integration.
  </Card>
</CardGroup>

<script type="module" src="/scripts/github_stars.js" />

<script type="module" src="/scripts/scroll-img-fadein-animation.js" />

<script type="module" src="/scripts/button_heartbeat_animation.js" />

<script type="css" src="/styles/styles.css" />

<script type="module" src="/scripts/adjust_api_dynamically.js" />
