mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
feat: MCP support get third-part system datasource
This commit is contained in:
@@ -258,3 +258,9 @@ class ExcelData(BaseModel):
|
||||
axis: list[AxisObj] = []
|
||||
data: list[dict] = []
|
||||
name: str = 'Excel'
|
||||
|
||||
|
||||
class McpAssistant(BaseModel):
|
||||
question: str = Body(description='用户提问')
|
||||
url: str = Body(description='第三方数据接口')
|
||||
authorization: str = Body(description='第三方接口凭证')
|
||||
|
||||
+29
-3
@@ -1,6 +1,6 @@
|
||||
# Author: Junjun
|
||||
# Date: 2025/7/1
|
||||
|
||||
import json
|
||||
from datetime import timedelta
|
||||
|
||||
import jwt
|
||||
@@ -12,13 +12,13 @@ from pydantic import ValidationError
|
||||
from sqlmodel import select
|
||||
|
||||
from apps.chat.api.chat import create_chat
|
||||
from apps.chat.models.chat_model import ChatMcp, CreateChat, ChatStart, McpQuestion
|
||||
from apps.chat.models.chat_model import ChatMcp, CreateChat, ChatStart, McpQuestion, McpAssistant, ChatQuestion
|
||||
from apps.chat.task.llm import LLMService
|
||||
from apps.system.crud.user import authenticate
|
||||
from apps.system.crud.user import get_db_user
|
||||
from apps.system.models.system_model import UserWsModel
|
||||
from apps.system.models.user import UserModel
|
||||
from apps.system.schemas.system_schema import BaseUserDTO
|
||||
from apps.system.schemas.system_schema import BaseUserDTO, AssistantHeader
|
||||
from apps.system.schemas.system_schema import UserInfoDTO
|
||||
from common.core import security
|
||||
from common.core.config import settings
|
||||
@@ -111,3 +111,29 @@ async def mcp_question(session: SessionDep, chat: McpQuestion):
|
||||
llm_service.init_record()
|
||||
|
||||
return StreamingResponse(llm_service.run_task(False), media_type="text/event-stream")
|
||||
|
||||
|
||||
@router.post("/mcp_assistant", operation_id="mcp_assistant")
|
||||
async def mcp_assistant(session: SessionDep, chat: McpAssistant):
|
||||
session_user = BaseUserDTO(**{
|
||||
"id": -1, "account": 'sqlbot-mcp-assistant', "oid": 1, "assistant_id": -1, "password": '', "language": "zh-CN"
|
||||
})
|
||||
# session_user: UserModel = get_db_user(session=session, user_id=1)
|
||||
# session_user.oid = 1
|
||||
c = create_chat(session, session_user, CreateChat(origin=1), False)
|
||||
|
||||
# build assistant param
|
||||
configuration = {"endpoint": chat.url}
|
||||
# authorization = [{"key": "x-de-token",
|
||||
# "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsIm9pZCI6MSwiZXhwIjoxNzU4NTEyMDA2fQ.3NR-pgnADLdXZtI3dXX5-LuxfGYRvYD9kkr2de7KRP0",
|
||||
# "target": "header"}]
|
||||
mcp_assistant_header = AssistantHeader(id=1, name='mcp_assist', domain='', type=1,
|
||||
configuration=json.dumps(configuration),
|
||||
certificate=chat.authorization)
|
||||
|
||||
# assistant question
|
||||
mcp_chat = ChatQuestion(chat_id=c.id, question=chat.question)
|
||||
# ask
|
||||
llm_service = await LLMService.create(session_user, mcp_chat, mcp_assistant_header)
|
||||
llm_service.init_record()
|
||||
return llm_service.run_task(False)
|
||||
|
||||
Reference in New Issue
Block a user