85 lines
2.7 KiB
Python
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)
|