LangChain调用大模型方法
·

LangChain 调用大模型的方法可以归纳为三大类,五种方式。按照从简单到复杂的顺序,分别是:
-
基础调用 -
invoke直接调用 -
批量调用 -
batch并发请求 -
流式调用 -
stream实时输出 -
带格式调用 -
with_structured_output约束输出结构 -
智能体调用 -
create_agent结合工具自主决策
前三种是模型的标准调用方法,后两种是高级用法。
一、基础调用:直接生成
1. invoke - 最基础的调用方法
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4", temperature=0.7)
# 单条消息调用
response = llm.invoke("你好,请介绍一下自己")
print(response.content)
# 多条消息(对话历史)
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
messages = [
SystemMessage("你是一位资深法律顾问,请用专业术语回答"),
HumanMessage("什么是合同法?")
]
response = llm.invoke(messages)
print(response.content)
2. stream - 流式输出
适用于聊天机器人、实时生成场景。
# 流式输出,逐字返回
for chunk in llm.stream("写一首关于夏天的短诗"):
print(chunk.content, end="", flush=True)
3. batch - 批量调用
适合处理大量独立请求,并发执行。
# 批量处理
questions = [
"什么是机器学习?",
"什么是深度学习?",
"什么是强化学习?"
]
responses = llm.batch(questions)
for q, r in zip(questions, responses):
print(f"Q: {q}\nA: {r.content}\n")
二、高级调用:格式化与约束输出
1. with_structured_output - 约束输出格式
确保模型输出符合预定义的 JSON 结构,方便后续程序解析。
from pydantic import BaseModel
from langchain_openai import ChatOpenAI
# 定义输出结构
class Person(BaseModel):
name: str
age: int
email: str
llm = ChatOpenAI(model="gpt-4")
structured_llm = llm.with_structured_output(Person)
# 模型会按 Person 格式返回
result = structured_llm.invoke("提取用户信息:张三,25岁,邮箱zhangsan@example.com")
print(result.name) # 张三
print(result.age) # 25
2. 温度参数与输出控制
| 参数 | 作用 | 建议值 |
|---|---|---|
temperature |
控制随机性 | 0~1,越高越有创意 |
max_tokens |
限制输出长度 | 根据需求设定 |
top_p |
核采样 | 0.8~1.0 |
llm = ChatOpenAI(
model="gpt-4",
temperature=0.3, # 低温度 → 更确定
max_tokens=500,
timeout=30,
max_retries=3
)
三、智能体调用:结合工具
create_agent - 赋予模型工具调用能力
让模型不仅能"说话",还能"行动"——调用 API、搜索、计算等。
from langchain.agents import create_agent
from langchain.tools import tool
# 1. 定义工具
@tool
def get_weather(city: str) -> str:
"""获取指定城市的天气"""
return f"{city}的天气:晴朗,25°C"
@tool
def calculate(expression: str) -> str:
"""计算数学表达式"""
return str(eval(expression))
# 2. 创建 Agent
agent = create_agent(
model="gpt-4",
tools=[get_weather, calculate],
system_prompt="你是一个助手,可以查询天气和进行计算"
)
# 3. 调用
result = agent.invoke({
"messages": [{"role": "user", "content": "北京天气怎么样?然后帮我算一下 15*30"}
})
Agent 的核心能力
| 能力 | 说明 |
|---|---|
| 工具选择 | 根据用户意图自主决定调用哪个工具 |
| 多步推理 | 可串联多个工具完成任务 |
| 错误处理 | 工具调用失败时可重试或切换工具 |
四、本地模型调用:Ollama + LangChain
对于需要私有化部署的场景,可以使用 Ollama 运行本地模型,LangChain 通过 OpenAI 兼容协议调用。
from langchain_openai import ChatOpenAI
# 本地 Ollama 模型
llm = ChatOpenAI(
model="qwen3:8b",
base_url="http://localhost:11434/v1",
api_key="ollama",
temperature=0.7
)
# 组合 Prompt 模板
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
prompt = PromptTemplate.from_template("你是一个专家,请回答:{question}")
chain = prompt | llm | StrOutputParser()
result = chain.invoke({"question": "什么是RAG?"})
五、方法对比
| 方法 | 使用场景 | 特点 |
|---|---|---|
invoke |
通用调用,一问一答 | 最简单 |
stream |
聊天机器人、实时生成 | 体验好 |
batch |
大量独立请求 | 并发高效 |
with_structured_output |
需要解析、数据提取 | 输出可预测 |
create_agent |
复杂任务、需调用工具 | 最强大 |
更多推荐


所有评论(0)