关于Gradio Chatbot的JSON格式及API调用的技术问询
Gradio Chatbot API调用问题解析
一、Gradio Chatbot对应的JSON格式
Gradio的Chatbot组件存储聊天历史的格式是嵌套列表,每个子列表包含两个元素:用户发送的消息、机器人回复的消息。对应的JSON格式示例如下:
[ ["你好", "很高兴认识你!"], ["请问怎么调用API?", "可以参考gradio-client的官方示例哦"] ]
如果是没有历史对话的初始状态,直接传空列表[]即可,不需要单独创建JSON文件。
二、正确的API调用示例
结合你提供的服务端代码,/chat接口接收两个参数:用户输入的文本、当前聊天历史。调用时无需传入JSON文件路径,直接传入Python列表形式的历史记录即可:
from gradio_client import Client # 替换成你的Gradio共享链接 client = Client("https://xxxx.gradio.live/") # 初始历史为空列表,代表之前没有对话 result = client.predict( "hello", # 用户输入的消息 [], # 聊天历史(空列表表示无历史) api_name="/chat" ) print(result)
调用后会返回一个元组,第一个元素是空字符串(对应服务端清空输入框),第二个元素是更新后的聊天历史,比如:
('', [['hello', 'Yes']])
如果需要携带已有历史调用,直接传入对应列表即可:
result = client.predict( "再问一次", [["hello", "Yes"]], # 已有聊天历史 api_name="/chat" ) # 返回结果示例:('', [['hello', 'Yes'], ['再问一次', 'No']])
三、你遇到的错误原因及解决
你之前的错误是因为传入了"/content/chatbot.json"文件路径,但该文件可能不存在、格式不符合要求,导致服务端返回异常,客户端解析时出现KeyError和TypeError。
解决方法很简单:直接传入聊天历史的Python列表(空列表或已有历史的列表),无需使用JSON文件路径。文档里标注的"filepath to JSON file"是可选场景(比如历史记录存在本地文件时),但日常调用直接传列表更便捷可靠。
内容的提问来源于stack exchange,提问作者Khah Nguyen
相关产品推荐
相关产品推荐

