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生成的解读结果 |
错误码
错误码 | 描述 |
---|---|
4001 | image_url不符合输入要求 |
4002 | query不能为空 |
429 | 当前排队数量过多,请稍后再试 |
500 | 服务器发生错误 |
5001 | image_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
请求参数
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
indexName | String | 是 | 用作数据库索引名称 |
响应参数
参数名 | 类型 | 描述 |
---|---|---|
message | String | 响应信息 |
code | String | 响应状态码 |
data | Object | 响应数据对象 |
data.acknowledged | Boolean | 创建请求是否被确认 |
data.shards_acknowledged | Boolean | 分片分配是否成功 |
data.index | String | 创建的记忆库唯一标识符索引Id,用于后续记忆存储、查询 |
注意事项
- indexName 将作为记忆库的索引名称,需确保符合索引命名规范
- 同一 indexName 只能创建一次,重复创建将返回错误
- 创建成功后即可开始存储该记忆库的记忆数据
请求示例
{
"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
请求参数
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
history | Array | 是 | 对话历史记录数组 |
userId | String | 是 | 用户唯一标识符 |
indexId | String | 是 | 记忆库唯一标识符 |
memo_type | Array | 是 | 存储记忆类型数组,可选值:['facts', 'summary', 'history'] |
history 数组项结构
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
role | String | 是 | 对话角色,可选值:'user'/'assistant' |
content | String | 是 | 对话内容 |
datetime | String | 是 | 对话时间,格式:ISO 8601 |
location_str | String | 否 | 位置描述文本 |
location | Object | 否 | 位置坐标信息 |
location.lat | Number | 否 | 纬度 |
location.lon | Number | 否 | 经度 |
响应参数
参数名 | 类型 | 描述 |
---|---|---|
message | String | 响应信息 |
code | String | 响应状态码 |
data | Object | 响应数据对象 |
data.fact_res | Array/null | 事实抽取结果 |
data.histo_res | Array/null | 历史记忆存储结果 |
data.summary_res | Array/null | 摘要存储结果 |
存储结果数组项结构
参数名 | 类型 | 描述 |
---|---|---|
memo_id | String | 记忆唯一标识符 |
total_memo_count | Number | 当前存储的总记忆数量 |
注意事项
-
fact_res
字段说明:- 当
memo_type
包含 'facts' 但返回空数组时,表示未抽取到事实片段 - 当
memo_type
不包含 'facts' 时,返回 null
- 当
-
位置信息(
location_str
和location
)为可选字段,但建议提供以增强记忆上下文 -
时间格式必须符合 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
请求参数
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
history | Array | 是 | 对话历史记录数组,建议长度为5,最后一个元素必须为用户query |
topk | String | 是 | 返回结果的数量限制,默认为2 |
userId | String | 是 | 用户唯一标识符 |
indexId | String | 是 | 记忆库唯一标识符 |
memo_type | Array | 是 | 搜索记忆类型数组,可选值:['facts', 'summary', 'history'] |
enable_geo_search | String | 否 | 是否启用地理位置搜索,可选值:"True"/"False" 默认:false |
enable_time_search | String | 否 | 是否启用时间维度搜索,可选值:"true"/"false" 默认:false |
history 数组项结构
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
role | String | 是 | 对话角色,可选值:'user'/'assistant' |
content | String | 是 | 对话内容 |
datetime | String | 是 | 对话时间,格式:ISO 8601 |
location_str | String | 否 | 位置描述文本 |
location | Object | 否 | 位置坐标信息 |
location.lat | Number | 否 | 纬度 |
location.lon | Number | 否 | 经度 |
响应参数
参数名 | 类型 | 描述 |
---|---|---|
message | String | 响应信息 |
code | String | 响应状态码 |
data | Object | 响应数据对象 |
data.facts | Array | 事实记忆查询结果 |
data.summary | Array | 摘要记忆查询结果 |
data.history | Array | 历史记忆查询结果 |
记忆查询结果项结构
参数名 | 类型 | 描述 |
---|---|---|
time | String/null | 记忆时间戳,格式:ISO 8601 |
content_v | String | 记忆内容 |
location_str | String/null | 位置描述文本 |
注意事项
- 地理位置搜索和时间维度搜索可以同时启用或单独启用
- 返回结果数量受
topk
参数限制 - 各类型记忆(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
}
}