LangChain:模型I/O
LangChain的Model I/O(Input/Output)是框架中负责与语言模型(LLM)进行输入输出交互的核心模块,是连接开发者与大语言模型(LLMs)的核心交互层,提供了一套标准化的流程实现输入构建、模型调用和结果解析的全链路管理。
Mode I/O组件是对各个LLM模型平台API的封装,这个组件封装了市场公开的绝大部分LLM模型接口。
具体可参阅:LangChain > All chat models。
I/O 模型核心组件
提示模板(PromptTemplate)
功能:动态生成文本提示,支持变量插值和模板复用
关键特性:
- 支持
f-string
风格变量替换 - 可组合嵌套模板
- 支持与示例选择器(ExampleSelector)结合
- 支持
示例:
python
复制
1
2
3
4
5
6
7from langchain.prompts import PromptTemplate
# 基础模板
template = "请用{style}风格,写一篇关于{topic}的短文"
prompt = PromptTemplate.from_template(template)
formatted_prompt = prompt.format(style="武侠", topic="人工智能")
# Output: "请用武侠风格,写一篇关于人工智能的短文"
示例选择器(ExampleSelector)
功能:动态选择最相关的示例用于 few-shot 学习
常用类型:
LengthBasedExampleSelector
:根据长度自动选择示例SemanticSimilarityExampleSelector
:基于语义相似度选择MaxMarginalRelevanceExampleSelector
:平衡相关性与多样性
示例:
1
2
3
4
5
6
7
8
9
10
11from langchain.prompts.example_selector import SemanticSimilarityExampleSelector
from langchain_community.vectorstores import Chroma
examples = [{"input": "高兴", "output": "😊"},
{"input": "悲伤", "output":😢}]
example_selector = SemanticSimilarityExampleSelector.from_examples(
examples,
embeddings_model, # 需预先加载嵌入模型
Chroma,
k=1
)
输出解析器(OutputParser)
功能:将模型原始输出转换为结构化数据
主要类型:
CommaSeparatedListOutputParser
:解析逗号分隔列表StructuredOutputParser
:生成结构化输出PydanticOutputParser
:基于 Pydantic 模型验证输出
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13from langchain.output_parsers import PydanticOutputParser
from pydantic import BaseModel
class JokeSchema(BaseModel):
setup: str
punchline: str
parser = PydanticOutputParser(pydantic_object=JokeSchema)
model_output = """{
"setup": "为什么程序员总分不清万圣节和圣诞节?",
"punchline": "因为 Oct 31 == Dec 25"
}"""
parsed = parser.parse(model_output)
完整使用流程示例
1 | from langchain.prompts import ChatPromptTemplate |
高级功能
动态提示组合*
1 | base_prompt = PromptTemplate("你是一个{role}") |
流式输出处理
1 | from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler |
多模型路由
1 | from langchain.schema.runnable import RouterRunnable |
最佳实践
模板管理
- 将常用模板存储在外部 YAML 文件
- 使用
FewShotPromptTemplate
管理多示例场景
错误处理
1 | from langchain.schema import OutputParserException |
验证机制
1 | from langchain.output_parsers import RetryOutputParser |
典型应用场景
- 结构化数据生成(JSON/XML)
- 多轮对话上下文管理
- 多模态输入处理(结合图像/文本)
- 领域特定问答系统
- 自动化报告生成
通过合理组合这些 I/O 组件,开发者可以构建出灵活、健壮的 LLM 应用流水线。