找回密码
 立即注册
首页 业界区 业界 AI开发-python-langchain框架(1-9 返回字符串列表-格式 ...

AI开发-python-langchain框架(1-9 返回字符串列表-格式解析器)

墨淳雅 4 小时前
     大模型输出结果通常都是文本信息,如何让他按照你期望的格式输出?
     这段代码演示了如何使用LangChain将大语言模型的自由文本输出转换为结构化的字符串列表。核心目标是让模型返回逗号分隔的多个值,并通过专用解析器自动拆分为Python列表。
     CommaSeparatedListOutputParser专用于解析逗号分隔的文本,自动处理空格、引号等边界字符,输出类型为List[str]。与StrOutputParser返回纯字符串不同,它强制将响应拆分为离散元素,适用于多值提取场景。     提示词设计必须显式约束输出格式。通过partial_variables注入格式指令(如"内容1, 内容2, 内容3"),引导模型生成符合解析器要求的纯列表文本。若缺少格式约束,模型可能返回自然语言描述,导致解析器机械分割产生语义错误。 代码如下:
  1. from langchain.output_parsers import CommaSeparatedListOutputParser
  2. from langchain.prompts import PromptTemplate
  3. from langchain_openai import ChatOpenAI
  4. import os
  5. #输出-字符串列表
  6. output_parser = CommaSeparatedListOutputParser()
  7. #这里指定分隔符
  8. format_instructions = "您的响应应该是csv格式的逗号分隔值的列表,例如:'内容1, 内容2, 内容3'"
  9. #构建提示词-给出样例,提高返回的准确率
  10. prompt = PromptTemplate(
  11.     template="{format_instructions}\n请列出五个 {subject}.",
  12.     input_variables=["subject"],
  13.     partial_variables={"format_instructions": format_instructions},
  14. )
  15. #输出提示词
  16. print('#######################')
  17. print(prompt.invoke({"subject": "宠物狗的品种"}).text)
  18. print('#######################')
  19. llm = ChatOpenAI(
  20.     api_key=os.getenv("DEEPSEEK_API_KEY"),
  21.     base_url=os.getenv("BASE_URL"),  # Deepseek 的 API 基础地址
  22.     model="deepseek-v3:671b",  # Deepseek 对话模型(可选:deepseek-chat-pro 等高级模型)
  23.     temperature=0.7,  # 温度参数(0-1,越低越稳定)
  24.     max_tokens=1024  # 最大生成 tokens
  25. )
  26. chain = prompt | llm | output_parser
  27. result = chain.invoke({"subject": "宠物狗的品种"})
  28. print(result)
复制代码
 输出结果如下:
#######################
您的响应应该是csv格式的逗号分隔值的列表,例如:'内容1, 内容2, 内容3'
请列出五个 宠物狗的品种.
#######################
["'拉布拉多", '金毛寻回犬', '德国牧羊犬', '贵宾犬', "比格犬'"]

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册