Files
chat-bot/api/interface.py
lychang 64ce30fdfd init
2025-08-26 09:35:29 +08:00

85 lines
2.7 KiB
Python

# -*- coding: UTF-8 -*-
import json
from typing import Optional
import requests
from pydantic import BaseModel
from api.base import set_logger_config, response, app
from api import logger
from core.config import conf
from extension.chat import model_manager, mcp_engine
from api.version import VERSION, DATETIME
class ChatBody(BaseModel):
message: Optional[str] = ""
type: Optional[str] = "text"
chat_history: Optional[list[dict]] = None
def to_dict(self):
return self.__dict__
@app.get("/hello")
@set_logger_config("/hello")
def hello():
try:
result = {"version": VERSION, "datetime": DATETIME}
result = json.dumps(result, ensure_ascii=False).encode("utf-8")
return response(result, 200, {'Content-Type': 'application/json'})
except Exception as e:
logger.error(e)
return response(status_code=500)
@app.post("/self")
@app.get("/self")
@set_logger_config("/self")
def self_info():
try:
result = {"my_name": conf.assistant_name,
"my_company": conf.company_name,
"my_role": "智能助理",
"my_tools": mcp_engine.pool}
result = json.dumps(result, ensure_ascii=False).encode("utf-8")
return response(result, 200, {'Content-Type': 'application/json', 'Content-Language': 'zh-CN'})
except Exception as e:
logger.error(e)
return response(status_code=500)
@app.get("/raw")
@set_logger_config("/raw")
def raw(url: str):
try:
result = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"})
return response(result.content, 200, {'Content-Type': 'application/html', 'Content-Language': 'zh-CN'})
except Exception as e:
logger.error(e)
return response(status_code=500)
@app.post("/chat")
@app.post("/api/chat")
@set_logger_config("/chat")
def chat(item: ChatBody):
try:
result = model_manager.chat(item.message, item.type, item.chat_history)
result = json.dumps(result, ensure_ascii=False).encode("utf-8")
return response(result, 200, {'Content-Type': 'application/json'})
except Exception as e:
logger.error(e)
return response(status_code=500)
@app.post("/completions")
@app.post("/api/call")
@set_logger_config("/completions")
def completions(item: ChatBody):
try:
result = model_manager.generate(item.message)
result = json.dumps({"message": result}, ensure_ascii=False).encode("utf-8")
return response(result, 200, {'Content-Type': 'application/json'})
except Exception as e:
logger.error(e)
return response(status_code=500)