Skip to content

Commit

Permalink
Fix bugs in api and add examples (#3353)
Browse files Browse the repository at this point in the history
### 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 <[email protected]>
Co-authored-by: Kevin Hu <[email protected]>
  • Loading branch information
3 people authored Nov 12, 2024
1 parent 62a9afd commit 567a756
Show file tree
Hide file tree
Showing 6 changed files with 137 additions and 10 deletions.
14 changes: 8 additions & 6 deletions api/apps/sdk/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -487,12 +487,14 @@ def list(tenant_id):
"""
id = request.args.get("id")
name = request.args.get("name")
kbs = KnowledgebaseService.query(id=id, name=name, status=1)
if not kbs:
return get_error_data_result(message="The dataset doesn't exist")
for kb in kbs:
if not KnowledgebaseService.accessible(kb_id=kb.id,user_id=tenant_id):
return get_error_data_result(message=f"You don't own the dataset {kb.id}")
if id:
kbs = KnowledgebaseService.get_kb_by_id(id,tenant_id)
if not kbs:
return get_error_data_result(f"You don't own the dataset {id}")
if name:
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))
items_per_page = int(request.args.get("page_size", 30))
orderby = request.args.get("orderby", "create_time")
Expand Down
16 changes: 16 additions & 0 deletions api/db/services/knowledgebase_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,22 @@ def accessible(cls, kb_id, user_id):
return False
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
@DB.connection_context()
def accessible4deletion(cls, kb_id, user_id):
Expand Down
8 changes: 5 additions & 3 deletions docs/references/http_api_reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,9 @@ curl --request DELETE \
--url http://{address}/api/v1/datasets \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--data '{"ids": ["test_1", "test_2"]}'
--data '{
"ids": ["test_1", "test_2"]
}'
```

#### Request parameters
Expand Down Expand Up @@ -243,7 +245,7 @@ curl --request PUT \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--data '
{
"name": "updated_dataset",
"name": "updated_dataset"
}'
```

Expand Down Expand Up @@ -1152,7 +1154,7 @@ curl --request PUT \
--data '
{
"content": "ragflow123",
"important_keywords": [],
"important_keywords": []
}'
```

Expand Down
2 changes: 1 addition & 1 deletion docs/references/python_api_reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -1379,7 +1379,7 @@ assistant = assistant[0]
session = assistant.create_session()

print("\n==================== Miss R =====================\n")
print(assistant.get_prologue())
print("Hello. What can I do for you?")

while True:
question = input("\n==================== User =====================\n> ")
Expand Down
52 changes: 52 additions & 0 deletions example/http/simple_example.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 55 additions & 0 deletions example/sdk/simple_example.py
Original file line number Diff line number Diff line change
@@ -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)


0 comments on commit 567a756

Please sign in to comment.