llm.with_structured_output结构化输出为None
问题描述:
按课程代码结构化llm输出结果为None
相关代码:
from typing import Literal import dotenv from langchain_core.prompts import ChatPromptTemplate from langchain_core.pydantic_v1 import BaseModel, Field from langchain_core.runnables import RunnablePassthrough from langchain_openai import ChatOpenAI dotenv.load_dotenv() class RouteQuery(BaseModel): """将用户查询映射到对应的数据源上""" datasource: Literal["python_docs", "js_docs", "golang_docs"] = Field( description="根据用户的问题,选择哪个数据源最相关以回答用户的问题" ) # def choose_route(result: RouteQuery) -> str: print('----:', result) """根据不同的传递结果选择不同的检索器""" if "python_docs" in result.datasource: return 'chain in python_docs' elif "js_docs" in result.datasource: return 'chain in js_docs' else: return 'chain in golang_docs' llm = ChatOpenAI(model="gpt-3.5-turbo-16k", temperature=5) structured_llm = llm.with_structured_output(RouteQuery) prompt = ChatPromptTemplate.from_messages([ ('system', '你是一个擅长将用户问题路由到适应数据源的专家。\n请根据问题涉及的编程语言,将其路由到相关数据源'), ('human', '{question}') ]) router = {'question': RunnablePassthrough()} | prompt question = """下面的代码为什么不工作了,请帮我检查下: from langchain_core.prompts import ChatPromptTemplate prompt = ChatPromptTemplate.from_messages(['human','speak in {language}']) prompt.invoke('中文') """ res = router.invoke(question) print(res) res_s = structured_llm.invoke(res) print(res_s)
输出如下:对应最后两行print
相关截图:
27
收起
正在回答 回答被采纳积分+1
2回答
LLM应用开发平台特训营
- 参与学习 184 人
- 解答问题 134 个
全栈+全流程打造价值极高+可商用大模型应用开发LLMOps平台 迅速具备低成本、高效率构建生成式 AI 原生应用的稀缺能力 教/学/练/测/评教学+大厂内推机会,培养具备AI架构和研发能力的尖端人
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星