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()