作用
让Agent开发更顺手的工具集合
- 连接外部数据库
- 记东西
- 用工具
- 复杂任务拆解
安装
https://docs.langchain.com/oss/python/integrations/providers/overview
# 主要依赖
uv add langchain
# 对应的模型依赖
uv add langchain-openai
uv add langchain-deepseek
uv add langchain-ollama
基础代码
import os
from langchain.chat_models import init_chat_model
# 方式1:直接设置 Key(测试用)
os.environ["DEEPSEEK_API_KEY"] = "sk-xxx"
# 方式2:使用 .env 文件(推荐,需先安装 python-dotenv)
# from dotenv import load_dotenv
# load_dotenv() # 自动读取 .env 文件中的 DEEPSEEK_API_KEY
# 初始化模型
model = init_chat_model(
model="deepseek-chat", # 使用的模型名称
model_provider="deepseek", # 指定提供商为 deepseek
temperature=0.7 # 可选:控制随机性
)
# 调用模型
response = model.invoke("你好,请介绍一下你自己")
print(response.content)
或ollama
from langchain.chat_models import init_chat_model
model = init_chat_model(
model="qwen3.5:4b", # 你的 Ollama 模型名
model_provider="ollama", # 指定提供商为 ollama
temperature=0.7 # temperature 参数同样适用
)
# 调用模型,这部分代码完全不用变
response = model.invoke("你好,请介绍一下你自己")
print(response.content)
流式调用
from langchain.chat_models import init_chat_model
model = init_chat_model(
model="qwen3.5:4b",
model_provider="ollama",
temperature=0.7
)
# 使用 stream() 方法进行流式输出
for chunk in model.stream("你好,请介绍一下你自己"):
print(chunk.content, end="", flush=True) # end="" 避免换行,flush=True 实时输出
思考内容
from langchain.chat_models import init_chat_model
model = init_chat_model(
model="qwen3.5:4b",
model_provider="ollama",
temperature=0.7,
reasoning=True # 🔑 关键参数:开启思考模式
)
# 流式输出时,思考内容会被分离到 additional_kwargs 中
for chunk in model.stream("请问 1+1=?中文交流"):
# 打印思考内容(如果存在)
reasoning = chunk.additional_kwargs.get("reasoning_content")
if reasoning:
print(f"{reasoning}", end="", flush=True)
# 打印正式回答
if chunk.content:
print(chunk.content, end="", flush=True)
智能体
# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
agent = create_agent(init_chat_model(
model="qwen3.5:4b",
model_provider="ollama",
temperature=0.7,
))
response = agent.invoke({
"messages": [
{
"role": "user",
"content": "你好呀"
}
]
})
print(response)
或流式
# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
agent = create_agent(init_chat_model(
model="qwen3.5:4b",
model_provider="ollama",
temperature=0.7,
))
messages = agent.stream(
{
"messages": [
{
"role": "user",
"content": "你好呀"
}
],
},
stream_mode="messages"
)
"""
模式 正确写法 用途
LLM Tokens "messages" 逐 token 流式输出,实现打字机效果
Agent Progress "updates" 监控每个 agent step 后的状态更新
Values "values" 获取每个 step 后的完整状态
Custom "custom" 自定义事件
"""
for token, metadata in messages:
if token.content:
print(token.content, end="", flush=True)
消息类型
# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage, ToolMessage
agent = create_agent(init_chat_model(
model="qwen3.5:4b",
model_provider="ollama",
temperature=0.7,
))
response = agent.invoke(
{
"messages": [
SystemMessage(content="请使用中文交流"),
HumanMessage(content="你好呀")
],
}
)
for message in response['messages']:
message.pretty_print()
多模态
# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage, ToolMessage
import base64
# 图片转base64
def encode_image(image_path):
with open(image_path, 'rb') as image_file:
bin_content = image_file.read()
return base64.b64encode(bin_content).decode("utf-8")
agent = create_agent(init_chat_model(
model="qwen3.5:4b",
model_provider="ollama",
temperature=0.7,
))
response = agent.invoke(
{
"messages": [
SystemMessage(content="请使用中文交流"),
HumanMessage(content=[
{
"type": "image",
"base64": encode_image("22.png"),
"mime_type": "image/png",
},
{
"type": "text",
"text": "图片中有什么?"
}
])
],
}
)
for message in response['messages']:
message.pretty_print()
系统提示词
因为是固定的,每次对话都有,使用在创建智能体的时候加入才合适
# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage, ToolMessage
agent = create_agent(
init_chat_model(
model="qwen3.5:4b",
model_provider="ollama",
temperature=0.7,
),
system_prompt="请使用中文交流"
)
response = agent.invoke(
{
"messages": [
HumanMessage(content="你好呀")
],
}
)
for message in response['messages']:
message.pretty_print()
结构化输出
# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage, ToolMessage
from pydantic import BaseModel
class DemoTemp(BaseModel):
name: str
age: int
agent = create_agent(
init_chat_model(
model="qwen3.5:4b",
model_provider="ollama",
temperature=0.7,
),
system_prompt="请使用中文交流",
response_format=DemoTemp # 指定
)
response = agent.invoke(
{
"messages": [
HumanMessage(content="给我3个人")
],
}
)
for message in response['messages']:
message.pretty_print()
工具调用
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage, ToolMessage
from langchain_core.tools import tool
@tool
def get_weather():
"""获取当前的天气情况"""
return "贵阳今日温度28摄氏度"
agent = create_agent(
init_chat_model(
model="qwen3.5:4b",
model_provider="ollama",
temperature=0.7,
),
tools=[get_weather]
)
response = agent.invoke(
{
"messages": [
HumanMessage(content="今天天气如何?")
],
}
)
for message in response['messages']:
message.pretty_print()