是否一定要按照coze官方API文檔格式調用?
不一定:以下面代碼為例(給了注釋)
@app.route('/compare_models', methods=['POST'])
def compare_models():print("收到 compare_models 請求!")
#begin-這一部分代碼作用:從前端接收參數 也就是前端輸入的數據通過按鈕發送data = request.jsonmodel1 = data.get('model1', '')model2 = data.get('model2', '')scene = data.get('scene', '')budget = data.get('budget', '')requirement = data.get('requirement', '')
#end-user_message = (f"請幫我綜合對比兩個大模型,并結合參數給出推薦和詳細分析:\n"f"模型一:{model1}\n"f"模型二:{model2}\n"f"應用場景:{scene}\n"f"預算:{budget}元\n"f"性能要求:{requirement}\n""請說明理由,逐條對比優劣,最后推薦一個更合適的模型,并說明推薦理由。請用自然語言詳細分點方式直接文本回復,不要以插件或JSON結構返回,不要只給出總結。")#begin- 構造Coze官方API所需的請求體(官方API調用文檔:https://www.coze.cn/open/docs/developer_guides/chat)headers = {'Authorization': f'Bearer {COZE_API_KEY}','Content-Type': 'application/json'}payload = {'bot_id': COZE_BOT_ID,'user': 'user_001','query': user_message}#end-#begin- 用 requests轉發到 Coze官方APIresponse = requests.post(COZE_API_URL, headers=headers, json=payload)data = response.json()#end-#begin- 解析官方API的返回結果messages = data.get("messages", [])#end-print("COZE messages:", messages)collected_chunks = []final_reply = ""for msg in messages:raw_content = msg.get("content", "")try:parsed_outer = json.loads(raw_content)msg_type = parsed_outer.get("msg_type", "")inner_data_str = parsed_outer.get("data", "")if msg_type != "knowledge_recall":final_reply = parsed_outer.get("content", raw_content)breakelse:if inner_data_str:parsed_inner = json.loads(inner_data_str)chunks = parsed_inner.get("chunks", [])if isinstance(chunks, list) and len(chunks) > 0:for chunk in chunks:collected_chunks.append(chunk.get("content", ""))except (ValueError, json.JSONDecodeError):final_reply = raw_contentbreakif not final_reply and collected_chunks:final_reply = "".join(collected_chunks)if not final_reply:final_reply = "對不起,暫時無法獲取有效回復。"# 結構化內容處理try:parsed = json.loads(final_reply)if isinstance(parsed, dict):if 'arguments' in parsed and 'keyword' in parsed['arguments']:final_reply = parsed['arguments']['keyword']elif 'content' in parsed:final_reply = parsed['content']else:final_reply = json.dumps(parsed, ensure_ascii=False, indent=2)except Exception:pass# 統一做文本清理final_reply = re.sub(r'(\^*來源[::]?.*?\^*)', '', final_reply, flags=re.IGNORECASE)final_reply = final_reply.strip()return jsonify({'reply': final_reply})