123 lines
4.0 KiB
Plaintext
123 lines
4.0 KiB
Plaintext
---
|
|
title: LangChain
|
|
description: "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
|
|
pip install agentops langchain langchain-community langchain-openai python-dotenv
|
|
```
|
|
```bash poetry
|
|
poetry add agentops langchain langchain-community langchain-openai python-dotenv
|
|
```
|
|
```bash uv
|
|
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
|
|
export OPENAI_API_KEY="your_openai_api_key_here"
|
|
export AGENTOPS_API_KEY="your_agentops_api_key_here"
|
|
```
|
|
```txt Set in .env file
|
|
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
|
|
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
|
|
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>
|
|
<script type="module" src="/scripts/scroll-img-fadein-animation.js"></script>
|
|
<script type="module" src="/scripts/button_heartbeat_animation.js"></script>
|
|
<script type="css" src="/styles/styles.css"></script>
|
|
<script type="module" src="/scripts/adjust_api_dynamically.js"></script>
|