langchain initialize_agent流式输出示例
时间: 2025-07-04 14:20:49 浏览: 9
在使用 LangChain 的 `initialize_agent` 时,如果你希望实现**流式输出(streaming output)**,你可以通过设置 `agent_kwargs` 中的 `streaming=True` 并配合支持流式响应的语言模型(如 OpenAI 的 `openai.ChatOpenAI`)来实现。这种方式通常用于 Web 应用中逐步返回结果给前端。
下面是一个完整的示例代码,展示如何使用 `initialize_agent` 实现流式输出:
```python
from langchain.agents import initialize_agent, AgentType
from langchain.chat_models import ChatOpenAI
from langchain.tools import Tool
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
# 示例工具:一个简单的加法函数
def add_tool(input_str: str) -> int:
a, b = map(int, input_str.split(","))
return a + b
tools = [
Tool(name="AddTool", func=add_tool, description="Useful for adding two numbers. Input should be two integers separated by comma.")
]
# 初始化语言模型,并启用流式输出回调
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0, streaming=True, callbacks=[StreamingStdOutCallbackHandler()])
# 初始化代理
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
handle_parsing_errors=True
)
# 运行代理查询(这将流式输出到控制台)
agent.run("What is the sum of 5 and 7?")
```
### 解释:
1. **`ChatOpenAI`**:使用的是支持流式输出的聊天模型。
2. **`streaming=True`**:开启流式输出功能。
3. **`callbacks=[StreamingStdOutCallbackHandler()]`**:指定回调处理器,用于将流式内容输出到终端。
4. **`initialize_agent`**:初始化代理时传入启用了流式的 LLM。
5. **`agent.run()`**:运行查询后,你会看到输出是一字一句地“流”出来的,而不是一次性输出全部内容。
---
### 注意事项:
- 如果你是构建 Web API(如 FastAPI 或 Flask),你需要将回调处理器自定义为向客户端发送 SSE(Server-Sent Events)或 WebSocket 消息。
- 不是所有模型都支持流式输出,请确保你使用的模型支持该特性。
---
阅读全文
相关推荐









