Skip to content

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

@wangbo0105

Description

@wangbo0105

测试代码

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

修复建议

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions