-
Notifications
You must be signed in to change notification settings - Fork 98
Open
Description
测试代码
import os # noqa
from cozepy import Coze, TokenAuth, Message, ChatStatus, MessageContentType, ChatEventType, BotPromptInfo # noqa
from utils import generate_random_md5
coze = Coze(auth=TokenAuth(token="pat_xxxxx"), base_url="http://127.0.0.1:8888")
bot_id = "7533441535549566076"
user_id = "7533441969180114234"
coze.chat.create(bot_id=bot_id, user_id=user_id, additional_messages=[Message.build_user_question_text("How are you?")])
报错堆栈
[cozepy][WARNING][2025-08-01 16:04:14] request POST#http://127.0.0.1:8888/v3/chat failed, logid=None, code=400, msg=unable to decode '' as int64: strconv.ParseInt: parsing "": invalid syntax
Traceback (most recent call last):
File "/Users/wangbo/tingyun-python/coze-application/coze-chat.py", line 12, in <module>
coze.chat.create(bot_id=bot_id, user_id=user_id, additional_messages=[Message.build_user_question_text("How are you?")])
File "/Users/wangbo/tingyun-python/coze-application/.venv/lib/python3.12/site-packages/cozepy/chat/__init__.py", line 467, in create
return self._create(
^^^^^^^^^^^^^
File "/Users/wangbo/tingyun-python/coze-application/.venv/lib/python3.12/site-packages/cozepy/chat/__init__.py", line 659, in _create
return self._requester.request(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/wangbo/tingyun-python/coze-application/.venv/lib/python3.12/site-packages/cozepy/request.py", line 269, in request
return self.send(request)
^^^^^^^^^^^^^^^^^^
File "/Users/wangbo/tingyun-python/coze-application/.venv/lib/python3.12/site-packages/cozepy/request.py", line 394, in send
return self._parse_response(
^^^^^^^^^^^^^^^^^^^^^
File "/Users/wangbo/tingyun-python/coze-application/.venv/lib/python3.12/site-packages/cozepy/request.py", line 455, in _parse_response
raise CozeAPIError(code, msg, logid, debug_url)
cozepy.exception.CozeAPIError: code: 400, msg: unable to decode '' as int64: strconv.ParseInt: parsing "": invalid syntax, logid: None
问题定位
coze.chat._create()方法中对params有处理
def _create(
self,
*,
bot_id: str,
user_id: str,
stream: Literal[True, False],
additional_messages: Optional[List[Message]] = None,
custom_variables: Optional[Dict[str, str]] = None,
auto_save_history: bool = True,
meta_data: Optional[Dict[str, str]] = None,
conversation_id: Optional[str] = None,
parameters: Optional[Dict[str, Any]] = None,
enable_card: Optional[bool] = None,
**kwargs,
) -> Union[Chat, Stream[ChatEvent]]:
"""
Create a chat.
"""
url = f"{self._base_url}/v3/chat"
params = {
"conversation_id": conversation_id if conversation_id else None,
}
...
这会导致conversation_id为None时,依旧添加该params,该参数会一直传递,直到以下代码
coze.request.send
def send(
self,
request: HTTPRequest,
) -> Union[T, List[T], ListResponse[T], IteratorHTTPResponse[str], FileHTTPResponse, None]:
return self._parse_response(
method=request.method,
url=request.url,
response=self.sync_client.send(request.as_httpx, stream=request.stream),
cast=request.cast,
stream=request.stream,
data_field=request.data_field,
)
self.sync_client.send(request.as_httpx, stream=request.stream) url 值为 http://127.0.0.1:8888/v3/chat?conversation_id=
导致服务端报错
{'code': 400, 'msg': 'unable to decode '' as int64: strconv.ParseInt: parsing "": invalid syntax'}
修复建议
- sdk做处理,规避无效参数传递
- coze-server处理,兼容无效参数
Metadata
Metadata
Assignees
Labels
No labels