mirror of
https://git.mirrors.martin98.com/https://github.com/infiniflow/ragflow.git
synced 2025-04-23 22:50:17 +08:00
Fix bugs in api and add examples (#3353)
### What problem does this PR solve? Fix bugs in api. Add simple examples for api. ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) - [x] New Feature (non-breaking change which adds functionality) --------- Co-authored-by: liuhua <10215101452@stu.ecun.edu.cn> Co-authored-by: Kevin Hu <kevinhu.sh@gmail.com>
This commit is contained in:
parent
62a9afd382
commit
567a7563e7
@ -487,12 +487,14 @@ def list(tenant_id):
|
|||||||
"""
|
"""
|
||||||
id = request.args.get("id")
|
id = request.args.get("id")
|
||||||
name = request.args.get("name")
|
name = request.args.get("name")
|
||||||
kbs = KnowledgebaseService.query(id=id, name=name, status=1)
|
if id:
|
||||||
if not kbs:
|
kbs = KnowledgebaseService.get_kb_by_id(id,tenant_id)
|
||||||
return get_error_data_result(message="The dataset doesn't exist")
|
if not kbs:
|
||||||
for kb in kbs:
|
return get_error_data_result(f"You don't own the dataset {id}")
|
||||||
if not KnowledgebaseService.accessible(kb_id=kb.id,user_id=tenant_id):
|
if name:
|
||||||
return get_error_data_result(message=f"You don't own the dataset {kb.id}")
|
kbs = KnowledgebaseService.get_kb_by_name(name,tenant_id)
|
||||||
|
if not kbs:
|
||||||
|
return get_error_data_result(f"You don't own the dataset {name}")
|
||||||
page_number = int(request.args.get("page", 1))
|
page_number = int(request.args.get("page", 1))
|
||||||
items_per_page = int(request.args.get("page_size", 30))
|
items_per_page = int(request.args.get("page_size", 30))
|
||||||
orderby = request.args.get("orderby", "create_time")
|
orderby = request.args.get("orderby", "create_time")
|
||||||
|
@ -189,6 +189,22 @@ class KnowledgebaseService(CommonService):
|
|||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@DB.connection_context()
|
||||||
|
def get_kb_by_id(cls, kb_id, user_id):
|
||||||
|
kbs = cls.model.select().join(UserTenant, on=(UserTenant.tenant_id == Knowledgebase.tenant_id)
|
||||||
|
).where(cls.model.id == kb_id, UserTenant.user_id == user_id).paginate(0, 1)
|
||||||
|
kbs = kbs.dicts()
|
||||||
|
return list(kbs)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@DB.connection_context()
|
||||||
|
def get_kb_by_name(cls, kb_name, user_id):
|
||||||
|
kbs = cls.model.select().join(UserTenant, on=(UserTenant.tenant_id == Knowledgebase.tenant_id)
|
||||||
|
).where(cls.model.name == kb_name, UserTenant.user_id == user_id).paginate(0, 1)
|
||||||
|
kbs = kbs.dicts()
|
||||||
|
return list(kbs)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@DB.connection_context()
|
@DB.connection_context()
|
||||||
def accessible4deletion(cls, kb_id, user_id):
|
def accessible4deletion(cls, kb_id, user_id):
|
||||||
|
@ -187,7 +187,9 @@ curl --request DELETE \
|
|||||||
--url http://{address}/api/v1/datasets \
|
--url http://{address}/api/v1/datasets \
|
||||||
--header 'Content-Type: application/json' \
|
--header 'Content-Type: application/json' \
|
||||||
--header 'Authorization: Bearer <YOUR_API_KEY>' \
|
--header 'Authorization: Bearer <YOUR_API_KEY>' \
|
||||||
--data '{"ids": ["test_1", "test_2"]}'
|
--data '{
|
||||||
|
"ids": ["test_1", "test_2"]
|
||||||
|
}'
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Request parameters
|
#### Request parameters
|
||||||
@ -243,7 +245,7 @@ curl --request PUT \
|
|||||||
--header 'Authorization: Bearer <YOUR_API_KEY>' \
|
--header 'Authorization: Bearer <YOUR_API_KEY>' \
|
||||||
--data '
|
--data '
|
||||||
{
|
{
|
||||||
"name": "updated_dataset",
|
"name": "updated_dataset"
|
||||||
}'
|
}'
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -1152,7 +1154,7 @@ curl --request PUT \
|
|||||||
--data '
|
--data '
|
||||||
{
|
{
|
||||||
"content": "ragflow123",
|
"content": "ragflow123",
|
||||||
"important_keywords": [],
|
"important_keywords": []
|
||||||
}'
|
}'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1379,7 +1379,7 @@ assistant = assistant[0]
|
|||||||
session = assistant.create_session()
|
session = assistant.create_session()
|
||||||
|
|
||||||
print("\n==================== Miss R =====================\n")
|
print("\n==================== Miss R =====================\n")
|
||||||
print(assistant.get_prologue())
|
print("Hello. What can I do for you?")
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
question = input("\n==================== User =====================\n> ")
|
question = input("\n==================== User =====================\n> ")
|
||||||
|
52
example/http/simple_example.sh
Normal file
52
example/http/simple_example.sh
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#
|
||||||
|
# Copyright 2024 The InfiniFlow Authors. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Create a dataset
|
||||||
|
echo -e "\n-- Create a dataset"
|
||||||
|
curl --request POST \
|
||||||
|
--url http://localhost:9380/api/v1/datasets \
|
||||||
|
--header 'Content-Type: application/json' \
|
||||||
|
--header 'Authorization: Bearer ragflow-IzZmY1MGVhYTBhMjExZWZiYTdjMDI0Mm' \
|
||||||
|
--data '{
|
||||||
|
"name": "test"
|
||||||
|
}'
|
||||||
|
|
||||||
|
# Update the dataset
|
||||||
|
echo -e "\n-- Update the dataset"
|
||||||
|
curl --request PUT \
|
||||||
|
--url http://localhost:9380/api/v1/datasets/2e898768a0bc11efb46a0242ac120006 \
|
||||||
|
--header 'Content-Type: application/json' \
|
||||||
|
--header 'Authorization: Bearer ragflow-IzZmY1MGVhYTBhMjExZWZiYTdjMDI0Mm' \
|
||||||
|
--data '
|
||||||
|
{
|
||||||
|
"name": "updated_dataset"
|
||||||
|
}'
|
||||||
|
|
||||||
|
# List datasets
|
||||||
|
echo -e "\n-- List datasets"
|
||||||
|
curl --request GET \
|
||||||
|
--url http://127.0.0.1:9380/api/v1/datasets \
|
||||||
|
--header 'Authorization: Bearer ragflow-IzZmY1MGVhYTBhMjExZWZiYTdjMDI0Mm'
|
||||||
|
|
||||||
|
# Delete datasets
|
||||||
|
echo -e "\n-- Delete datasets"
|
||||||
|
curl --request DELETE \
|
||||||
|
--url http://localhost:9380/api/v1/datasets \
|
||||||
|
--header 'Content-Type: application/json' \
|
||||||
|
--header 'Authorization: Bearer ragflow-IzZmY1MGVhYTBhMjExZWZiYTdjMDI0Mm' \
|
||||||
|
--data '{
|
||||||
|
"ids": ["301298b8a0bc11efa0440242ac120006"]
|
||||||
|
}'
|
55
example/sdk/simple_example.py
Normal file
55
example/sdk/simple_example.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
#
|
||||||
|
# Copyright 2024 The InfiniFlow Authors. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
'''
|
||||||
|
The example is about CRUD operations (Create, Read, Update, Delete) on a dataset.
|
||||||
|
'''
|
||||||
|
|
||||||
|
from ragflow_sdk import RAGFlow
|
||||||
|
import sys
|
||||||
|
|
||||||
|
HOST_ADDRESS = "http://127.0.0.1"
|
||||||
|
API_KEY = "ragflow-IzZmY1MGVhYTBhMjExZWZiYTdjMDI0Mm"
|
||||||
|
|
||||||
|
try:
|
||||||
|
# create a ragflow instance
|
||||||
|
ragflow_instance = RAGFlow(api_key=API_KEY, base_url=HOST_ADDRESS)
|
||||||
|
|
||||||
|
# crate a dataset instance
|
||||||
|
dataset_instance = ragflow_instance.create_dataset(name="dataset_instance")
|
||||||
|
|
||||||
|
# update the dataset instance
|
||||||
|
updated_message = {"name":"updated_dataset"}
|
||||||
|
updated_dataset = dataset_instance.update(updated_message)
|
||||||
|
|
||||||
|
# get the dataset (list datasets)
|
||||||
|
dataset_list = ragflow_instance.list_datasets(id=dataset_instance.id)
|
||||||
|
dataset_instance_2 = dataset_list[0]
|
||||||
|
print(dataset_instance)
|
||||||
|
print(dataset_instance_2)
|
||||||
|
|
||||||
|
# delete the dataset (delete datasets)
|
||||||
|
to_be_deleted_datasets = [dataset_instance.id]
|
||||||
|
ragflow_instance.delete_datasets(ids=to_be_deleted_datasets)
|
||||||
|
|
||||||
|
print("test done")
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(str(e))
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user