LangChain 调用大模型的方法可以归纳为三大类,五种方式。按照从简单到复杂的顺序,分别是:

  1. 基础调用 - invoke 直接调用

  2. 批量调用 - batch 并发请求

  3. 流式调用 - stream 实时输出

  4. 带格式调用 - with_structured_output 约束输出结构

  5. 智能体调用 - 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 复杂任务、需调用工具 最强大
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐