SDK for interacting with RagFlow API
npm install @qzsy/ragflow-sdkRagFlow SDK是一个用于与RagFlow API交互的TypeScript库,提供了简单易用的接口来管理和使用RagFlow的RAG(Retrieval-Augmented Generation)功能。
fs模块的直接依赖/docs改为/documents``bash`
npm i @qzsy/ragflow-sdk
`typescript
import { RagFlowClient } from 'ragflow-sdk';
// 初始化客户端
const client = new RagFlowClient({
baseUrl: 'http://your-ragflow-server',
apiKey: 'your-api-key'
});
// 创建数据集
async function createDataset() {
const dataset = await client.datasets.create({
name: 'test_dataset'
});
console.log('Created dataset:', dataset);
return dataset;
}
// 上传文档 - 方法1:使用Buffer对象
async function uploadDocumentWithBuffer(datasetId: string) {
// 注意:如果使用文件路径,需要在您的代码中导入fs模块
import * as fs from 'fs';
import * as path from 'path';
const filePath = './sample.pdf';
const fileBuffer = fs.readFileSync(filePath);
const fileName = path.basename(filePath);
const fileObject = {
content: fileBuffer,
filename: fileName
};
const document = await client.documents.upload(datasetId, fileObject);
console.log('Uploaded document:', document);
return document;
}
// 上传文档 - 方法2:直接使用Buffer
async function uploadDocumentWithRawBuffer(datasetId: string) {
import * as fs from 'fs';
const fileBuffer = fs.readFileSync('./sample.pdf');
const document = await client.documents.upload(datasetId, fileBuffer);
console.log('Uploaded document:', document);
return document;
}
// 解析文档
async function parseDocument(datasetId: string, documentId: string) {
await client.documents.parse(datasetId, [documentId]);
console.log('Document parsing started');
}
// 检索
async function retrieveChunks(datasetId: string) {
const chunks = await client.retrieval.retrieve({
question: '什么是RagFlow?',
dataset_ids: [datasetId]
});
console.log('Retrieved chunks:', chunks);
return chunks;
}
// 聊天完成
async function chatCompletion(chatId: string) {
const completion = await client.chat.createCompletion(chatId, {
model: 'DeepSeek-V3', // 根据实际可用模型调整
messages: [
{ role: 'system', content: '你是一个有用的AI助手' },
{ role: 'user', content: '介绍一下RagFlow的功能' }
],
stream: false
});
console.log('Completion:', completion);
return completion;
}
// 流式聊天
async function streamChatCompletion(chatId: string) {
await client.chat.createCompletion(
chatId,
{
model: 'DeepSeek-V3', // 根据实际可用模型调整
messages: [
{ role: 'system', content: '你是一个有用的AI助手' },
{ role: 'user', content: '请详细介绍RagFlow的主要功能和应用场景' }
],
stream: true
},
(data) => {
if (data.choices && data.choices[0].delta?.content) {
const content = data.choices[0].delta.content;
process.stdout.write(content);
}
}
);
}
// 使用聊天助手
async function useChatAssistant() {
// 获取聊天助手列表
const assistants = await client.chatAssistants.list();
if (assistants.length > 0) {
const assistant = assistants[0];
// 创建会话
const session = await client.chatAssistants.createSession(assistant.id, {
name: '测试会话'
});
// 发送问题
const response = await client.chatAssistants.converse(
assistant.id,
{
question: '你能简单介绍一下你是什么助手吗?',
session_id: session.id,
stream: false
}
);
console.log('Assistant response:', response.answer);
// 删除会话
await client.chatAssistants.deleteSessions(assistant.id, [session.id]);
}
}
// 使用智能代理
async function useAgent() {
// 获取代理列表
const agents = await client.agents.list();
if (agents.length > 0) {
const agent = agents[0];
// 创建会话
const session = await client.agents.createSession(agent.id);
// 发送问题
const response = await client.agents.converse(
agent.id,
{
question: '你好,你是什么代理?',
session_id: session.id,
stream: false
}
);
console.log('Agent response:', response.answer);
// 删除会话
await client.agents.deleteSessions(agent.id, [session.id]);
}
}
`
SDK提供以下主要功能模块:
- datasets: 数据集管理documents
- : 文档管理chunks
- : 文本块管理retrieval
- : 检索功能chat
- : 聊天完成chatAssistants
- : 聊天助手管理agents`: 智能代理管理
-
MIT