CozeのAPIコールはウェブページでは明らかに動作しますが、Pythonでは失敗し、これはコミュニティでよくある状況です。 通常「ウェブページの方が強い」というわけではありませんが、ウェブ側とスクリプト側はまったく同じリクエストメソッドを使っていません。 特にストリーミングリターンを扱う場合、SSEはうまく処理できず、結果として「インターフェースが壊れている」ように見えます。
最もエラーが起こりやすい分野を見てみましょう
一つ目は住所の書き方が間違っていることです。 アドレス「0.0.0.0」はローカルリスニングにのみ適しており、クライアントリクエストアドレスとしては適していません。 もう一つは、ストリーミング応答がSSEに従って処理されておらず、スクリプトは通常のJSONを待っているだけだということです。 第三に、リクエストフィールドは似ていますが、パラメータ「bot_id」「user_id」「additional_messages」はページ側のコンテキストと完全に同じではありません。
なぜウェブページは動くのにスクリプトは動かないのでしょうか?
ウェブページは通常、認証、会話、ストリーミングイベント、フォローアップメッセージをカプセル化するのに役立ちます。 Pythonスクリプトはこれらのプロセスを自分で把握する必要があります。 公開版の誰かが遭遇したことがあります:ウェブページ上はすべて正常に見えるのに、スクリプト側はSSEイベントストリームを受け取り、行ごとに解析されていないためインターフェースが失敗したと判断します。
より安定したアプローチ
- ストリーミングイベントを扱いたくない場合は、まず「stream」をオフに設定してください。
- ストリーミングを使いたい場合は、「text/event-stream」の形式で一行ずつ解析し、最終回答として「response.text」だけを使うのはやめましょう。
- まずは実際のIPかドメイン名でリクエストし、アクセスアドレスとして「0.0.0.0」は使わないでください。
また、Python側やウェブ側からの「フォローアップ提案」も異なる場合があります。 それは例外ではなく、会話の流れの中で普通に追加されるメッセージです。 まずメインの返信とフォローアップを分けて考えれば、トラブルシューティングがずっと分かりやすくなります。
一文の結論
Coze APIのページは動作してもPythonが失敗する場合、通常はインターフェース自体が壊れているのではなく、アドレスの書き方が間違っていたり、SSEが解決されていない、またはリクエストコンテキストが整合していないのが原因です。 これら三つの要素を合わせれば、問題の所在は概ね特定できます。