大模型输出结果通常都是文本信息,如何让他按照你期望的格式输出?
这段代码演示了如何使用LangChain将大语言模型的自由文本输出转换为结构化的字符串列表。核心目标是让模型返回逗号分隔的多个值,并通过专用解析器自动拆分为Python列表。
from langchain.output_parsers import CommaSeparatedListOutputParser from langchain.prompts import PromptTemplate from langchain_openai import ChatOpenAI import os #输出-字符串列表 output_parser = CommaSeparatedListOutputParser() #这里指定分隔符 format_instructions = "您的响应应该是csv格式的逗号分隔值的列表,例如:'内容1, 内容2, 内容3'" #构建提示词-给出样例,提高返回的准确率 prompt = PromptTemplate( template="{format_instructions}\n请列出五个 {subject}.", input_variables=["subject"], partial_variables={"format_instructions": format_instructions}, ) #输出提示词 print('#######################') print(prompt.invoke({"subject": "宠物狗的品种"}).text) print('#######################') llm = ChatOpenAI( api_key=os.getenv("DEEPSEEK_API_KEY"), base_url=os.getenv("BASE_URL"), # Deepseek 的 API 基础地址 model="deepseek-v3:671b", # Deepseek 对话模型(可选:deepseek-chat-pro 等高级模型) temperature=0.7, # 温度参数(0-1,越低越稳定) max_tokens=1024 # 最大生成 tokens ) chain = prompt | llm | output_parser result = chain.invoke({"subject": "宠物狗的品种"}) print(result)输出结果如下:
#######################
您的响应应该是csv格式的逗号分隔值的列表,例如:'内容1, 内容2, 内容3'
请列出五个 宠物狗的品种.
#######################
["'拉布拉多", '金毛寻回犬', '德国牧羊犬', '贵宾犬', "比格犬'"]