学习Langchain笔记三——输出格式化
import re from langchain.output_parsers import StructuredOutputParser, ResponseSchema from langchain_core.prompts import PromptTemplate from langchain_ollama import ChatOllama # 1. 导入 ChatOllama # 2. 实例化模型对象 chat chat = ChatOllama(model="deepseek-r1:1.5b") response_schema = [ ResponseSchema(name="name", description="人的姓名", type="string"), ResponseSchema(name="age", description="人的年龄", type="integer") ] output_parsers = StructuredOutputParser.from_response_schemas(response_schema) template = "你是一个信息提取助手,请从以下文本中提取姓名和年龄:\n文本:{input_text}\n{format_instructions}" prompt = PromptTemplate( template=template, input_variables=["input_text"], partial_variables={"format_instructions": output_parsers.get_format_instructions()} ) input_text = "张三今年18岁,来自北京" filled_prompt = prompt.format(input_text=input_text) # 3. 获取模型的原始回答 raw_response = chat.invoke(filled_prompt).content # 4. 关键点:用正则过滤掉 DeepSeek-R1 的 <think> 标签,只留 JSON clean_response = re.sub(r'<think>.*?</think>', '', raw_response, flags=re.DOTALL).strip() # 5. 解析过滤后的纯 JSON 字符串 parsed_output = output_parsers.parse(clean_response) print(parsed_output)
{'name': '张三', 'age': 18}
##############阁下如果是抄袭,爬取文章作恶或误导他人的开发者,请阅读中国现行法律的相关处罚条例再动手,转载之前最好先验证#############

浙公网安备 33010602011771号