coze-dev / coze-dev/coze-py

conversation_id 未设置时导致请求参数decode失败

Open
#308 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
492
Forks
122
PR merge metrics
No merged PRs in 30d

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
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'}

### 修复建议
1. sdk做处理,规避无效参数传递
2. coze-server处理,兼容无效参数

Contributor guide

Open the contributing guide

Research direction

Start with coze.chat._create() and inspect how its params reach request.send and request.as_httpx. Reproduce the supplied chat.create call, then verify that omitting conversation_id does not produce an empty query parameter and that the reported 400 response no longer occurs.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.