文因金融问答API是一款能够帮助您快速构建功能丰富、交互性强的金融问答机器人,目前提供公司、人物和行业等多个维度的基本信息查询,数据来源包括公开发布的上市公司公告、研报和新闻。
curl 'https://example.memect.cn/qaapi/qa/v2?qid=123' \
-H 'token: <your token>'
1 公司查询 通过文因金融问答API,可以查询上市A股企业和新三板企业的公司基本面信息,包括:财务数据(营业收入、净利润等,详情见附1)、财务变动原因、股价、市值、换手率、高管职位(不完全列表见附1)、子公司、产品、十大股东、欠款人(更多见附1)。数据主要来自上市企业和新三板企业的历年发布的公告。 示例:
* 四维图新的市值
* 四维图新的股价
* 四维图新的净利润
* 万科董事长
* 恒邦股份营收
2 行业查询 基于文因金融问答API,可以快速查找行业信息,目前支持的信息包括行业百科、行业上下游、行业市场规模。数据主要来自上市公司和新三板企业公告和近两年发布的研究报告。 示例:
* 计算机行业市场规模
* 人工智能市场规模
* 网络游戏上下游
* 钢化玻璃
3 人物查询 基于文因金融问答API,可以查询上市公司高管人物简历和关联关系,查询方式包括人名、公司+人名、公司+职位。数据主要来自上市公司和新三板企业公告。 示例:
* 万科董事长
* 万科王石
* 宋安澜
4 公司筛选 通过文因金融问答API,可以通过自然语言进行公司筛选和搜索,目前支持的筛选条件包括:行业(细分行业、概念)、板块(新三板、A股)、地区(行政区域规划)。支持按照财务指标和市值等信息进行排序。 示例:
* 浦东新区的公司
* 浦东新区的体育公司
* 浦东新区的新三板公司
* 浦东新区的市值最高的新三板公司
* 浦东新区净利润最高的新三板公司
A | B | C | |
---|---|---|---|
API列表 | 请求类型 | 类型 | |
/qaapi/qa/v2 | Post | 收费 | |
/qaapi/qa/v2 | Get | 收费 |
1 创建问题 通过调用/qaapi/qa/{version} API的post请求,可以向机器人创建一个问题,因为机器人的处理是异步的,所以post请求后,并不会马上返回对应的答案,而是返回一个对应的问题id,这个问题id是用户用来获取问题答案的唯一标识,用户注意在本地保管好。
A | B | C |
---|---|---|
参数 | 说明 | 示例 |
授权 | 必须,详情参见授权部分 | |
question | 必须,需要查询的问题 | 万科王石 |
curl 'https://example.memect.cn/qaapi/qa/v2' \
-H 'token: <your token>' \
-d '{
"question": "万科王石"
}'
curl -i -k -X POST 'https://memect0005.market.alicloudapi.com/qaapi/qa/v2' -H 'Authorization:APPCODE <your appcode>' -H 'Content-Type:application/json; charset=utf-8' --data '{
"question": "万科王石"
}' -H 'Content-Type:application/json; charset=UTF-8'
A | B | C |
---|---|---|
参数 | 说明 | 示例 |
qid | 问题id,用来标识问题,在获取问题的任何信息都需要提供该id |
{
"errCode": 0,
"response": {
"qid": "15110116921533"
}
}
2 获取答案 通过调用/qaapi/qa/{version} 接口的get请求,可以向机器人查询对应问题的答案和状态。
A | B | C |
---|---|---|
参数 | 说明 | 示例 |
授权 | 必须,详情参见授权部分 | |
qid | 必须,通过该API的post方法获取 |
curl 'https://example.memect.cn/qaapi/qa/v2?qid=<your qid>' \
-H 'token: <your token>'
curl -i -k --get --include 'https://memect0005.market.alicloudapi.com/qaapi/qa/v2?qid=15143619627860' -H 'Authorization:APPCODE <your appcode>'
A | B | C |
---|---|---|
参数 | 说明 | 示例 |
answer | 列表,返回的问题列表 | 见答案格式说明部分 |
cost | 数值,回答问题时间 | 0.01 |
suggestion | 列表,查询建议 | "万科的董事长", "万科财务总监" |
score | 数值,标识问题回答的可信度,当该值小于1时,说明机器人对问题理解或者回答有问题 | 0.234 |
is_finished | 布尔值,标识机器人是否全部回答完。true标识全部回答完,false标识没有全部回答完。 | TRUE |
question_type | 字符串,用于标注问题分类,目前支持两种分类:chat和query;考虑到query分类会进一步细化,所以建议使用chat来对标注问题类型。 | chat |
content | 列表,每个元素都以字典形式存在,元素顺序表示答案出现顺序,在前的表示先出现的答案。content中的元素会包括以下几种类型:answer、full_report、image_url、data、report。详细说明见下文 “答案数据格式介绍” | 见下方代码演示 |
answer_logic | 布尔值,用来说明是否有真正意义上回答这个问题,还是给出了没有答案的返回。 | TRUE/ FALSE |
{
"errCode": 0,
"response": {
"cost ": 0.1,
"score": 1,
"suggestion ": [],
"is_finished": true,
"question_type":"query",
"content": [
{
"answer": [
"郁亮先生,1965年出生,汉族,中国国籍,郁亮先生,1965年出生,郁先生1990年加入万科,1994年起任公司董事,1996年任公司副总经理,1999年任公司常务副总经理兼财务负责人,2001年起任公司总裁至今。加入万科之前,郁先生曾供职于深圳外贸集团。郁先生目前兼任中城联盟投资管理股份有限公司董事,曾任上海美特斯邦威服饰股份有限公司(深圳证券交易所上市公司,股票代码:002269)独立董事。"
]
}
]
}
}
3 答案数据格式介绍 答案是指获取到的答案数据中被content包围起来的部分,这部分以列表形式存在,一般包含一到多个元素,其中每一个元素包含一个到多个不同的键。
A | B | C |
---|---|---|
键名 | 类型 | 说明 |
answer | 列表 | 列表中的每个元素都是字符串,每一个都是一个自然段落,开发者可以将这些段落合并起来,也可以分开展示。 |
full_report | 字典 | PDF报告链接,其中包含两个key:url和name,url是表示这份报告的链接,name表示这份报告的文件名。开发者可以直接修改链接中的pdf后缀为pptx获取ppt报告。 |
image_url | 字符串 | 表示一张图片,开发者可以通过这个链接获取图片。这里的链接如果是不完整的,开发者可以自行使用https://example.memect.cn 拼一个完整的链接。 |
report | 字符串 | 表示data数据的purple id,可以根据这个id来拼接 一个完整的链接重新获取这份报告的数据,一般用来生成可分享的报告页面和图片二维码。与data键共同存在。拼接方法为:https://example.memect.cn/getanswer/ |
data | 字典 | 与report键共同存在。数据用来渲染一份报告,包括以下键:layout、data、title、notice。layout和data都是列表,而且等长。layout中的对应的字符串表示data中对应元素的展现方式。详情见报告数据格式介绍。title是这份报告的标题。notice是这份报告中出现时,bot在聊天界面出现的回答(即answer的内容),此处方便开发者在分享页面使用。 |
answer示例
"content": [
{
"answer": [
"万科A的挂牌日期是1991年01月29日。"
]
}
]
full_report示例
"content": [
{
"full_report": {
"url": "https://example.memect.cn/6e992d98f45f/a.pdf",
"name": "万科A(000002)_文因互联_一键生成报告_20171124.pdf"
}
}
]
Image_url示例
"content": [
{
"image_url": "/qaapi/static/5c7cd5530f.png"
}
]
report和data示例
"content": [
{
"answer": [
"万科的高管有哪些"
],
"report": "sadasdasdas",
"data": {
"layout": [
"text"
],
"data": [
[
"你好"
]
],
"title": "这是报告页",
"notice": "万科A从业务属性判断,类似的A股企业有中国宝安(000009)"
}
}
]
4 报告数据格式介绍 报告数据指答案数据介绍中的data中的layout和data的说明。以下两个表格分别说明layout和data分别有哪些类型。
A | B | C |
---|---|---|
类型 | 值类型 | 说明 |
table | 字典 | 表格 |
middletable | 字典 | 表格,下一版将弃用,这类型和table的展现方式一样 |
text | 列表 | 文本 |
chart | 字典 | 图表 |
mschart | 字典 | 图表,下一版将弃用。 |
logic | 字典 | 用来展示一些小的逻辑推理结果 |
data类型说明
table是一个字典类型的数据,包括以下键:
A | B | C |
---|---|---|
键 | 类型 | 说明 |
head | 字符串列表 | 每个元素表示表头显示的字符串 |
rows | 列表 | 每个元素是一个列表,子列表中的每个元素作为单元格显示内容 |
align | 字符串列表 | 每个元素用来建议开发者每列如何水平对齐,包括left、center、right三个对齐方式 |
width | 数值列表 | 每个元素用来建议开发者每一列的宽度,这个宽度仅表示比例,开发者需要根据比例自行计算 |
height | 数值列表 | 每个元素建议 |
merge | 列表 | 表示该合并的单元格,每个元素都是列表,每个列表四个元素,分别表示起始行、终止行、起始列、终止列(坐标从0开始)。 |
示例:
{
"rows": [
[
"",
"收入(亿元)",
"占比(%)"
],
[
"房地产",
"655.23",
"95.62"
],
[
"物业管理",
"29.99",
"4.38"
]
],
"head": [
"",
"2017-06-30",
"2017-06-30"
],
"width": [
1.4,
3.7,
3.1
],
"merge": [
[0, 1, 0, 0]
]
}
与table一致,会在下一版本中弃用。
元素是字符串或字符串组成的列表,每一个字符串是一段应该展示的文本。
略
与chart一致,会在下一版中弃用。
略
5 错误码说明: 返回数据
* errCode
* 数值,数值为0时表示请求正确。
* 表示返回的错误码
* response
* 字典
* 返回内容
A | B | C |
---|---|---|
错误代码 | 详细描述 | 状态码 |
0 | 请求成功 | 200 |
1000 | 用户未授权 | 401 |
1001 | 非法参数 | 400 |
1002 | 没有找到请求的资源 | 404 |
1003 | 数据库错误 | 400 |
1004 | 解析 json 失败 | 400 |
9000 | 系统错误,比如请求了无效的方法等 | 400 |
9999 | 未知错误 | 400 |