第01章:模型(Models)
📚 本章学习目标
- 理解LangChain中的模型抽象
- 掌握不同模型的配置方法
- 学习静态和动态模型使用
- 了解模型参数的作用
🎯 什么是模型?
在LangChain中,**模型(Model)**是对各种大语言模型的统一抽象。无论你使用OpenAI、Anthropic、还是其他提供商的模型,LangChain都提供了一致的接口。
模型抽象层
应用代码
LangChain模型接口
OpenAI适配器
Anthropic适配器
本地模型适配器
其他提供商适配器
GPT-4/GPT-3.5
Claude
Llama/Ollama
Qwen/Baichuan等
🔧 模型配置方式
方式1:静态模型配置
静态配置是最直接的方式,适合固定使用某个模型:
python
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="qwen-plus",
api_key="your_api_key",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
temperature=0.7,
max_tokens=1024
)
方式2:使用create_agent(推荐)
create_agent是LangChain V1.2推荐的方式,它提供了更灵活的使用方式:
python
from langchain.agents import create_agent
agent = create_agent(
model="qwen-plus", # 可以直接使用字符串
system_prompt="你是一个友好的助手"
)
模型配置对比
静态配置
直接使用模型实例
create_agent
智能体封装
llm.invoke
agent.invoke
⚙️ 模型参数详解
核心参数
| 参数 | 说明 | 默认值 | 影响 |
|---|---|---|---|
model |
模型名称 | - | 选择使用的模型 |
temperature |
温度参数 | 0.7 | 控制输出的随机性,0-2之间 |
max_tokens |
最大token数 | - | 限制输出长度 |
top_p |
核采样参数 | 1.0 | 控制输出的多样性 |
api_key |
API密钥 | - | 认证信息 |
base_url |
API基础URL | - | 自定义API端点 |
Temperature参数的影响
Temperature = 0
确定性输出
每次相同
Temperature = 0.7
平衡
有创意但可控
Temperature = 1.5
高随机性
创意性强
建议值:
- 0.0-0.3: 需要确定性答案(如代码生成、数据提取)
- 0.7-1.0: 一般对话和创作
- 1.0-2.0: 需要高创意性(如故事创作)
📊 模型调用流程
完整调用流程
LLM模型 API服务 API适配器 LangChain 客户端代码 LLM模型 API服务 API适配器 LangChain 客户端代码 invoke(message) 格式化消息 准备请求 HTTP请求 处理请求 生成响应 JSON响应 解析响应 AIMessage对象
💡 使用场景
场景1:简单问答
python
response = llm.invoke("什么是Python?")
适用于:单次问答,不需要上下文
场景2:带系统提示
python
from langchain_core.messages import SystemMessage, HumanMessage
messages = [
SystemMessage(content="你是一个专业的Python编程助手"),
HumanMessage(content="请解释一下装饰器")
]
response = llm.invoke(messages)
适用于:需要定义AI角色或行为
场景3:使用智能体
python
agent = create_agent(
model=llm,
system_prompt="你是一个友好的助手"
)
result = agent.invoke({
"messages": [{"role": "user", "content": "问题"}]
})
适用于:需要更高级功能(工具调用、记忆等)
🔄 模型选择策略
不同场景的模型选择
简单对话
复杂推理
代码生成
中文场景
选择模型
使用场景
轻量级模型
如gpt-3.5-turbo
高级模型
如gpt-4
代码专用模型
如code-davinci
中文优化模型
如qwen-plus
🎓 最佳实践
1. 统一模型配置
使用统一的配置文件管理模型:
python
# models.py
from langchain_openai import ChatOpenAI
import os
api_key = os.getenv("DASHSCOPE_API_KEY")
qwen = ChatOpenAI(
model="qwen-plus",
api_key=api_key,
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
temperature=0.7,
)
2. 环境变量管理
使用环境变量存储敏感信息:
bash
# Windows PowerShell
$env:DASHSCOPE_API_KEY="your_api_key"
# Linux/Mac
export DASHSCOPE_API_KEY="your_api_key"
3. 错误处理
python
try:
response = llm.invoke("问题")
except Exception as e:
print(f"调用失败: {e}")
📈 性能优化
批量调用
python
# 批量处理多个请求
responses = llm.batch([
"问题1",
"问题2",
"问题3"
])
异步调用
python
# 异步调用提高并发性能
response = await llm.ainvoke("问题")
🎓 学习要点总结
- 模型抽象: LangChain提供统一的模型接口
- 配置方式: 静态配置和create_agent两种方式
- 参数调优: temperature等参数影响输出质量
- 最佳实践: 统一配置、环境变量、错误处理
🔗 下一步
完成本章后,你应该能够:
- ✅ 配置和使用不同的模型
- ✅ 理解模型参数的作用
- ✅ 选择合适的模型和参数
- ✅ 使用最佳实践管理模型
下一章我们将学习提示词和消息(Prompts & Messages),这是与模型交互的核心。