Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import anthropic | |
| import json | |
| import os | |
| from utils import ANTHROPIC_MODEL_OPTIONS | |
| def display(): | |
| """ | |
| Display the Anthropic models tab. | |
| """ | |
| st.header("Anthropic (Claude) Models") | |
| # API key input (with warning about security) | |
| anthropic_key = st.text_input( | |
| "Enter your Anthropic API Key", | |
| type="password", | |
| help="⚠️ Never share your API key. Leave empty to use ANTHROPIC_API_KEY environment variable.", | |
| ) | |
| # If no key provided, try to get from environment | |
| if not anthropic_key: | |
| anthropic_key = os.environ.get("ANTHROPIC_API_KEY", "") | |
| # Model selection for Anthropic | |
| selected_anthropic_model = st.selectbox( | |
| "Select Claude Model", list(ANTHROPIC_MODEL_OPTIONS.keys()) | |
| ) | |
| # System message (optional) | |
| st.subheader("System Message (Optional)") | |
| system_message = st.text_area( | |
| "System Message", placeholder="e.g., You are a helpful assistant", height=100 | |
| ) | |
| # User message input | |
| st.subheader("Message Content") | |
| anthropic_user_message = st.text_area( | |
| "Enter your message here", | |
| placeholder="Hello, Claude! How are you today?", | |
| height=200, | |
| key="anthropic_message", | |
| ) | |
| # Button to count tokens for Anthropic | |
| if st.button("Count Tokens (Anthropic)"): | |
| if not anthropic_key: | |
| st.error( | |
| "No Anthropic API key found. Please enter a key or set the ANTHROPIC_API_KEY environment variable." | |
| ) | |
| elif not anthropic_user_message: | |
| st.warning("Please enter a message to count tokens") | |
| else: | |
| try: | |
| # Initialize client with API key | |
| client = anthropic.Anthropic(api_key=anthropic_key) | |
| # Create the request | |
| count_request = { | |
| "model": ANTHROPIC_MODEL_OPTIONS[selected_anthropic_model], | |
| "messages": [{"role": "user", "content": anthropic_user_message}], | |
| } | |
| # Add system message if provided | |
| if system_message: | |
| count_request["system"] = system_message | |
| # Make the API call to count tokens | |
| response = client.messages.count_tokens(**count_request) | |
| # Display results | |
| st.success(f"Input tokens: {response.input_tokens}") | |
| # Display the full JSON response in an expandable section | |
| with st.expander("View Full API Response"): | |
| st.code( | |
| json.dumps(response.model_dump(), indent=2), language="json" | |
| ) | |
| except Exception as e: | |
| st.error(f"An error occurred: {str(e)}") | |