liunux4odoo d0846f88cc - pydantic 限定为 v1,并统一项目中所有 pydantic 导入路径,为以后升级 v2 做准备
- 重构 api.py:
    - 按模块划分为不同的 router
    - 添加 openai 兼容的转发接口,项目默认使用该接口以实现模型负载均衡
    - 添加 /tools 接口,可以获取/调用编写的 agent tools
    - 移除所有 EmbeddingFuncAdapter,统一改用 get_Embeddings
    - 待办:
        - /chat/chat 接口改为 openai 兼容
        - 添加 /chat/kb_chat 接口,openai 兼容
        - 改变 ntlk/knowledge_base/logs 等数据目录位置
2024-03-06 13:51:34 +08:00

90 lines
3.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from __future__ import annotations
from typing import List
from fastapi import APIRouter, Request
from server.chat.file_chat import upload_temp_docs
from server.knowledge_base.kb_api import list_kbs, create_kb, delete_kb
from server.knowledge_base.kb_doc_api import (list_files, upload_docs, delete_docs,
update_docs, download_doc, recreate_vector_store,
search_docs, update_info)
from server.knowledge_base.kb_summary_api import (summary_file_to_vector_store, recreate_summary_vector_store,
summary_doc_ids_to_vector_store)
from server.knowledge_base.model.kb_document_model import DocumentWithVSId
from server.utils import BaseResponse, ListResponse
kb_router = APIRouter(prefix="/knowledge_base", tags=["Knowledge Base Management"])
kb_router.get("/list_knowledge_bases",
response_model=ListResponse,
summary="获取知识库列表")(list_kbs)
kb_router.post("/create_knowledge_base",
response_model=BaseResponse,
summary="创建知识库"
)(create_kb)
kb_router.post("/delete_knowledge_base",
response_model=BaseResponse,
summary="删除知识库"
)(delete_kb)
kb_router.get("/list_files",
response_model=ListResponse,
summary="获取知识库内的文件列表"
)(list_files)
kb_router.post("/search_docs",
response_model=List[DocumentWithVSId],
summary="搜索知识库"
)(search_docs)
kb_router.post("/upload_docs",
response_model=BaseResponse,
summary="上传文件到知识库,并/或进行向量化"
)(upload_docs)
kb_router.post("/delete_docs",
response_model=BaseResponse,
summary="删除知识库内指定文件"
)(delete_docs)
kb_router.post("/update_info",
response_model=BaseResponse,
summary="更新知识库介绍"
)(update_info)
kb_router.post("/update_docs",
response_model=BaseResponse,
summary="更新现有文件到知识库"
)(update_docs)
kb_router.get("/download_doc",
summary="下载对应的知识文件")(download_doc)
kb_router.post("/recreate_vector_store",
summary="根据content中文档重建向量库流式输出处理进度。"
)(recreate_vector_store)
kb_router.post("/upload_temp_docs",
summary="上传文件到临时目录,用于文件对话。"
)(upload_temp_docs)
summary_router = APIRouter(prefix="/kb_summary_api")
summary_router.post("/summary_file_to_vector_store",
summary="单个知识库根据文件名称摘要"
)(summary_file_to_vector_store)
summary_router.post("/summary_doc_ids_to_vector_store",
summary="单个知识库根据doc_ids摘要",
response_model=BaseResponse,
)(summary_doc_ids_to_vector_store)
summary_router.post("/recreate_summary_vector_store",
summary="重建单个知识库文件摘要"
)(recreate_summary_vector_store)
kb_router.include_router(summary_router)