DatetimeOutputParser时间输出解析器示例
from langchain.output_parsers import DatetimeOutputParser#日期输出解析器 from langchain.prompts import PromptTemplate #制定输出解析器 output_parser = DatetimeOutputParser() #制定提示词模版 template = """回答用户的问题: {question} {format_instructions}""" #时间解析器的解析格式 format_instructions = output_parser.get_format_instructions() #补充提示词模版 prompt = PromptTemplate.from_template( template, partial_variables={"format_instructions":format_instructions} ) API_KEY = "xxxxxxx" model = ChatOpenAI(model="deepseek-chat", openai_api_key=API_KEY, openai_api_base="https://api.deepseek.com") chain = prompt | model | output_parser output = chain.invoke("周杰伦是什么时候出道的?") output
一、 代码解释
1、导入依赖
from langchain.output_parsers import DatetimeOutputParser#日期输出解析器
#导入一个 “日期格式转换器”(DatetimeOutputParser)—— 专门把大模型的回答(比如 “2000 年 11 月 7 日”)转换成计算机能识别、格式统一的日期(比如2000-11-07)。 from langchain.prompts import PromptTemplate
#导入 “提示词模板工具”(PromptTemplate)—— 就是之前说的 “固定提问套路”,避免每次提问都写重复内容。
2、定义解析器
#制定输出解析器 output_parser = DatetimeOutputParser()
#把刚才 “拿” 来的日期转换器 “开机”,随时准备处理大模型的回答。比如:后续大模型回答 “2000 年 11 月 7 日”,这个工具会自动转成2000-11-07。
3、定义提示词模板(含输出解析格式)
#制定提示词模版 template = """回答用户的问题: {question} {format_instructions}""" #时间解析器的解析格式 format_instructions = output_parser.get_format_instructions()
4、提取日期格式要求(相当于 “问转换器‘要什么格式’”)
format_instructions = output_parser.get_format_instructions()
5. 生成最终提问模板(相当于 “把话术和格式要求拼好”)
prompt = PromptTemplate.from_template( template, partial_variables={"format_instructions": format_instructions} )
回答用户的问题:
{question}
请输出标准日期格式,例如 2023-12-31
6. 连接大模型(相当于 “打开大模型,准备对话”)
API_KEY = "xxxxxxx" model = ChatOpenAI(model="deepseek-chat", openai_api_key=API_KEY, openai_api_base="https://api.deepseek.com")
7. 搭建工作流水线(相当于 “把设备按顺序连起来”)
| 可以理解成 “然后”,这条 “流水线” 的逻辑是:
先把用户问题放进 prompt 模板(生成 “带格式要求的提问”);
然后把这个提问发给 model(大模型根据要求回答);
最后把大模型的回答传给 output_parser(转换成标准日期格式)。
举个流水线实例:
输入问题 → 模板生成 “回答周杰伦出道时间,输出 YYYY-MM-DD 格式” → 大模型回答 “2000 年 11 月 7 日” → 解析器转成 2000-11-07。
8. 启动流水线,得到结果
output = chain.invoke("周杰伦是什么时候出道的?") output

浙公网安备 33010602011771号