File size: 1,707 Bytes
8cf08be
 
790e088
8cf08be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44cbb2e
8cf08be
 
790e088
8cf08be
 
 
44cbb2e
8cf08be
44cbb2e
8cf08be
44cbb2e
8cf08be
 
 
 
 
 
 
 
 
 
9de1f87
8cf08be
 
 
 
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
from db import db
import logging
from summary import file_summary

logger = logging.getLogger("rag")
logging.basicConfig(
    format="%(asctime)s %(levelname)-8s %(message)s",
    level=logging.INFO,
    datefmt="%Y-%m-%d %H:%M:%S",
)


message_template = """\

Далее представлена информацию по опыту нашей компании

---------------------

{retrieved_chunks}

---------------------

Далее представлен запрос потенциального проекта

---------------------

{request_content}

---------------------

При проведении анализа опирайся только на представленную информацию"""

# Функция для обработки запроса к LLM
def process_query(req_file, system_prompt, llm, temperature, alpha):
    logger.info("Process query")

    req_file_content = file_summary(req_file)

    logger.info("Retrive docs")

    docs = db.query(req_file_content, top_k=3, alpha=alpha)
    
    logger.info(f"Retrived {len(docs['ids'])} docs")

    doc_context = '\n\n'.join(docs['documents'])

    # Создание контекста из файлов
    user_message = message_template.format(retrieved_chunks=doc_context, request_content=req_file_content)

    # Формирование сообщения для LLM
    messages = [
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": user_message}
    ]

    response = llm.chat(messages, temperature)

    # Получение ответа от LLM
    llm_response = response.choices[0].message.content
    return llm_response