智诊科技智诊科技

WiseDiag 智能体工作流

1. 接口概述

WiseDiag 智能健康系统为开发者提供强大的 AI 健康服务能力,支持以下三大核心功能:

功能任务标识说明
智能问诊聊天chat提供个性化健康咨询与建议
图片健康解读photo_read智能分析医学影像与健康相关图片
热量识别calories识别食物并计算营养成分

核心特性

  • 流式输出:实时接收 AI 响应内容
  • 个性化服务:基于用户健康档案提供定制化建议
  • 智能推荐:自动推荐相关健康产品与营养品
  • 多轮对话:支持通过 topic_id 实现上下文关联(2025.10.31 新增)

2. API 接入信息

请求地址

POST https://openapi.wisediag.com/v1/medicine/chat

请求头

Content-Type: application/json
Authorization: Bearer sk-xxxxxxxxxx

安全提醒:请妥善保管您的 API 密钥,切勿在客户端或前端代码中直接暴露


3. 请求参数详解

核心参数

参数名类型必填说明
modelString固定值:zzkj-chat
task_nameString任务类型:chat / photo_read / calories
messagesArray消息数组,格式:[{"role": "user", "content": "..."}]
💡 若不传入 system,将使用内置默认 system

图片相关参数

参数名类型必填说明
image_listArray-图片 URL 列表(最多 5 张)
⚠️ 仅在 photo_readcalories 任务下生效

会话管理参数

参数名类型必填说明
topic_idString-会话 ID,用于上下文管理
💡 使用说明
• 不传入时:不进行会话管理,需客户端自行拼接多轮对话
• 传入时:自动管理会话上下文,每次仅需传入一轮 user prompt
• 传入新 system 时:该 topic 整组会话的 system 将被更新
request_idString-请求唯一标识
💡 建议使用时间戳:str(int(time.time()*1000))
不传入时将自动生成
user_idString-用户唯一标识

健康档案参数

参数名类型必填默认值说明
member_idString--健康档案 ID(如:sample_1
use_health_recordInteger-1是否启用健康档案
1=启用 / 0=关闭

知识库与检索参数

参数名类型必填默认值说明
query_understandInteger-1是否进行查询理解分析
详见下方「参数联动规则」
local_DBInteger-1是否使用本地知识库
use_ch_medicineInteger-1是否启用中医知识库
需同时启用 local_DB
expert_DBInteger-1是否使用专家知识库
web_engineInteger-1是否开启医学专网搜索

其他参数

参数名类型必填默认值说明
product_openInteger-1是否开启商品推荐
1=开启 / 0=关闭
languageString-zh语言代码:zh / en / id / ar
⚠️ 非中文语言仅支持聊天任务

4. 参数联动规则

query_understand 参数重要说明

规则 1:启用查询理解时

query_understand = 1 时,必须至少启用一个知识源,否则不会生效。

正确配置示例

{
  "query_understand": 1,
  "local_DB": 1,
  "expert_DB": 1,
  "web_engine": 0
}

规则 2:关闭查询理解时

query_understand = 0 时,为保证召回质量与输出质量,所有知识库参数(local_DBexpert_DBweb_engine)将自动关闭,即使设置为 1 也不会生效。

正确配置示例

{
  "query_understand": 0,
  "local_DB": 0,
  "expert_DB": 0,
  "web_engine": 0
}

5. 请求示例

以下为标准请求代码模板(Python):

import requests
import json
import time

url = "https://openapi.wisediag.com/v1/medicine/chat"
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer sk-xxxxxxxxxx'  # 替换为你的实际API密钥
}

data = {
    "model": "zzkj-chat",
    "task_name": "chat",  # "photo_read"、"calories"、"chat"
    "image_list": [
        "https://example.com/image1.jpg"    # 仅在 photo_read 或 calories 任务下使用,需要替换真实链接
    ],
    "messages": [
        {"role": "user", "content": "我在平时的饮食中需要注意什么?"}
    ],

    # 系统参数
    "topic_id": "test_001",
    "request_id": str(int(time.time() * 1000)),
    "user_id": "",
    "member_id": "sample_1",

    # 检索相关
    "query_understand": 0,
    "local_DB": 0,
    "use_ch_medicine": 0,
    "expert_DB": 0,
    "web_engine": 0,

    # 健康档案
    "use_health_record": 1,

    # 推荐相关
    "product_open": 1,

    # 语言
    "language": "zh"
}

with requests.post(url, headers=headers, json=data, stream=True) as response:
    if response.status_code != 200:
        print(f"请求失败,状态码: {response.status_code}")
    else:
        think_text = ""
        text = ""
        products_text = ""

        for line in response.iter_lines():
            if line.decode('utf-8').split("data:")[-1].strip() == "[DONE]":
                break
            if line:
                response_data = json.loads(line.decode('utf-8').split("data:")[-1].strip())
                if response_data["type"] == "content":
                    content = response_data.get("content") or ""
                    reasoning = response_data.get("reasoning_content") or ""
                    print(content or reasoning, end="")
                    think_text += reasoning
                    text += content
                elif response_data["type"] == "products":
                    for p in response_data["data"]:
                        print("\n", p, "\n")
                        products_text += f"\n{p}\n"

        result = f"<think>{think_text}</think>\n{text}{products_text}"

6. 响应格式说明

接口采用流式输出模式,每次返回一行 JSON 数据:

响应类型

类型 1:内容输出

{
  "type": "content",
  "content": "模型回答内容...",
  "reasoning_content": "推理过程..."
}

类型 2:产品推荐

{
  "type": "products",
  "data": [
    {
      "product_name": "产品名称",
      "description": "产品描述",
      ...
    }
  ]
}

结束标识

流式输出结束时,会返回:

data: [DONE]

7. 健康档案示例

以下为 member_id = "sample_1" 的档案数据示例:

基础信息

  • 昵称:康小鹿
  • 性别:男
  • 年龄:32 岁
  • 身高:175.0 cm
  • 体重:53.0 kg
  • BMI:17.3(偏瘦)

既往史

会话时间发病时间疾病名称疾病状态治疗情况管理目标
2025-01-172025-01-17头痛未明确热敷额头、喝温水休息缓解头痛
2025-03-262025-03-26肚子疼未明确饮食调理、按摩放松缓解疼痛
2025-06-092025-06-09心慌胸闷未明确建议症状加重时就医缓解症状
2025-10-182025-10-18类风湿关节炎右手腕活动范围稍受限长期服用艾拉莫德片控制病情

其他史

  • 个人史:偶尔少量饮酒;每日爬楼梯约 100 层(运动量大)
  • 家族史:外婆有糖尿病;爷爷辈有心脏病
  • 过敏史:海鲜过敏;牛奶过敏
  • 社会史:家庭环境存在心理压力,持续焦虑倾向,自主神经紊乱,内分泌失调
  • 药物史:长期服用艾拉莫德片(类风湿关节炎治疗)

8. 重要注意事项

健康档案启用条件

健康档案功能需要同时满足以下条件才能生效:

  1. 设置 use_health_record = 1
  2. 提供有效的 member_id

启用后,AI 将结合用户档案信息提供个性化的饮食、运动、用药等建议。

健康档案动态更新功能

若需实现以下高级功能:

  • 根据历史会话内容实时更新健康档案信息
  • 在聊天中调用历史问诊详情或上下文内容

必须购买并启用「健康档案管理组件整套方案」

否则,系统仅使用静态健康档案(档案内容固定,不随会话更新)。

API 密钥安全

  • 请妥善保管您的 API 密钥(Authorization 字段)
  • 切勿在客户端或前端代码中直接暴露密钥
  • 建议通过后端服务器代理 API 请求

多语言支持

语言代码支持功能
中文zh所有功能(完整支持)
英文en仅支持聊天任务
印尼语id仅支持聊天任务
阿拉伯语ar仅支持聊天任务

流式响应处理

  • 每条返回数据均为独立的 JSON 行
  • 必须正确处理流式数据的解析
  • 输出结束标识为 data: [DONE]

9. 技术支持

如有任何问题或需要技术支持,请联系我们的开发者服务团队。


本页目录