Spaces:
Build error
Build error
| import os | |
| import chromadb | |
| from groq import Groq | |
| from dotenv import load_dotenv | |
| from chroma_setup import initialize_client | |
| from embedding import query_chroma_db | |
| # Carga las variables de entorno desde el archivo .env | |
| load_dotenv() | |
| # Inicializa el cliente de Groq con la clave de API | |
| groq_client = Groq(api_key=os.getenv("GROQ_API_KEY")) | |
| # Inicializa el cliente de ChromaDB | |
| chroma_client = initialize_client() | |
| # Verifica o crea la colección donde se guardan las incrustaciones (embeddings) | |
| collection_name = "text_embeddings" | |
| try: | |
| collection = chroma_client.get_collection(name=collection_name) | |
| except chromadb.api.segment.InvalidCollectionException: | |
| collection = chroma_client.create_collection(name=collection_name) | |
| def query_llm(query: str, user_id: str, document_id: str): | |
| """ | |
| Realiza una consulta al LLM (modelo de lenguaje) usando la información | |
| más relevante obtenida de la base de datos ChromaDB. | |
| Parámetros: | |
| ----------- | |
| query : str | |
| Pregunta o consulta que se le hará al LLM. | |
| user_id : str | |
| Identificador único de usuario. | |
| document_id : str | |
| Identificador único de documento. | |
| Retorna: | |
| -------- | |
| str | |
| Respuesta generada por el LLM en base al contexto encontrado. | |
| """ | |
| if not user_id or not document_id: | |
| raise ValueError("Se requieren tanto user_id como document_id para realizar la consulta.") | |
| # Consulta a la base de datos para obtener el contexto | |
| context = query_chroma_db(user_id, document_id, query) | |
| # Registra el contexto antes de enviarlo al LLM | |
| print(f"Contexto para el LLM: {context}") | |
| if not context.strip(): | |
| return "No se encontró contexto para esta consulta." | |
| prompt = f"""Eres un asistente inteligente. Basado en el siguiente contexto, | |
| proporciona una respuesta resumida y bien interpretada a la pregunta. | |
| Contexto: {context} | |
| Pregunta: {query} | |
| Por favor, ofrece una respuesta detallada y clara basada en el documento.""" | |
| chat_completion = groq_client.chat.completions.create( | |
| messages=[ | |
| { | |
| "role": "user", | |
| "content": prompt, | |
| } | |
| ], | |
| model="llama3-8b-8192", | |
| max_tokens=500, | |
| ) | |
| return chat_completion.choices[0].message.content | |