跟着官网学LangChain【第01章:模型(Models)】

第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("问题")

🎓 学习要点总结

  1. 模型抽象: LangChain提供统一的模型接口
  2. 配置方式: 静态配置和create_agent两种方式
  3. 参数调优: temperature等参数影响输出质量
  4. 最佳实践: 统一配置、环境变量、错误处理

🔗 下一步

完成本章后,你应该能够:

  • ✅ 配置和使用不同的模型
  • ✅ 理解模型参数的作用
  • ✅ 选择合适的模型和参数
  • ✅ 使用最佳实践管理模型

下一章我们将学习提示词和消息(Prompts & Messages),这是与模型交互的核心。

📚 参考资源

相关推荐
Ares-Wang2 小时前
网络》》 IS-IS 路由协议
网络
小王不爱笑1322 小时前
云服务器部署 JavaWeb 项目
运维·服务器
清泉影月2 小时前
Linux:Squid正向代理实现内网访问互联网
linux·运维·服务器
Loo国昌2 小时前
【LangChain1.0】第八阶段:文档处理工程(LangChain篇)
人工智能·后端·算法·语言模型·架构·langchain
康康的AI博客2 小时前
工业数据中台:PLC、SCADA、MES的实时协同架构
java·服务器·网络
优宁维生物3 小时前
Co-IP 抗体科普从选择到避坑
网络·网络协议·tcp/ip
市安3 小时前
基于 LVS+Keepalived+NFS 的高可用 Web 集群构建与验证
运维·服务器·网络·lvs·keepalived·ipvsadm
鹿角片ljp3 小时前
Java网络编程入门:从Socket到多线程服务器
java·服务器·网络
无名的小三轮3 小时前
FTP协议详解
网络·tcp/ip·安全