惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
量子位
小众软件
小众软件
The Cloudflare Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
G
Google Developers Blog
博客园 - 叶小钗
H
Help Net Security
Jina AI
Jina AI
Y
Y Combinator Blog
Last Week in AI
Last Week in AI
GbyAI
GbyAI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Apple Machine Learning Research
Apple Machine Learning Research
MyScale Blog
MyScale Blog
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Vercel News
Vercel News

博客园 - 喵喵2023

学习Langchain笔记二——多模板提示词 学习LangChain笔记一 论云原生架构在高并发系统中的设计与实践 数据血缘图在数据错误追溯中的应用指南 观察者设计模式:原理、应用与对比分析 区块链技术:原理、应用与案例分析 docker 安装nginx 和 nginx proxy manager 微服务设计10个需要考虑的要素 MySQL 8.0 参考手册——8.2优化 SQL 语句(二) MySQL 8.0 参考手册——8.2优化 SQL 语句(一) MySQL 8.0 参考手册——8.1优化概述 docker 推送本地镜像到docker Hub仓库 微服务架构设计模式 系统分析与设计 SpringBoot 与 nacos 最新版本整合 CentOS 添加定时任务 安装docker-compose docker nginx镜像 获取并挂载目录 供应链管理(五) 供应链管理(四) 供应链管理(三) 供应链管理(二)
学习Langchain笔记三——输出格式化
喵喵2023 · 2026-07-31 · via 博客园 - 喵喵2023
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}