当前位置: 首页 > news >正文

coze智能体后端接入问题:

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

相关文章:

  • 某水表量每15分钟一报,然后某天示数清0了,重新报示值了 ,如何写sql 计算每日水量
  • SQL进阶之旅 Day 19:统计信息与优化器提示
  • django blank 与 null的区别
  • Shell编程核心符号与格式化操作详解
  • Skia如何绘制几何图形
  • 使用xdocreport导出word
  • 【QT常用技术讲解】多线程执行后台命令行的两种方式(后台运行和返回打印信息)
  • API是什么意思?如何实现开放API?
  • 惊艳呈现:探索数据可视化的艺术与科学
  • 嵌入式开发之STM32学习笔记day21
  • 软件功能模块归属论证方法
  • C++中的概念(Concepts)
  • C++.OpenGL (11/64)材质(Materials)
  • Spring Boot 实现流式响应(兼容 2.7.x)
  • 【Redis】哨兵模式
  • 【C语言】统计孪生素数对高效解法
  • vsCode使用本地低版本node启动配置文件
  • 1panel面板中部署SpringBoot和Vue前后端分离系统 【图文教程】
  • 解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
  • 氛围编程时代来临:本地化智能分析破解老项目 AI 编程困局
  • 自动推广工具/seo优化教学视频
  • 如何进行一个网站建设/建立企业网站步骤
  • 做公司网站员工保险/苏州网站外包
  • 客户跟进系统 免费/拼多多关键词优化是怎么弄的
  • 软件开发外包公司靠谱吗/肇庆seo按天计费
  • 工业园区管委会网站建设方案/网店推广实训系统