JULIA-ANTHROPIC-API
Simon-Pierre Boucher
2024-09-14
In [1]:
using JSON
using HTTP
# Fonction pour appeler l'API Claude
function call_claude_api(
messages::Vector{Dict{String, Any}}; # Required argument
model::String = "claude-3-5-sonnet-20240620",
max_tokens::Int = 1024,
anthropic_version::String = "2023-06-01"
)
# Récupérer la clé API depuis les variables d'environnement
api_key = get(ENV, "ANTHROPIC_API_KEY", "")
if isempty(api_key)
error("API key not found in environment variables. Please set ANTHROPIC_API_KEY.")
end
url = "https://api.anthropic.com/v1/messages"
headers = [
"x-api-key" => api_key,
"anthropic-version" => anthropic_version,
"Content-Type" => "application/json"
]
# Préparer le corps de la requête
data = Dict(
"model" => model,
"max_tokens" => max_tokens,
"messages" => messages
)
json_data = JSON.json(data)
# Envoyer la requête POST à l'API Claude
response = HTTP.post(url, headers; body = json_data)
# Vérifier si la requête a réussi
if response.status != 200
error("API request failed: $(response.status) - $(String(response.body))")
end
# Parse la réponse JSON
result = JSON.parse(String(response.body))
return result
end
Out[1]:
In [2]:
# Exemple d'utilisation de la fonction
messages = [
Dict{String, Any}("role" => "user", "content" => "Give me a julia code for snake game"),
]
Out[2]:
In [4]:
# Appeler la fonction pour obtenir une réponse
response = call_claude_api(
messages; # Required argument
model = "claude-3-5-sonnet-20240620",
max_tokens = 2024
)
# Extraire et afficher le texte de la réponse
if "content" in keys(response) && length(response["content"]) > 0
# Accéder au premier élément de "content" et extraire le texte
println(response["content"][1]["text"])
else
println("Unexpected response format")
end