当前位置: 首页 > wzjs >正文

羽毛球赛事2022赛程宝鸡seo

羽毛球赛事2022赛程,宝鸡seo,建立设计网站富阳,山东网站优化公司文章目录 JSON结构输出未使用PydanticPydantic流式处理 XML结构输出xml输出指定字段 YAML输出源码地址参考资料 JSON结构输出 虽然一些模型提供商支持内置的方法返回结构化输出,但并非所有都支持。我们可以使用输出解析器来帮助用户通过指示指定任意的JSON模型&…

文章目录

  • JSON结构输出
    • 未使用Pydantic
    • Pydantic
    • 流式处理
  • XML结构输出
    • xml输出
    • 指定字段
  • YAML输出
  • 源码地址
  • 参考资料

JSON结构输出

虽然一些模型提供商支持内置的方法返回结构化输出,但并非所有都支持。我们可以使用输出解析器来帮助用户通过指示指定任意的JSON模型,查询符合该模式的模型输出,最后将该模式解析为JSON。

JsonOutputParser是一个内置选项,用于提示并解析JSON输出。虽然它在功能上类似于PydanticOutputParser,但它还支持流式返回部分JSON对象。

以下是如何将其与Pydantic一起使用以方便地声明预期模式的示例:

未使用Pydantic

让大模型生成json结构

from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
import osmodel = ChatOpenAI(model="gpt-4o", temperature=0)joke_query = "告诉我一个笑话."
parser = JsonOutputParser()
prompt = PromptTemplate(template="回答用户的查询.\n{format_instructions}\n{query}\n",input_variables=["query"],partial_variables={"format_instructions": parser.get_format_instructions()},
)
chain = prompt | model | parser
response = chain.invoke({"query": joke_query})
print(response)
{'joke': '为什么电脑去医院?因为它需要检查一下‘病毒’!'}

Pydantic

让大模型生成指定结构的数据,结构为class Joke

from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import PromptTemplate
from pydantic import BaseModel, Field
from langchain_openai import ChatOpenAImodel = ChatOpenAI(model="gpt-4o", temperature=0)# 定义期望的数据结构
class Joke(BaseModel):setup: str = Field(description="设置笑话的问题")punchline: str = Field(description="解决笑话的答案")joke_query = "告诉我一个笑话."
parser = JsonOutputParser(pydantic_object=Joke)
prompt = PromptTemplate(template="回答用户的查询.\n{format_instructions}\n{query}\n",input_variables=["query"],partial_variables={"format_instructions": parser.get_format_instructions()},
)
chain = prompt | model | parser
response = chain.invoke({"query": joke_query})
print(response)

输出示例:

{'setup': '为什么计算机不能喝咖啡?', 'punchline': '因为它们会崩溃!'}

请注意,我们将解析器中的format_instructions直接传递到提示中。可以并且应该尝试在提示的其他部分中添加自己的格式提示,以增强或替换默认指令:

parser.get_format_instructions()

流式处理

如上所述,JsonOutputParserPydanticOutputParsr之间的一个关键区别是JsonOutputParser输出解析器支持流式处理部分块。以下是其示例:

from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAImodel = ChatOpenAI(model="gpt-4o", temperature=0)joke_query = "告诉我一个笑话."
parser = JsonOutputParser()
prompt = PromptTemplate(template="回答用户的查询.\n{format_instructions}\n{query}\n",input_variables=["query"],partial_variables={"format_instructions": parser.get_format_instructions()},
)
chain = prompt | model | parser
response = chain.invoke({"query": joke_query})
for s in chain.stream({"query": joke_query}):print(s)

输出示例:

{}
{'joke': '为什么'}
{'joke': '为什么电脑去医院?因为它'}
{'joke': '为什么电脑去医院?因为它需要检查一下‘'}
{'joke': '为什么电脑去医院?因为它需要检查一下‘病毒’!'}

XML结构输出

下面使用XMLOutParser来提示模型生成XML输出,然后将该输出解析为可用的格式。

xml输出

我们可以使用XMLOutputParser将默认的格式指令添加到提示中,并将输出的XML解析为字典:

from langchain_core.output_parsers import XMLOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
import os
# pip install defusexmlmodel = ChatOpenAI(api_key=os.getenv("DASHSCOPE_API_KEY"),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",model="qwen-turbo",temperature=0
)action_query = "生成周星驰的简化电影作品列表,按照最新的顺序降序"
parser = XMLOutputParser()
prompt = PromptTemplate(template="回答用户的查询.\n{format_instructions}\n{query}\n",input_variables=["query"],partial_variables={"format_instructions": parser.get_format_instructions()},
)
chain = prompt | model
response = chain.invoke({"query": action_query})
xml_output = parser.parse(response.content)
print(response.content)

输出示例:

```xml
<movie_list><movie><title>美人鱼</title><year>2016</year></movie><movie><title>西游降魔篇</title><year>2013</year></movie><movie><title>长江七号</title><year>2008</year></movie><movie><title>功夫</title><year>2004</year></movie><movie><title>少林足球</title><year>2001</year></movie>
</movie_list>
```

我们还可以添加一些标签以根据我们的需求定制输出。可以在提示的其他部分中尝试添加自己的格式提示,以增强或替换默认指令:

指定字段

# 指定字段名称
from langchain_core.output_parsers import XMLOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
import os
# pip install defusexmlmodel = ChatOpenAI(api_key=os.getenv("DASHSCOPE_API_KEY"),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",model="qwen-turbo",temperature=0
)joke_query = "生成周星驰的简化电影作品列表,按照最新的顺序降序"
parser = XMLOutputParser(tags=["movies", "actor", "film", "name", "genre"])
prompt = PromptTemplate(template="回答用户的查询.\n{format_instructions}\n{query}\n",input_variables=["query"],partial_variables={"format_instructions": parser.get_format_instructions()},
)
chain = prompt | model
response = chain.invoke({"query": joke_query})
xml_output = parser.parse(response.content)
print(response.content)

输出示例:

```xml
<movies><actor><name>周星驰</name><film><name>美人鱼</name><genre>喜剧</genre></film><film><name>西游降魔篇</name><genre>奇幻, 喜剧</genre></film><film><name>功夫</name><genre>动作, 喜剧</genre></film><film><name>少林足球</name><genre>喜剧, 动作</genre></film></actor>
</movies>
```

YAML输出

我们使用PydanticYamlOutputParser输出指定的YAML格式

from langchain.output_parsers import YamlOutputParser
from langchain_core.prompts import PromptTemplate
from pydantic import BaseModel, Field
from langchain_openai import ChatOpenAI
import osclass Joke(BaseModel):setup: str = Field(description="设置笑话的问题")punchline: str = Field(description="解决笑话的答案")model = ChatOpenAI(api_key=os.getenv("DASHSCOPE_API_KEY"),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",model="qwen-turbo",temperature=0
)joke_query = "告诉我一个笑话."
# 设置一个解析器 + 将指令注入到提示模板中.
parser = YamlOutputParser(pydantic_object=Joke)
prompt = PromptTemplate(template="回答用户的查询.\n{format_instructions}\n{query}\n",input_variables=["query"],partial_variables={"format_instructions": parser.get_format_instructions()},
)
chain = prompt | model
print(parser.get_format_instructions())
response = chain.invoke({"query": joke_query})
print(response.content)

以上就是让大模型输出指定格式输出示例

源码地址

https://github.com/lys1313013/langchain-example/tree/main/08-output-parser

参考资料

B站:2025吃透LangChain大模型全套教程(LLM+RAG+OpenAI+Agent)第6集后半段

LangChain官网 JSON parser

LangChain官网 XML parser

LangChain官网 YAMLparser

http://www.dtcms.com/wzjs/157224.html

相关文章:

  • 伍佰亿网站怎么样关键词查询神器
  • 用dw制作购物网站首页河北搜索引擎优化
  • 做珠宝首饰网站百度app官网下载
  • 中国建设教育协会bim考点网站广告公司注册
  • 门户网站建设预算表站长工具友链检测
  • 南京做网站yuanmus软文范例100字以内
  • 做调查问卷赚钱网站有哪些google站长工具
  • 哪家网站做的好淘宝客推广一天80单
  • 二级域名网站可以做360推广东莞网站推广企业
  • 做游戏交易网站有哪些内容企业网站大全
  • 微信手机客户端网站建设百度快速收录权限
  • 书城网站建设项目定义网络营销软件排行
  • 网站建设为了什么seo整站优化解决方案
  • 六安网站优化seo管理是什么
  • 上海企业专属网站建设平台信息流广告哪个平台好
  • 多个域名绑定同一个网站2023网站分享
  • 广州仿网站营销网站建设免费
  • 公司网站建设的好处太原seo全网营销
  • 基于开源框架的网站开发关键词挖掘站网
  • 怎么做动态网站视频怎么自己做网站推广
  • 专业做app下载网站哪里有网络推广
  • 常州做网站价格360搜索关键词优化软件
  • 建设现金分期网站怎样制作属于自己的网站
  • 网站建设域名跳转博客宁波网络推广联系方式
  • 外国炫酷网站设计刚开的店铺怎么做推广
  • 搬家公司网站模板网站优化的方式有哪些
  • 网站别人能打开我打不开长尾词seo排名优化
  • 乌尔禾区做网站哪里好谷歌搜索网址
  • 网站制作怎么把网站交付百度网络科技有限公司
  • 淘宝客网站用什么软件做视频网站推广