Compare commits

..

4 Commits

Author SHA1 Message Date
Miyamizu-MitsuhaSang 1c8036cb8d 前端适配 2025-11-07 14:52:30 +08:00
Miyamizu-MitsuhaSang ab437dc982 前端适配 2025-11-07 14:31:10 +08:00
Miyamizu-MitsuhaSang f8a2195a95 前端适配 2025-11-07 14:17:27 +08:00
Miyamizu-MitsuhaSang 5fa478f3a8 前端适配 2025-11-07 14:06:19 +08:00
4 changed files with 9 additions and 5 deletions

View File

@ -1,4 +1,3 @@
import os
from typing import Dict, Tuple from typing import Dict, Tuple
import httpx import httpx
@ -8,13 +7,15 @@ from starlette.requests import Request
from app.api.ai_assist import service from app.api.ai_assist import service
from app.api.ai_assist.ai_schemas import AIAnswerResponse, AIAnswerOut, AIQuestionRequest from app.api.ai_assist.ai_schemas import AIAnswerResponse, AIAnswerOut, AIQuestionRequest
from app.api.ai_assist.utils.redis_memory import get_chat_history, save_message, clear_chat_history from app.api.ai_assist.utils.redis_memory import get_chat_history, save_message, clear_chat_history
from app.api.article_director.service import reply_process
from app.models import User from app.models import User
from app.utils.security import get_current_user from app.utils.security import get_current_user
from settings import settings
ai_router = APIRouter() ai_router = APIRouter()
ZJU_AI_URL = 'https://chat.zju.edu.cn/api/ai/v1/chat/completions' ZJU_AI_URL = 'https://chat.zju.edu.cn/api/ai/v1/chat/completions'
AI_API_KEY = os.getenv("AI_ASSIST_KEY") AI_API_KEY = settings.AI_ASSIST_KEY
MAX_USAGE_PER = 100 MAX_USAGE_PER = 100
CHAT_TTL = 7200 CHAT_TTL = 7200
@ -85,9 +86,11 @@ async def dict_exp(
await save_message(redis, user_id, word, "user", question) await save_message(redis, user_id, word, "user", question)
await save_message(redis, user_id, word, "assistant", answer) await save_message(redis, user_id, word, "assistant", answer)
answer = await reply_process(answer)
return AIAnswerOut( return AIAnswerOut(
word=word, word=word,
answer=ai_resp.get_answer(), answer=answer,
model=ai_resp.model, model=ai_resp.model,
tokens_used=ai_resp.usage.total_tokens if ai_resp.usage else None tokens_used=ai_resp.usage.total_tokens if ai_resp.usage else None
) )

View File

@ -11,7 +11,7 @@ async def get_and_set_last_key(redis: Redis, word: str, user_id: str):
print(last_word) print(last_word)
# 如果上一次查的词和这次不同,就清空旧词的记录 # 如果上一次查的词和这次不同,就清空旧词的记录
if last_word and last_word.decode() != word: if last_word and last_word != word:
await clear_chat_history(redis, user_id, last_word.decode()) await clear_chat_history(redis, user_id, last_word.decode())
# 更新当前词 # 更新当前词

View File

@ -78,4 +78,5 @@ async def reply_process(reply: str) -> str:
:return: :return:
""" """
reply.replace("**", "") reply.replace("**", "")
reply.replace("---", "")
return reply return reply

View File

@ -11,7 +11,7 @@ class TransRequest(BaseModel):
@field_validator('from_lang', 'to_lang') @field_validator('from_lang', 'to_lang')
@classmethod @classmethod
def validate_lang(cls, v): def validate_lang(cls, v):
allowed_langs = {'auto', 'fr', 'jp', 'zh'} allowed_langs = {'auto', 'fr', 'jp', 'zh', 'en'}
if v not in allowed_langs: if v not in allowed_langs:
raise ValueError(f'Unsupported language: {v}') raise ValueError(f'Unsupported language: {v}')
return v return v