🎯 课程主题
讲解 create_agent() 中 model 参数的两种传入方式:字符串和模型实例对象。
📝 核心知识点
1. create_agent 的核心参数
- 概念说明:
create_agent()有两个最重要的参数 ——model(模型,Agent的大脑)和tools(工具列表)。本节重点讲model。 - 关键细节:完整的参数列表可查阅官方文档,后续章节会逐步涉及其他参数(系统提示词、中间件等)。
2. 方式一:传入字符串
- 概念说明:直接传入
"供应商:模型名"格式的字符串,LangChain会自动解析并初始化对应的模型。 - 关键细节:
- 格式示例:
"deepseek:deepseek-chat"(供应商:模型名) - 本质是底层路由到对应的 ChatModel 类(如
ChatDeepSeek) - 必须调用
load_dotenv()加载环境变量(如DEEPSEEK_API_KEY),否则会报错
- 格式示例:
from dotenv import load_dotenv
from langchain.agents import create_agent
load_dotenv()
agent = create_agent(
model="deepseek:deepseek-chat"
)
print(type(agent))
# 输出:<class 'langgraph.graph.state.CompiledStateGraph'>
3. 方式二:传入模型实例对象
- 概念说明:先显式创建模型实例,再传入
create_agent()。 - 关键细节:
- 与字符串方式等价,底层调的是同一套机制
- 可以更精细地控制模型参数(温度、top_p等)
- 切换模型供应商只需换实例对象即可
from langchain_deepseek import ChatDeepSeek
from langchain_openai import ChatOpenAI
from langchain.agents import create_agent
# 方式A:DeepSeek
model = ChatDeepSeek(model="deepseek-chat")
# 方式B:OpenAI
model = ChatOpenAI(model="gpt-4")
agent = create_agent(model=model)
4. Agent底层是LangGraph图结构
- 概念说明:
create_agent()返回的Agent本质上是一个CompiledStateGraph实例,底层依赖LangGraph。 - 关键细节:可以通过
get_graph().draw_mermaid()可视化图结构:
print(agent.get_graph().draw_mermaid())
# 输出:start → model → end 的Mermaid图
🏗️ 架构与工作流
create_agent()内部自动构建LangGraph图:start→model节点 →end。- 后续绑定工具后,图结构会增加
tools节点和条件路由。
💻 代码实战
from dotenv import load_dotenv
from langchain.agents import create_agent
from langchain_deepseek import ChatDeepSeek
load_dotenv()
# ========== 方式一:字符串 ==========
agent_str = create_agent(model="deepseek:deepseek-chat")
print(type(agent_str)) # CompiledStateGraph
# ========== 方式二:模型实例 ==========
model = ChatDeepSeek(model="deepseek-chat")
agent_obj = create_agent(model=model)
print(type(agent_obj)) # CompiledStateGraph
# ========== 查看图结构 ==========
print(agent_obj.get_graph().draw_mermaid())
⚠️ 常见问题与避坑指南
- 使用字符串方式时,务必先执行
load_dotenv(),否则会因找不到 API Key 而报错。 - 字符串格式中的供应商名要与LangChain支持的集成名对应(如
deepseek→ChatDeepSeek,openai→ChatOpenAI)。
💡 个人总结与延伸
两种传入方式本质上等价,选择哪种取决于个人习惯和场景需求。字符串方式更简洁,适合快速原型;模型实例方式更灵活,适合需要精细控制模型参数的场景。理解Agent底层是LangGraph图结构很重要——这为后续理解工具调用流程和多节点协作打下了基础。