File size: 1,592 Bytes
b8989d2
2c3dd0c
0af3e10
 
 
2c3dd0c
0af3e10
 
2c3dd0c
0af3e10
 
2c3dd0c
0af3e10
 
2c3dd0c
0af3e10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2c3dd0c
0af3e10
2c3dd0c
0af3e10
2c3dd0c
0af3e10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
49
50
51
52
53
# agents/tools/llm.py

import json
import requests
from tools.context_builder import build_prompt

LLM_ENDPOINT = "http://localhost:1234/v1/chat/completions"
DEFAULT_MODEL = "gpt-4-llmstudio"


def call_llm(context_blocks, user_message, model=DEFAULT_MODEL, temperature=0.7, max_tokens=2048):
    """
    Вызывает LLM, передавая подготовленный системный и пользовательский промпт.
    Возвращает только текст ответа.
    """
    messages = build_prompt(context_blocks, user_message)

    payload = {
        "model": model,
        "messages": messages,
        "temperature": temperature,
        "max_tokens": max_tokens,
    }

    try:
        response = requests.post(LLM_ENDPOINT, json=payload)
        response.raise_for_status()
        data = response.json()
        return data["choices"][0]["message"]["content"].strip()
    except Exception as e:
        return f"[LLM ERROR] {e}"


def get_raw_response(context_blocks, user_message, model=DEFAULT_MODEL, temperature=0.7, max_tokens=2048):
    """
    Возвращает полный JSON-ответ LLM (для дебага).
    """
    messages = build_prompt(context_blocks, user_message)

    payload = {
        "model": model,
        "messages": messages,
        "temperature": temperature,
        "max_tokens": max_tokens,
    }

    try:
        response = requests.post(LLM_ENDPOINT, json=payload)
        response.raise_for_status()
        return response.json()
    except Exception as e:
        return {"error": str(e)}