You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenAI text-davinci-002无输出问题排查求助

问题排查与修复方案

核心问题分析

你的代码存在几个关键问题导致无输出:

  • 语音识别失败无提示且静默跳过:except:块直接执行continue,如果语音未被Google识别,程序会直接回到监听循环,根本没触发OpenAI调用逻辑,你误以为是模型无输出。
  • 回复内容处理逻辑错误:response_str.split("Ava: ", 1)[0]会清空模型返回的有效内容——模型返回的是Ava:之后的回复内容,这一步分割会取到分割符前的空字符串,最终导致response_str为空。
  • 缺少API调用异常处理:如果OpenAI请求出错(如网络波动、参数问题),程序会直接终止或无提示,无法定位问题。

修复后的代码

import openai
import pyttsx3
import speech_recognition as sr
from api_key import API_KEY

openai.api_key = API_KEY

engine = pyttsx3.init()

r = sr.Recognizer()
mic = sr.Microphone(device_index=1)
print("可用麦克风列表:", sr.Microphone.list_microphone_names())

conversation = ""
user_name = "Josode"
bot_name = "Ava"

while True:
    with mic as source:
        print("\nlistening... speak clearly into mic.")
        r.adjust_for_ambient_noise(source, duration=0.2)
        audio = r.listen(source)
    print("no longer listening.\n")

    try:
        user_input = r.recognize_google(audio)
        print(f"{user_name}: {user_input}")
    except sr.UnknownValueError:
        print("无法识别语音,请重新说话")
        continue
    except sr.RequestError as e:
        print(f"语音识别服务请求失败: {e}")
        continue

    prompt = f"{user_name}: {user_input}\n{bot_name}:"
    conversation += prompt

    try:
        response = openai.Completion.create(
            engine="text-davinci-002",
            prompt=conversation,
            max_tokens=100,
            temperature=0.7,
            stop=[f"\n{user_name}:"]
        )
        response_str = response["choices"][0]["text"].strip()
        print(f"{bot_name}: {response_str}")
        
        conversation += f"{response_str}\n"
        
        engine.say(response_str)
        engine.runAndWait()
    except Exception as e:
        print(f"OpenAI API调用出错: {e}")
        continue

关键修复点说明

  1. 细化语音识别异常处理:区分无法识别语音、服务请求失败两种异常,给出明确提示,避免静默跳过。
  2. 修正回复内容处理:直接提取模型返回的文本并去除首尾空白,删除错误的分割操作,保留完整回复。
  3. 添加API异常捕获:捕获OpenAI调用中的所有异常并打印错误信息,方便排查问题。
  4. 优化模型参数:添加temperature控制回复随机性,添加stop参数让模型在生成完Ava的回复后自动停止,避免生成无关内容。
  5. 增加调试输出:打印识别到的用户输入,确认语音识别环节是否正常。

额外排查建议

  • 先测试语音识别功能:确认user_input能正确打印你说的内容,排除语音输入环节的问题。
  • 单独测试OpenAI调用:暂时注释语音相关逻辑,手动输入user_input验证模型是否返回内容。

内容的提问来源于stack exchange,提问作者DZR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:20:32