Gradio Interface无输出问题:如何显示Prompter类方法返回值?
解决Gradio Interface无输出问题
核心问题排查与修复项
修正输入参数配置
你定义了inputs = gr.inputs.Textbox(label="Name"),但创建Interface时传入inputs=None,这会导致Gradio无法传递输入参数,函数逻辑无法正确触发。需将inputs参数设置为你定义的文本框组件。适配新版Gradio API
gr.inputs和gr.outputs属于旧版已弃用API,建议改用gr.Textbox()直接创建输入输出组件,避免兼容性问题。关联输入参数与业务逻辑
函数emo接收name参数,但返回时直接使用emo_name_prompts,需确保该变量结合输入的name构造了符合OpenAI要求的messages列表,否则调用逻辑不符合预期。添加异常捕获与日志
在emo函数中加入异常捕获,打印错误信息,便于排查API调用时的潜在问题(如网络超时、参数错误等)。
修复后完整代码示例
import gradio as gr import os import openai class Prompter: def __init__(self, gpt_model, temper): if not os.environ.get("OPENAI_API_KEY"): raise Exception("Please set the OPENAI_API_KEY environment variable") openai.api_key = os.environ.get("OPENAI_API_KEY") self.gpt_model = gpt_model self.temper = temper def prompt_model_print(self, messages: list): response = openai.ChatCompletion.create(model=self.gpt_model, messages=messages) return response["choices"][0]["message"]["content"] # 初始化Prompter实例(参数根据实际情况调整) prompter = Prompter(gpt_model="gpt-3.5-turbo", temper=0.7) def emo(name): # 结合输入name构造OpenAI所需的messages列表 emo_name_prompts = [ {"role": "user", "content": f"Please generate a Python list of 10 new feelings related to the name {name}, provide name and sentiment"} ] try: result = prompter.prompt_model_print(emo_name_prompts) return result except Exception as e: print(f"Error: {str(e)}") return f"Error occurred: {str(e)}" # 使用新版Gradio组件 inputs = gr.Textbox(label="Name") outputs = gr.Textbox(label="Emotion") demo = gr.Interface( fn=emo, inputs=inputs, outputs=outputs, title="Discover Emotion", description="Enter a name to generate a Python list of 10 new feelings with name and sentiment" ) demo.launch(share=True)
额外验证步骤
- 确认Colab中已正确设置
OPENAI_API_KEY环境变量,可通过print(os.environ.get("OPENAI_API_KEY"))检查。 - 再次测试
prompter.prompt_model_print在Gradio外的调用,确保API密钥、模型参数、messages格式均正确。
内容的提问来源于stack exchange,提问作者S.H
相关产品推荐
相关产品推荐

