jeysshon commited on
Commit
6a040f1
verified
1 Parent(s): 5ae2fda

Create llm_query.py

Browse files
Files changed (1) hide show
  1. llm_query.py +74 -0
llm_query.py ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import chromadb
3
+ from groq import Groq
4
+ from dotenv import load_dotenv
5
+ from chroma_setup import initialize_client
6
+ from embedding import query_chroma_db
7
+
8
+ # Carga las variables de entorno desde el archivo .env
9
+ load_dotenv()
10
+
11
+ # Inicializa el cliente de Groq con la clave de API
12
+ groq_client = Groq(api_key=os.getenv("GROQ_API_KEY"))
13
+
14
+ # Inicializa el cliente de ChromaDB
15
+ chroma_client = initialize_client()
16
+
17
+ # Verifica o crea la colecci贸n donde se guardan las incrustaciones (embeddings)
18
+ collection_name = "text_embeddings"
19
+ try:
20
+ collection = chroma_client.get_collection(name=collection_name)
21
+ except chromadb.api.segment.InvalidCollectionException:
22
+ collection = chroma_client.create_collection(name=collection_name)
23
+
24
+ def query_llm(query: str, user_id: str, document_id: str):
25
+ """
26
+ Realiza una consulta al LLM (modelo de lenguaje) usando la informaci贸n
27
+ m谩s relevante obtenida de la base de datos ChromaDB.
28
+
29
+ Par谩metros:
30
+ -----------
31
+ query : str
32
+ Pregunta o consulta que se le har谩 al LLM.
33
+ user_id : str
34
+ Identificador 煤nico de usuario.
35
+ document_id : str
36
+ Identificador 煤nico de documento.
37
+
38
+ Retorna:
39
+ --------
40
+ str
41
+ Respuesta generada por el LLM en base al contexto encontrado.
42
+ """
43
+ if not user_id or not document_id:
44
+ raise ValueError("Se requieren tanto user_id como document_id para realizar la consulta.")
45
+
46
+ # Consulta a la base de datos para obtener el contexto
47
+ context = query_chroma_db(user_id, document_id, query)
48
+
49
+ # Registra el contexto antes de enviarlo al LLM
50
+ print(f"Contexto para el LLM: {context}")
51
+
52
+ if not context.strip():
53
+ return "No se encontr贸 contexto para esta consulta."
54
+
55
+ prompt = f"""Eres un asistente inteligente. Basado en el siguiente contexto,
56
+ proporciona una respuesta resumida y bien interpretada a la pregunta.
57
+ Contexto: {context}
58
+
59
+ Pregunta: {query}
60
+
61
+ Por favor, ofrece una respuesta detallada y clara basada en el documento."""
62
+
63
+ chat_completion = groq_client.chat.completions.create(
64
+ messages=[
65
+ {
66
+ "role": "user",
67
+ "content": prompt,
68
+ }
69
+ ],
70
+ model="llama3-8b-8192",
71
+ max_tokens=500,
72
+ )
73
+
74
+ return chat_completion.choices[0].message.content