Source code for dllmforge.anthropic_api
import os
from dotenv import load_dotenv
try:
from anthropic import Anthropic
ANTHROPIC_AVAILABLE = True
except ImportError:
ANTHROPIC_AVAILABLE = False
Anthropic = None
[docs]
class AnthropicAPI:
"""Class to interact with Anthropic's Claude API."""
[docs]
def __init__(
self,
api_key=None,
model="claude-3-7-sonnet-20250219", # Changed default to your available model
deployment_claude37=None,
deployment_claude35=None):
"""Initialize the Anthropic API client with configuration."""
# Load environment variables if not provided
load_dotenv()
self.api_key = api_key or os.getenv("ANTHROPIC_API_KEY")
self.model = model
self.deployment_claude37 = deployment_claude37 or os.getenv("ANTHROPIC_DEPLOYMENT_CLAUDE37")
self.deployment_claude35 = deployment_claude35 or os.getenv("ANTHROPIC_DEPLOYMENT_CLAUDE35")
# Initialize the Anthropic client
self.client = Anthropic(api_key=self.api_key)
[docs]
def check_server_status(self):
"""Check if the Anthropic API service is accessible."""
try:
# Try to send a simple message as a health check
response = self.client.messages.create(model=self.model,
max_tokens=1,
messages=[{
"role": "user",
"content": "Hello"
}])
if response:
print("Anthropic API service is up!")
return True
else:
print("Anthropic API service is down!")
return False
except Exception as e:
print(f"Error checking server status: {e}")
return False
[docs]
def list_available_models(self):
"""List available models from Anthropic."""
# Only include the deployment models that are available
models = []
if self.deployment_claude37:
models.append(self.deployment_claude37)
if self.deployment_claude35:
models.append(self.deployment_claude35)
return models
[docs]
def send_test_message(self, prompt="Hello, how are you?"):
"""Send a test message to the model and get a response."""
try:
response = self.client.messages.create(model=self.model,
max_tokens=1000,
messages=[{
"role": "user",
"content": prompt
}])
return {
"response": response.content[0].text,
"model": response.model,
"usage": {
"input_tokens": response.usage.input_tokens,
"output_tokens": response.usage.output_tokens,
"total_tokens": response.usage.input_tokens + response.usage.output_tokens
}
}
except Exception as e:
print(f"Error sending test message: {e}")
return None
[docs]
def chat_completion(self, messages, temperature=0.7, max_tokens=1000):
"""Get a chat completion from the model."""
try:
response = self.client.messages.create(model=self.model,
max_tokens=max_tokens,
temperature=temperature,
messages=messages)
return {
"response": response.content[0].text,
"model": response.model,
"usage": {
"input_tokens": response.usage.input_tokens,
"output_tokens": response.usage.output_tokens,
"total_tokens": response.usage.input_tokens + response.usage.output_tokens
}
}
except Exception as e:
print(f"Error getting chat completion: {e}")
return None