如何配置 `gr.ChatInterface` 以返回多个输出(响应和源文档)?
我有一个 gr.ChatInterface
,我想调整一下,让它也能显示给用户在获取信息时用到的文档来源(也就是说,增加一个输出)。
import gradio as gr
def generate_response(message, history):
print(f"\n\n[message] {message}")
# call LLM & generate response
return response.answer
demo = gr.ChatInterface(
fn=generate_response,
title="RAG app for Q&A",
description="Ask any question about Stuff",
).queue(default_concurrency_limit=2, max_size=10)
demo.launch(share=True)
我已经尝试过 outputs
,但是 gr.ChatInterface
不支持这个:
Traceback (most recent call last):
File "/workspaces/aider_repos/app.py", line 20, in <module>
demo = gr.ChatInterface(
^^^^^^^^^^^^^^^^^
TypeError: ChatInterface.__init__() got an unexpected keyword argument 'outputs'
怎么配置 gr.ChatInterface
让它返回多个输出(回复和来源文档)呢?
Traceback (most recent call last):
File "/workspaces/aider_repos/app.py", line 20, in <module>
demo = gr.ChatInterface(
^^^^^^^^^^^^^^^^^
TypeError: ChatInterface.__init__() got an unexpected keyword argument 'outputs'
1 个回答
-1
Gradio中的gr.ChatInterface并不直接支持多个输出。不过,我们可以通过创建一个自定义组件,把响应和源文档合并成一个输出字符串,来实现这个功能。
下面是我们如何修改代码,以便同时返回响应和源文档的示例。
import gradio as gr
def generate_response(message, history):
print(f"\n\n[message] {message}")
# Call LLM & generate response
response_text = "This is the generated response."
source_documents = ["Source document 1", "Source document 2"]
return response_text, source_documents
def chatbot(input_message, history):
response, sources = generate_response(input_message, history)
combined_output = f"Response: {response}\n\nSource documents:\n\n" + "\n".join(sources)
history = history + [(input_message, combined_output)]
return history, history
demo = gr.ChatInterface(
fn=chatbot,
title="RAG app for Q&A",
description="Ask any question about Stuff",
).queue(default_concurrency_limit=2, max_size=10)
demo.launch(share=True)