] pawzochat.services.chat: LLM cal1failed for persona-e620fd67 Traceback (most r...
🚨 错误信息
httpx:HTTP Request: POST https://paw.vlchat.cc/v1/chat/completions “HTTP/1.1 200OK"
2026-05-02 19:00:31
.[ERROR]
pawzochat.services.chat: LLM cal1failed for persona-e620fd67
Traceback (most recent calilast):
File
"pawzochat(services\chat. py",
line 137, in process_round
File
“pawzochat\1l1m'providers(openai_compat.py"1ine76, in chat
AttributeError:
str'
object has no attribute
’choices'
2026-05-0219:00:31 [ERROR]
pawzochat.services.message_queue:LLM调用失败persona-e620fd67
Traceback
(most recent call
last):
File
“pawzochat(services(message_queue.py"
line 4l6, in _process
File
pawzochat(services)chat.py"
line 137, in process_round
File
“pawzochat(11m'providers\openai_compat. py"
line 76, in chat
AttributeError:
str'
object has no attribute
choices'
🤖 AI解决方案
报错分析报告
1.错误翻译
原文:AttributeError: 'str' object has no attribute 'choices'
译文:属性错误:字符串对象没有"choices"属性
2. 原因分析
choices属性的响应对象被错误赋值为字符串(如HTTP响应原始文本)pawzochat\llm\providers\openai_compat.py第76行chat函数choices属性导致崩溃,说明HTTP响应未正确解析为JSON对象3. 解决方案
python
pawzochat\llm\providers\openai_compat.py 修复代码
import httpxdef chat(self, messages: list, kwargs):
payload = {"model": self.model, "messages": messages, kwargs}
with httpx.Client() as client:
response = client.post(self.base_url, json=payload)
response.raise_for_status() # 检查HTTP错误状态
# 关键修复:解析JSON而非使用文本字符串
resp_data = response.json() # 转换为字典对象
return resp_data # 返回含choices键的字典
python
调用处修复(原line76附近)
原错误代码:result = response.choices
修复后:
result = resp_data["choices"] # 访问字典键而非对象属性
4.️ 预防措施
response.json()解析为结构化数据,禁止直接使用response.textmypy)或运行时断言(isinstance(resp_data, dict))验证数据类型-
httpx内置JSON解析器-
pydantic模型验证响应结构-
mypy类型检查工具---
请提供您的报错信息: