RAGflow Agent api接口调用

一、概述

在上一篇文章中,介绍了text-to-sql,使用RAGflow Agent实现的。在业务系统中,需要调用它。

但是在Agent页面,没有相关API调用文档。

注意:RAGflow只有一个API调用设置

这里面,只是介绍了一部分API接口,显示并不完整。

官方API完整文档,链接:https://ragflow.io/docs/dev/http_api_reference

二、Agent API

官方文档链接:https://ragflow.io/docs/dev/http_api_reference#converse-with-agent

注意:调用text-to-sql agent的api接口,分2个步骤:

1. 请求api接口拿到session_id

2. 正式请求api接口,携带session_id,就可以正常拿到返回结果了。

完整python代码如下:

import requests
import json

API_HOST = "http://10.44.32.14:8081"
API_KEY = "ragflow-U2N***"
AGENT_ID = "002b4af814f411f0a9a80242c0a83006"
question = "成绩表中有多少条记录"

# 请求url
url = API_HOST + "/api/v1/agents/" + AGENT_ID + "/completions"
# print(url)

# 自定义请求头
headers = {
    "Authorization": "Bearer %s" % API_KEY,
    "Content-Type": "application/json",
}


class AgentStreamResponse:
    def __init__(self):
        pass

    def get_session_id(self):
        """
        获取会话 ID
        """
        data = {"id": AGENT_ID}
        response = requests.post(url, data=data, headers=headers)
        try:
            line_list=[]
            with requests.post(
                url, json=data, headers=headers, stream=True, timeout=30
            ) as response:
                if response.status_code == 200:
                    for line in response.iter_lines():
                        if line:  # 过滤掉空行
                            # print(line.decode("utf-8"))
                            line_list.append(line.decode("utf-8"))
                else:
                    print(f"请求失败,状态码: {response.status_code}")
                    return False
            
            # print("line_list",line_list)

            first_line=line_list[0]
            # 提取data内容
            line_row=first_line.split("data:")[1]
            # json解析
            line_dict=json.loads(line_row)
            # 获取session_id
            session_id=line_dict["data"]["session_id"]
            return session_id
        except requests.exceptions.RequestException as e:
            print(f"请求错误: {e}")
            return False

    def get_stream_data(self):
        """
        获取流式数据
        """
        try:
            session_id = self.get_session_id()
            data = {
                "id": AGENT_ID,
                "question": question,
                "stream": "true",
                "session_id": session_id,
            }
            with requests.post(
                url, json=data, headers=headers, stream=True, timeout=30
            ) as response:
                if response.status_code == 200:
                    for line in response.iter_lines():
                        if line:  # 过滤掉空行
                            print(line.decode("utf-8"))
                else:
                    print(f"请求失败,状态码: {response.status_code}")
                    return False
        except requests.exceptions.RequestException as e:
            print(f"请求错误: {e}")
            return False


if __name__ == "__main__":
    agent_stream_response = AgentStreamResponse()
    agent_stream_response.get_stream_data()

注意,修改上面代码,红色部分的几个参数变量。

参数说明:

API_HOST = "http://10.44.32.14:8081",API地址
API_KEY = "ragflow-U2N***",API key

AGENT_ID = "002b4af814f411f0a9a80242c0a83006"
点击agent,页面地址的id

 question = "成绩表中有多少条记录",要提问的问题。

执行python代码,效果如下:

注意:这里使用stream方式返回的,所以数据有点多。

使用postman调用,你会看到返回很多条数据

 倒数第2条,就是最终结果

可以看到sql就是:

SELECT COUNT(1) FROM score
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值