File size: 1,387 Bytes
851f3c6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | from openai import OpenAI
from app.config import OPENAI_API_KEY
class ChatEngine:
def __init__(self):
self.client = OpenAI(api_key=OPENAI_API_KEY) if OPENAI_API_KEY else None
def answer(self, user_text: str, context: str = "") -> str:
# fallback, если ключа нет
if not self.client:
return "⚠️ OPENAI_API_KEY не задан. (Пилотный режим) Ваш вопрос: " + user_text
system = (
"Ты ассистент 2MOOD. Отвечай кратко и по делу. "
"Если дан контекст из базы знаний — опирайся на него и добавляй ссылки на источники (имя файла). "
"Если контекста нет — скажи, что в базе знаний не найдено подтверждение, и предложи уточнить."
)
user = f"Вопрос: {user_text}\n\nКонтекст из базы знаний:\n{context or '(нет)'}"
resp = self.client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": system},
{"role": "user", "content": user},
],
temperature=0.2,
)
return resp.choices[0].message.content.strip()
|