如何在LangServe API调用中移除默认响应结构,仅返回Pydantic解析结果
LangServe API 返回简洁JSON格式配置方案
要让LangServe API直接返回包含Prediction和Explanation的简洁JSON,可通过以下两种方式调整配置:
方式一:自定义输出转换函数
在注册链时,利用transform_output参数提取默认响应结构中的output字段,直接返回解析后的结果:
from langserve import add_routes from fastapi import FastAPI from your_module import PredictCustomOutput app = FastAPI() chain = PredictCustomOutput() # 提取默认响应里的output内容 def extract_parsed_output(response): return response["output"] add_routes( app, chain, path="/get_gpt4", transform_output=extract_parsed_output ) if __name__ == "__main__": import uvicorn uvicorn.run(app, host="localhost", port=8000)
方式二:指定响应模型并确保链输出为Pydantic实例
如果你的链已经通过JsonOutputParser解析到Classify模型实例,注册时直接指定response_model为该Pydantic类,FastAPI会自动序列化出简洁JSON:
from langserve import add_routes from fastapi import FastAPI from your_module import PredictCustomOutput, Classify # 导入你的Pydantic模型 app = FastAPI() chain = PredictCustomOutput() add_routes( app, chain, path="/get_gpt4", response_model=Classify, transform_output=lambda res: res # 链输出已是Classify实例,直接返回 ) if __name__ == "__main__": import uvicorn uvicorn.run(app, host="localhost", port=8000)
验证效果
重启服务后,向http://localhost:8000/get_gpt4/invoke发送POST请求(请求体为{"input": "你的输入文本"}),将直接收到如下格式的响应:
{ "Prediction": "分类结果", "Explanation": "结果说明" }
内容的提问来源于stack exchange,提问作者Mac
相关产品推荐
相关产品推荐

