File size: 2,250 Bytes
9bbbea3 390251e 9bbbea3 bef9637 27ec158 bef9637 de81808 390251e 9bbbea3 390251e bef9637 de81808 075d270 27ec158 075d270 164bc89 075d270 b0d7f21 075d270 27ec158 de81808 075d270 390251e de81808 6f432c7 de81808 390251e de81808 6f432c7 |
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 54 55 56 |
# 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 = [] |