File size: 2,036 Bytes
488f910
 
 
 
 
 
 
2c4af7d
488f910
 
 
 
 
 
 
 
 
 
175ae97
488f910
175ae97
488f910
175ae97
 
 
 
 
488f910
175ae97
 
488f910
175ae97
488f910
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

from langchain_community.chat_models import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from typing import List, Dict
import os
OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY")
OPENROUTER_API_BASE = "https://openrouter.ai/api/v1"
DEFAULT_MODEL = "meta-llama/llama-3.1-70b-instruct:free"

class ChatManager:
    def __init__(self, temperature: float = 0.7):
        self.chat = ChatOpenAI(
            openai_api_base=OPENROUTER_API_BASE,
            openai_api_key=OPENROUTER_API_KEY,
            model_name=DEFAULT_MODEL,
            temperature=temperature,
        )
        
        self.system_message = """Du er en avanceret assistent designet til at hjælpe brugere ved at hente den mest relevante information fra et foruddefineret sæt af dokumenter eller sager og derefter give et præcist svar baseret på disse data.

Din opgave er som følger:

1. Når brugeren indsender en forespørgsel, skal du matche forespørgslen med den mest relevante sag fra databasen.
2. Uddrag kun den støjfri og kontekstuelle relevante tekst fra den pågældende sag.
3. Brug den udtrukne tekst til præcist og klart at besvare brugerens forespørgsel.
4. Hvis den relevante tekst ikke findes, informer brugeren om, at informationen ikke er tilgængelig, eller bed om yderligere afklaring.
5. Undgå at give information uden for den udtrukne teksts rækkevidde.

Fokuser altid på relevans og klarhed i dit svar, og oprethold sammenhæng med brugerens oprindelige forespørgsel."""
        self.user_message = """Kontekst: {context}

Forespørgsel: {query}
"""
        
        self.prompt = ChatPromptTemplate.from_messages([
            ("system", self.system_message),
            ("human", self.user_message),
        ])

    def get_response(self, context: str, query: str) -> str:
        prompt_value = self.prompt.invoke({
            "context": context,
            "query": query
        })
        messages = prompt_value.to_messages()
        response = self.chat(messages)
        return response.content