Skip to content

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

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions