是否一定要按照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})