集成TeleBot与OpenAI API时遇两类错误的技术求助
问题解决步骤
错误原因及修复方案
1. NameError: name 'client' is not defined
代码里直接用了client但没初始化OpenAI客户端实例,补上初始化代码即可解决。
2. 聊天模型不支持completions端点
gpt-3.5-turbo-0613是聊天类模型,必须用chat.completions接口调用,同时参数格式要改成聊天消息数组,不能用单个prompt参数。
修改后的完整代码
import telebot import openai bot = telebot.TeleBot("0") # 初始化OpenAI客户端 client = openai.OpenAI(api_key="0") @bot.message_handler(content_types=['text']) def lalala(message): print(message.chat.title, message.chat.username) if message.chat.id == -1002097745017: if "@0" in message.text: message.text = message.text.replace("@0 ", "") # 调用聊天模型的专属接口 response = client.chat.completions.create( model="gpt-3.5-turbo-0613", messages=[{"role": "user", "content": message.text}], max_tokens=1000 ) # 按聊天模型的响应结构提取内容 full_response = response.choices[0].message.content.strip() lines = full_response.splitlines() for line in lines: try: bot.send_message(message.chat.id, line) except Exception as e: print(e) else: bot.send_message(message.chat.id, "work only - tg.com/123123") bot.polling(none_stop=True, interval=0)
关键修改点说明
- 新增
client = openai.OpenAI(api_key="0"),完成客户端初始化,解决client未定义问题。 - 把
client.completions.create替换为client.chat.completions.create,匹配聊天模型的接口要求。 - 参数从
prompt=message.text改为messages=[{"role": "user", "content": message.text}],符合聊天模型的消息格式规范。 - 响应提取逻辑从
response['choices'][0]['text']调整为response.choices[0].message.content.strip(),适配聊天模型的响应结构。
内容的提问来源于stack exchange,提问作者sdfsdf sdfsdf
相关产品推荐
相关产品推荐

