Med-OCR

请求地址

https://api.wisediag.com/med_ocr

输入格式说明

json示例

payload = {
    "image_url": [
        "https://pic.wisediag.com/zchat/file/70eaca4e-9825-451d-b6b2-82907f4dcf2b.png",
    ],
    "query": "请分析以上报告",
    "stream": True
}

参数说明

参数名称是否必须描述
query针对该医疗报告单,用户的提示词
image_url图片的URL列表,不可以为空,最大数量为5。
stream是否开启流式输出

输出格式说明

输出示例

{
  'time': '2025-02-11 16:54:20', 
  'query': '请你分析以上报告', 
  'image_url': ['https://pic.wisediag.com/zchat/file/70eaca4e-9825-451d-b6b2-82907f4dcf2b.png'], 
  'text': ['## 尿常规报告单'], 
  'is_report': [1], 
  'response': '这份报告提供了...'
}

参数说明

参数名称描述
time请求时间
query用户输入的提示词
image_url图片的URL列表
text图片中的文本信息,与image_url数量保持一致
is_report图片是否为医学相关,是为1,否为0,与image_url数量保持一致
response针对输入图片和提示词,wisediag生成的解读结果

错误码

错误码描述
4001image_url不符合输入要求
4002query不能为空
429当前排队数量过多,请稍后再试
500服务器发生错误
5001image_url无法访问,请检查
5002模型响应内部报错,请稍后再试

示例代码

import requests
import json

url = 'https://api.wisediag.com/med_ocr'
stream = True

payload = {
    "image_url": [
        "https://pic.wisediag.com/zchat/file/70eaca4e-9825-451d-b6b2-82907f4dcf2b.png",
    ],
    "query": "请分析以上报告",
    "stream": stream
}

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer $API_KEY"
}

try:
    response = requests.post(url, json=payload, headers=headers, stream=stream)
    response.raise_for_status()
except requests.HTTPError as http_err:
    try:
        error_data = response.json()
        print("请求错误:", error_data)
    except Exception as parse_err:
        print("请求错误:", http_err)
    exit(1)
except requests.RequestException as e:
    print("请求错误:", e)
    exit(1)


if stream:
    print("开始接收流式数据:")
    res = ""
    for line in response.iter_lines():
        if line:
            decoded_line = line.decode('utf-8')
            if decoded_line.startswith("data: "):
                data_str = decoded_line[len("data: "):]
                try:
                    data = json.loads(data_str)
                    print(data.get("response", ""), end="")
                    res += data.get("response", "")
                except json.JSONDecodeError as e:
                    print("JSON 解析错误:", e)
    data["response"] = res
    result = data
else:
    result = response.json()

print()

Silicon Memory

Endpoint: /memory/create

该接口用于创建新的记忆数据库,用于存储组织的对话记忆数据。

请求方法

POST

请求头

Content-Type: application/json
Authorization: Bearer $API_KEY

请求参数

参数名类型必填描述
indexNameString用作数据库索引名称

响应参数

参数名类型描述
messageString响应信息
codeString响应状态码
dataObject响应数据对象
data.acknowledgedBoolean创建请求是否被确认
data.shards_acknowledgedBoolean分片分配是否成功
data.indexString创建的记忆库唯一标识符索引Id,用于后续记忆存储、查询

注意事项

  1. indexName 将作为记忆库的索引名称,需确保符合索引命名规范
  2. 同一 indexName 只能创建一次,重复创建将返回错误
  3. 创建成功后即可开始存储该记忆库的记忆数据

请求示例

{
    "indexName": "YOUR_INDEX_NAME"
}

响应示例

{
    "message": "创建成功",
    "code": "200",
    "data": {
        "acknowledged": true,
        "shards_acknowledged": true,
        "index": "YOUR_INDEX_ID"
    }
}

Endpoint: /memory/store

该接口用于存储对话历史记忆,支持多种记忆存储类型。

请求方法

POST

请求头

Content-Type: application/json
Authorization: Bearer $API_KEY

请求参数

参数名类型必填描述
historyArray对话历史记录数组
userIdString用户唯一标识符
indexIdString记忆库唯一标识符
memo_typeArray存储记忆类型数组,可选值:['facts', 'summary', 'history']

history 数组项结构

参数名类型必填描述
roleString对话角色,可选值:'user'/'assistant'
contentString对话内容
datetimeString对话时间,格式:ISO 8601
location_strString位置描述文本
locationObject位置坐标信息
location.latNumber纬度
location.lonNumber经度

响应参数

参数名类型描述
messageString响应信息
codeString响应状态码
dataObject响应数据对象
data.fact_resArray/null事实抽取结果
data.histo_resArray/null历史记忆存储结果
data.summary_resArray/null摘要存储结果

存储结果数组项结构

参数名类型描述
memo_idString记忆唯一标识符
total_memo_countNumber当前存储的总记忆数量

注意事项

  1. fact_res 字段说明:

    • memo_type 包含 'facts' 但返回空数组时,表示未抽取到事实片段
    • memo_type 不包含 'facts' 时,返回 null
  2. 位置信息(location_strlocation)为可选字段,但建议提供以增强记忆上下文

  3. 时间格式必须符合 ISO 8601 标准,例如:"2025-02-16T12:00:00"

示例

请求示例

{
  "messages": [
    {
      "role": "user",
      "content": "你喜欢美式咖啡吗?我很喜欢",
      "datetime": "2025-02-16T12:00:00",
      "location_str": "上海市静安区",
      "location": {"lat": 31.23, "lon": 121.47}
    },
    {
      "role": "assistant",
      "content": "喜欢就好呀,我也很喜欢,打工人必备",
      "datetime": "2025-02-16T12:00:00",
      "location_str": "上海市静安区",
      "location": {"lat": 31.23, "lon": 121.47}
    }
  ],
  "userId": "user123",
  "indexId": "YOUR_INDEX_ID",
  "memo_type":"[\"facts\",\"summary\",\"history\"]"
}

响应示例

{
  "message": "success",
  "code": "200",
  "data": {
    "fact_res": [],
    "histo_res": [
      {
        "memo_id": "jObNHJUBNBz7Cam86xHC",
        "total_memo_count": 74
      },
      {
        "memo_id": "jebNHJUBNBz7Cam87BHI",
        "total_memo_count": 75
      }
    ],
    "summary_res": [
      {
        "memo_id": "jubNHJUBNBz7Cam87xHD",
        "total_memo_count": 76
      }
    ]
  },
  "usage": {
      "prompt_tokens": 32,
      "total_tokens": 209,
      "completion_tokens": 177
  }
}

Endpoint: /memory/query

该接口用于查询存储的对话记忆,支持多种记忆类型的检索以及地理位置和时间维度的搜索。

请求方法

POST

请求头

Content-Type: application/json
Authorization: Bearer $API_KEY

请求参数

参数名类型必填描述
historyArray对话历史记录数组,建议长度为5,最后一个元素必须为用户query
topkString返回结果的数量限制,默认为2
userIdString用户唯一标识符
indexIdString记忆库唯一标识符
memo_typeArray搜索记忆类型数组,可选值:['facts', 'summary', 'history']
enable_geo_searchString是否启用地理位置搜索,可选值:"True"/"False" 默认:false
enable_time_searchString是否启用时间维度搜索,可选值:"true"/"false" 默认:false

history 数组项结构

参数名类型必填描述
roleString对话角色,可选值:'user'/'assistant'
contentString对话内容
datetimeString对话时间,格式:ISO 8601
location_strString位置描述文本
locationObject位置坐标信息
location.latNumber纬度
location.lonNumber经度

响应参数

参数名类型描述
messageString响应信息
codeString响应状态码
dataObject响应数据对象
data.factsArray事实记忆查询结果
data.summaryArray摘要记忆查询结果
data.historyArray历史记忆查询结果

记忆查询结果项结构

参数名类型描述
timeString/null记忆时间戳,格式:ISO 8601
content_vString记忆内容
location_strString/null位置描述文本

注意事项

  1. 地理位置搜索和时间维度搜索可以同时启用或单独启用
  2. 返回结果数量受 topk 参数限制
  3. 各类型记忆(facts/summary/history)的返回格式相同,但内容特点不同:
    • facts: 单一事实陈述
    • summary: 对话摘要
    • history: 完整对话记录

响应示例

请求示例

{
  "history": [
    {
      "role": "user",
      "content": "你喜欢美式咖啡吗?我很喜欢",
      "datetime": "2025-02-16T12:00:00",
      "location_str": "上海市静安区",
      "location": {"lat": 31.23, "lon": 121.47}
    },
    {
      "role": "assistant",
      "content": "喜欢就好呀,我也很喜欢,打工人必备",
      "datetime": "2025-02-16T12:00:00",
      "location_str": "上海市静安区",
      "location": {"lat": 31.23, "lon": 121.47}
    }
  ],
  "userId": "user123",
  "indexId": "YOUR_INDEX_ID",
  "memo_type":"[\"facts\",\"summary\",\"history\"]"
}

响应示例

{
    "message": "success",
    "code": "200",
    "data": {
        "facts": [
            {
                "time": "2018-01-01T12:00:00",
                "content_v": "用户表达了对昆明的喜爱。",
                "location_str": "云南省昆明市五华区"
            },
            {
                "time": "2018-01-01T12:00:00",
                "content_v": "用户喜欢看西游记。",
                "location_str": "杭州市临平区"
            }
        ],
        "summary": [
            {
                "time": "2018-01-01T12:00:00",
                "content_v": "用户聊了对西游记的喜爱,AI表示赞同并分享了自己也喜欢看。",
                "location_str": "杭州市临平区"
            },
            {
                "time": null,
                "content_v": "用户聊了测试内容存储的可能性,AI表示不确定,建议实践验证。用户提议聊天,AI表示同意。",
                "location_str": null
            }
        ],
        "history": [
            {
                "time": null,
                "content_v": "用户: 来吧来吧,我们来聊聊天\nAI: 不错\n",
                "location_str": null
            },
            {
                "time": "2025-02-16T13:00:00",
                "content_v": "时间:2025-02-16T13:00:00\n用户: 我现在在测试一下没有地点可以存储吗\nAI: ok\n",
                "location_str": null
            }
        ]
    },
  "usage": {
      "prompt_tokens": 32,
      "total_tokens": 209,
      "completion_tokens": 177
  }
}

这个页面有帮助吗?