5.8 KiB
FunctionDef list_kbs
list_kbs: 此函数的功能是获取知识库列表。
参数: 此函数不接受任何参数。
代码描述: list_kbs 函数是一个无参数函数,用于从数据库中获取知识库的列表。它通过调用 list_kbs_from_db 函数来实现这一功能。list_kbs_from_db 函数从数据库中查询满足特定条件的知识库名称列表,并返回这些名称。然后,list_kbs 函数将这些名称封装在 ListResponse 类的实例中返回。ListResponse 类是专门用于封装列表数据响应的类,它继承自 BaseResponse 类,能够提供状态码、状态消息以及数据列表。这样的设计使得 API 的响应格式保持一致,便于前端开发者理解和使用。
注意:
list_kbs函数依赖于list_kbs_from_db函数正确地从数据库中获取知识库名称列表。因此,确保数据库连接和查询逻辑正确是使用此函数的前提。- 返回的
ListResponse实例中包含的数据列表应正确反映数据库中的知识库情况。这要求list_kbs_from_db函数能准确地执行其查询逻辑。 - 在实际部署和使用时,应注意数据库的性能和响应时间,尤其是在知识库数量较多的情况下,以保证良好的用户体验。
输出示例:
假设数据库中存在三个知识库,名称分别为 "知识库A", "知识库B", "知识库C",则函数可能返回的 ListResponse 实例如下所示:
{
"code": 200,
"msg": "success",
"data": ["知识库A", "知识库B", "知识库C"]
}
这表示 API 调用成功,且返回了包含三个知识库名称的列表。
FunctionDef create_kb(knowledge_base_name, vector_store_type, embed_model)
create_kb: 此函数用于创建一个新的知识库。
参数:
knowledge_base_name: 知识库的名称,类型为字符串。通过示例参数可以提供默认示例值。vector_store_type: 向量存储类型,类型为字符串,默认值为"faiss"。embed_model: 嵌入模型的名称,类型为字符串,默认使用项目配置的嵌入模型。
代码描述:
此函数首先通过调用validate_kb_name函数验证知识库名称的合法性。如果名称不合法或为空,则分别返回403和404状态码的BaseResponse对象,提示错误信息。接下来,使用KBServiceFactory.get_service_by_name方法检查是否已存在同名的知识库,如果存在,则返回404状态码的BaseResponse对象,提示知识库已存在。如果验证通过,函数将通过KBServiceFactory.get_service方法获取对应的知识库服务实例,并调用该实例的create_kb方法创建知识库。如果在创建过程中发生异常,将记录错误信息并返回500状态码的BaseResponse对象。成功创建知识库后,返回200状态码的BaseResponse对象,提示已新增知识库。
注意:
- 在调用此函数创建知识库之前,需要确保知识库名称不为空且不包含非法字符,以避免安全风险。
- 向量存储类型和嵌入模型应根据项目需求和配置进行选择,以确保知识库的正确创建和后续操作的有效性。
- 在处理异常时,应注意记录详细的错误信息,以便于问题的定位和解决。
输出示例:
如果成功创建名为"技术文档库"的知识库,函数将返回以下BaseResponse对象:
{
"code": 200,
"msg": "已新增知识库 技术文档库"
}
如果尝试创建一个已存在的知识库,例如名为"技术文档库",函数将返回:
{
"code": 404,
"msg": "已存在同名知识库 技术文档库"
}
如果知识库名称不合法,将返回:
{
"code": 403,
"msg": "Don't attack me"
}
FunctionDef delete_kb(knowledge_base_name)
delete_kb: 此函数的功能是删除指定的知识库。
参数:
knowledge_base_name: 字符串类型,表示要删除的知识库的名称。此参数通过请求体传入,且提供了示例值 "samples"。
代码描述:
delete_kb 函数首先验证知识库名称的合法性。如果名称不合法,即不通过 validate_kb_name 函数的验证,将返回一个状态码为403的 BaseResponse 对象,消息内容为 "Don't attack me",表示请求被拒绝。接着,函数对知识库名称进行URL解码,以确保名称的正确性。
通过 KBServiceFactory.get_service_by_name 方法,根据知识库名称获取对应的知识库服务实例。如果实例为 None,即知识库不存在,将返回一个状态码为404的 BaseResponse 对象,消息内容为 "未找到知识库 {knowledge_base_name}"。
若知识库服务实例获取成功,函数尝试调用知识库服务实例的 clear_vs 方法来清除知识库中的向量数据,然后调用 drop_kb 方法删除知识库。如果删除操作成功,将返回一个状态码为200的 BaseResponse 对象,消息内容为 "成功删除知识库 {knowledge_base_name}"。
如果在删除过程中发生异常,将捕获异常并记录错误日志,然后返回一个状态码为500的 BaseResponse 对象,消息内容为 "删除知识库时出现意外: {e}",其中 {e} 是异常信息。
注意:
- 在调用此函数之前,确保传入的知识库名称是经过URL编码的。
- 此函数依赖于
validate_kb_name函数来验证知识库名称的合法性,以防止潜在的安全风险。 - 删除知识库是一个不可逆的操作,一旦执行,知识库中的所有数据将被永久删除。
输出示例:
如果尝试删除一个不存在的知识库 "unknown_kb",函数可能返回的 BaseResponse 对象如下:
{
"code": 404,
"msg": "未找到知识库 unknown_kb"
}
如果成功删除名为 "samples" 的知识库,函数可能返回的 BaseResponse 对象如下:
{
"code": 200,
"msg": "成功删除知识库 samples"
}