目錄
什么是 Model I/O?
一、提示模板(PromptTemplate)
1.1 什么是提示模板?
1.2 常見提示模板類型
二、模型調用(Model Predict)
三、輸出解析(Output Parser)
?綜合示例:三段式 Model I/O 流水線
總結
在構建大語言模型(LLM)應用時,我們經常會經歷這樣一個過程:
編寫提示 → 調用模型 → 處理輸出
LangChain 將這一流程模塊化,統稱為 Model I/O。本篇文章將帶你深入理解什么是 Model I/O,它包含哪些部分,怎么使用,以及它為什么是 LangChain 的核心能力之一。
什么是 Model I/O?
LangChain 的 Model I/O 模塊將對語言模型的交互抽象為三個核心階段:
階段 | 作用 |
---|---|
提示模板 | 構造輸入給模型的內容,支持變量插入、格式統一等 |
模型調用 | 使用通用接口調用各種 LLM(OpenAI、Qwen、Claude 等) |
輸出解析 | 將模型的非結構化輸出解析為結構化、可用的程序化格式 |
這三個環節各自獨立、可組合,也可以統一組成一個強大的“提示-執行-解析”流水線。
一、提示模板(PromptTemplate)
1.1 什么是提示模板?
提示模板是為語言模型構建輸入內容的模板化方案,它的作用是:
-
動態插入變量:根據用戶輸入自動填充提示內容;
-
提升可讀性:統一格式,邏輯清晰;
-
支持復用與維護:更改模板內容不會影響整個應用邏輯。
一個簡單例子:
from langchain.prompts import PromptTemplatetemplate = PromptTemplate.from_template("請為以下主題寫一首詩:{topic}")
prompt = template.format(topic="春天")
# 輸出: 請為以下主題寫一首詩:春天
你無需手動拼接字符串,LangChain 自動幫你處理變量插值與語法規范。
1.2 常見提示模板類型
類型 | 描述 | 示例 |
---|---|---|
PromptTemplate | 傳統的字符串提示模板,適用于非對話任務 | 文本摘要、改寫等 |
ChatPromptTemplate | 多角色聊天模板,支持系統/用戶/AI 消息組合 | ChatGPT 風格對話 |
FewShotPromptTemplate | 小樣本提示模板,通過示例指導模型行為 | 情感分類、代碼示例 |
PipelinePromptTemplate | 多段提示拼接形成一個完整的上下文 | 多步驟提示場景 |
PartialPromptTemplate | 支持部分變量先注入,延后填完整提示 | 多階段生成流程 |
自定義模板 | 自定義子類以擴展功能 | 特定結構或多語言支持 |
📌 小貼士:ChatPromptTemplate 是構建多輪對話機器人或角色扮演 AI 的首選模板。
二、模型調用(Model Predict)
LangChain 提供了統一的模型接口,你只需關心模型“做什么”,不用關心“怎么調用”。
常用模型類:
模型類 | 用途 | 示例 |
---|---|---|
ChatOpenAI | OpenAI 聊天模型 | gpt-3.5-turbo |
DashScopeChatModel | 阿里百煉模型支持 | qwen-turbo |
LLamaCpp , Ollama | 本地部署模型 | 無需聯網,私有化 |
ChatAnthropic | Claude 系列支持 | Claude 3 系列 |
通過鏈式組合,你可以快速將提示模板連接模型:
chain = prompt | llm # prompt 為 PromptTemplate, llm 為 ChatOpenAI
三、輸出解析(Output Parser)
模型輸出通常是非結構化的文本,但在真實業務中,我們更需要結構化數據。
LangChain 提供多種輸出解析器(Parser),幫助你從結果中提取有用內容:
類型 | 功能 |
---|---|
StrOutputParser | 默認返回字符串(用于簡單場景) |
StructuredOutputParser | 將輸出轉換為 JSON / dict 等結構化格式 |
PydanticOutputParser | 支持復雜結構與驗證的解析器 |
正則解析器 / 自定義解析器 | 適用于固定格式或復雜結構提取 |
示例:
from langchain.output_parsers import StructuredOutputParser
from langchain.output_parsers.schema import ResponseSchemaschemas = [ResponseSchema(name="title", description="新聞標題"),ResponseSchema(name="summary", description="簡要內容")]parser = StructuredOutputParser.from_response_schemas(schemas)
parsed = parser.parse("標題:LangChain發布新版本\n摘要:優化了RAG性能")
?綜合示例:三段式 Model I/O 流水線
from langchain.prompts import PromptTemplate
from langchain.chat_models import ChatOpenAI
from langchain.output_parsers import StrOutputParserprompt = PromptTemplate.from_template("請總結以下文本內容:{text}")
llm = ChatOpenAI()
parser = StrOutputParser()chain = prompt | llm | parserresult = chain.invoke({"text": "LangChain 是一個用于構建 LLM 應用的框架..."})
print(result)
輸出結果: LangChain 是一個幫助你構建 AI 應用的強大工具,支持鏈、Agent、RAG 等組件。
總結
LangChain 的 Model I/O 模塊本質上是在做一件事:
把 輸入設計 → 模型執行 → 輸出提取 變得標準、模塊化、可復用。
模塊 | 功能關鍵點 |
---|---|
Prompt | 模板化生成提示,支持變量插值 |
Model | 一致性調用不同 LLM,適配主流平臺 |
OutputParse | 抽取結構化信息,降低處理成本 |
如果你打算構建一個嚴肅的 AI 應用,無論是智能問答、客服機器人,還是知識管理系統,Model I/O 都是你繞不開的第一步。