Spaces:
Running
Running
File size: 2,768 Bytes
176f432 |
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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
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)}")
|