目前AI文档解析是火的一塌糊涂,本着什么火学什么的态度,研究了一下,发现市面上已经有现成的API可以调用,下面整理了一下使用方法,供大家学习参考
API文档地址:api.atalk-ai.com
要实现AI文档解析功能分为三步
- 上传文档或文字进行解析
- 根据上传的文档进行会话
- 获取AI回答所采用的是文档中的那一部分
下面我来带大家一一实现
1、上传文档或文字进行解析
该接口会返回docsId后续我们会根据docsId去进行文档会话
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://api.atalk-ai.com/docs/upload',
headers: {'Content-Type': 'application/json', Accept: 'application/json'},
data: {fileUrl: 'string', fileName: 'string'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
接口返回数据格式如下
{
"code": 0,
"data": {
"docsId": 1252
},
"msg": "success"
}
2、根据上传的文档进行会话
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://api.atalk-ai.com/docs/chat',
headers: {'Content-Type': 'application/json', Accept: 'application/json'},
data: {
docId: 0,
question: 'string',
messages: [
{role: 'system', content: 'You are a helpful assistant.'},
{role: 'assistant', content: 'can i help you ?'},
{role: 'user', content: 'Hello!'}
],
model: 'gpt-3.5-turbo'
}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
如果需要问题以流式方式回答可以调用axios的onDownloadProgress方法,事例如下
request({
method: 'POST',
url: 'https://api.atalk-ai.com/docs/chat',
headers: {'Content-Type': 'application/json', Accept: 'application/json'},
data: {
docId: 0,
question: 'string',
messages: [
{role: 'system', content: 'You are a helpful assistant.'},
{role: 'assistant', content: 'can i help you ?'},
{role: 'user', content: 'Hello!'}
],
model: 'gpt-3.5-turbo'
},
responseType: 'stream',
onDownloadProgress: (res) => {
},
})
到此为止已经实现了基于文档的AI会话功能,如果你想要知道AI根据你的问题去检索了哪些数据,那么就可以调用下面的接口
回答来源追溯
该接口可以实现以下功能
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://api.atalk-ai.com/docs/sourceNodes',
headers: {'Content-Type': 'application/json', Accept: 'application/json'},
data: {docId: 0, question: 'string'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}