Spaces:
Running
Running
| # modules/chatbot/chat_process.py | |
| import os | |
| import anthropic | |
| import logging | |
| from typing import Dict, Generator | |
| logger = logging.getLogger(__name__) | |
| #################################################### | |
| class ChatProcessor: | |
| def __init__(self): | |
| """Inicializa el procesador de chat con la API de Claude""" | |
| api_key = os.environ.get("ANTHROPIC_API_KEY") | |
| if not api_key: | |
| raise ValueError("No se encontr贸 la clave API de Anthropic. Aseg煤rate de configurarla en las variables de entorno.") | |
| self.client = anthropic.Anthropic(api_key=api_key) | |
| self.conversation_history = [] | |
| def process_chat_input(self, message: str, lang_code: str) -> Generator[str, None, None]: | |
| """Procesa el mensaje y genera una respuesta""" | |
| try: | |
| # Agregar mensaje a la historia | |
| self.conversation_history.append({"role": "user", "content": message}) | |
| # Generar respuesta usando la API de Claude | |
| response = self.client.messages.create( | |
| model="claude-3-5-sonnet-20241022", | |
| messages=self.conversation_history, | |
| max_tokens=8000, # A帽adimos este par谩metro requerido | |
| temperature=0.7, | |
| ) | |
| # Procesar la respuesta | |
| claude_response = response.content[0].text | |
| self.conversation_history.append({"role": "assistant", "content": claude_response}) | |
| # Mantener un historial limitado | |
| if len(self.conversation_history) > 10: | |
| self.conversation_history = self.conversation_history[-10:] | |
| # Dividir la respuesta en palabras para streaming | |
| words = claude_response.split() | |
| for word in words: | |
| yield word + " " | |
| except Exception as e: | |
| logger.error(f"Error en process_chat_input: {str(e)}") | |
| yield f"Error: {str(e)}" | |
| def get_conversation_history(self) -> list: | |
| """Retorna el historial de la conversaci贸n""" | |
| return self.conversation_history | |
| def clear_history(self): | |
| """Limpia el historial de la conversaci贸n""" | |
| self.conversation_history = [] |