🎯 核心概念速览
Model I/O 三要素
- Format → Prompt Template(提示模板)
- Predict → Model(模型调用)
- Parse → Output Parser(输出解析)
🤖 模型调用详解
模型分类对比
| 类型 |
输入格式 |
输出格式 |
适用场景 |
| LLMs |
字符串 |
字符串 |
单次任务:摘要、翻译、代码生成 |
| ChatModels |
消息列表 |
AIMessage对象 |
多轮对话、客服机器人 |
| Embedding Models |
文本 |
向量列表 |
检索、语义搜索 |
关键参数说明
ChatOpenAI(
model="gpt-4o-mini",
temperature=0.7,
max_tokens=512,
api_key=os.getenv("API_KEY"),
base_url=os.getenv("BASE_URL")
)
调用方法汇总
| 方法 |
说明 |
适用场景 |
invoke() |
同步调用 |
常规请求 |
stream() |
流式输出 |
实时对话 |
batch() |
批量处理 |
多条数据 |
ainvoke() |
异步调用 |
高并发 |
💬 消息类型完全指南
核心消息类型
from langchain_core.messages import *
SystemMessage(content="你是一个{role}")
HumanMessage(content="{user_input}")
AIMessage(content="{ai_response}")
ChatMessage(role="analyst", content="{custom_content}")
ToolMessage(content="{tool_result}")
多轮对话结构
conversation = [
SystemMessage(content="你是AI助手小智"),
HumanMessage(content="你好"),
AIMessage(content="你好!有什么可以帮你?"),
HumanMessage(content="机器学习是什么?")
]
📝 提示模板完全指南
PromptTemplate(基础模板)
from langchain.prompts import PromptTemplate
template = PromptTemplate(
template="请评价{product}的{aspect}",
input_variables=["product", "aspect"]
)
prompt = template.format(product="手机", aspect="电池")
prompt = template.invoke({"product": "手机", "aspect": "电池"})
ChatPromptTemplate(对话模板)
from langchain_core.prompts import ChatPromptTemplate
chat_template = ChatPromptTemplate.from_messages([
("system", "你是{role}"),
("human", "{question}")
])
messages = chat_template.format_messages(role="专家", question="问题")
text = chat_template.format(role="专家", question="问题")
FewShot模板(示例学习)
from langchain.prompts import FewShotPromptTemplate
examples = [{"input": "2+2", "output": "4"}]
example_prompt = PromptTemplate.from_template("输入:{input}→输出:{output}")
prompt = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
suffix="输入:{input}→输出:",
input_variables=["input"]
)
MessagesPlaceholder(动态消息)
from langchain_core.prompts import MessagesPlaceholder
template = ChatPromptTemplate.from_messages([
("system", "你是助手"),
MessagesPlaceholder("history"),
("human", "{question}")
])
🔧 输出解析器完全指南
解析器类型对比
| 解析器 |
输入 → 输出 |
使用场景 |
StrOutputParser |
AIMessage → str |
普通文本提取 |
JsonOutputParser |
文本 → dict |
API响应、结构化数据 |
XMLOutputParser |
文本 → dict |
XML格式处理 |
CommaSeparatedListOutputParser |
文本 → list |
列表数据 |
DatetimeOutputParser |
文本 → datetime |
时间日期 |
JSON解析示例
from langchain_core.output_parsers import JsonOutputParser
parser = JsonOutputParser()
format_instructions = parser.get_format_instructions()
prompt = PromptTemplate(
template="回答:{query}\n{format_instructions}",
partial_variables={"format_instructions": format_instructions}
)
chain = prompt | model | parser
result = chain.invoke({"query": "生成JSON格式的笑话"})
🖥️ 本地模型调用(Ollama)
安装与配置
curl -fsSL https://ollama.com/install.sh | sh
ollama run deepseek-r1:7b
LangChain调用
from langchain_community.chat_models import ChatOllama
ollama_llm = ChatOllama(
model="deepseek-r1:7b",
base_url="http://localhost:11434"
)
response = ollama_llm.invoke("你好")
🚀 实战代码模板
完整对话流程
import os
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
chat_model = ChatOpenAI(
model="gpt-4o-mini",
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL")
)
prompt = ChatPromptTemplate.from_messages([
("system", "你是{role}"),
("human", "{question}")
])
chain = prompt | chat_model | StrOutputParser()
result = chain.invoke({
"role": "AI专家",
"question": "解释机器学习"
})
流式输出实现
chat_model = ChatOpenAI(streaming=True)
for chunk in chat_model.stream(messages):
print(chunk.content, end="", flush=True)
所有评论(0)