Compare commits
4 Commits
606675ab33
...
1c8036cb8d
| Author | SHA1 | Date |
|---|---|---|
|
|
1c8036cb8d | |
|
|
ab437dc982 | |
|
|
f8a2195a95 | |
|
|
5fa478f3a8 |
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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())
|
||||||
|
|
||||||
# 更新当前词
|
# 更新当前词
|
||||||
|
|
|
||||||
|
|
@ -78,4 +78,5 @@ async def reply_process(reply: str) -> str:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
reply.replace("**", "")
|
reply.replace("**", "")
|
||||||
|
reply.replace("---", "")
|
||||||
return reply
|
return reply
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue