| | |
| | import os |
| | import anthropic |
| | import streamlit as st |
| |
|
| | class ClaudeAPIChat: |
| | def __init__(self): |
| | 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 generate_response(self, prompt, lang_code): |
| | self.conversation_history.append(f"Human: {prompt}") |
| | full_message = "\n".join(self.conversation_history) |
| | try: |
| | response = self.client.completions.create( |
| | model="claude-2", |
| | prompt=f"{full_message}\n\nAssistant:", |
| | max_tokens_to_sample=300, |
| | temperature=0.7, |
| | stop_sequences=["Human:"] |
| | ) |
| | claude_response = response.completion.strip() |
| | self.conversation_history.append(f"Assistant: {claude_response}") |
| | if len(self.conversation_history) > 10: |
| | self.conversation_history = self.conversation_history[-10:] |
| | return claude_response |
| | except anthropic.APIError as e: |
| | st.error(f"Error al llamar a la API de Claude: {str(e)}") |
| | return "Lo siento, hubo un error al procesar tu solicitud." |
| |
|
| | def initialize_chatbot(): |
| | return ClaudeAPIChat() |
| |
|
| | def get_chatbot_response(chatbot, prompt, lang_code): |
| | if 'api_calls' not in st.session_state: |
| | st.session_state.api_calls = 0 |
| | |
| | if st.session_state.api_calls >= 50: |
| | yield "Lo siento, has alcanzado el l铆mite de consultas para esta sesi贸n." |
| | return |
| |
|
| | try: |
| | st.session_state.api_calls += 1 |
| | response = chatbot.generate_response(prompt, lang_code) |
| | |
| | |
| | words = response.split() |
| | |
| | |
| | for word in words: |
| | yield word + " " |
| | except Exception as e: |
| | yield f"Error: {str(e)}" |