API Anthropic pour Delphi

· Composants

Intègre l'API Anthropic Claude dans tes applications Delphi

sgcWebSockets fournit un composant Delphi prêt pour la production couvrant l'intégralité de l'API Anthropic Claude — de la génération de texte et de la vision au tool use, à l'extended thinking et au-delà. 

Anthropic Claude est l'une des familles de modèles d'IA les plus avancées disponibles aujourd'hui, réputée pour son raisonnement exceptionnel, sa conception axée sur la sécurité et ses capacités polyvalentes sur le texte, le code, la vision et les données structurées. Pour les développeurs Delphi qui veulent exploiter ces capacités, sgcWebSockets fournit TsgcHTTP_API_Anthropic — un composant natif complet qui encapsule toute la surface de l'API Anthropic.

Que tu construises des chatbots intelligents, que tu automatises l'analyse de documents, que tu orchestres des pipelines d'outils complexes ou que tu traites des milliers de requêtes par lot, ce composant te donne un accès direct à chaque fonctionnalité de Claude via du code Delphi propre et typé. Pas de REST boilerplate. Pas de manipulation JSON. Pose simplement le composant, définis ta clé API et commence à construire.

Couverture complète de l'API

 Chaque fonctionnalité majeure de l'API Anthropic Claude est prise en charge dès le départ.

Messages et streaming

Envoie des messages avec des system prompts, reçois les réponses de manière synchrone ou streamées en temps réel via Server-Sent Events.
Vision

Analyse des images aux formats JPEG, PNG, GIF et WebP. Claude décrit, interprète et raisonne sur le contenu visuel.
Tool use

Définis des outils personnalisés avec JSON Schema et laisse Claude les appeler. Construis des workflows agentiques avec function calling.
Extended thinking

Active le raisonnement pas à pas pour des tâches complexes. Idéal pour les maths, l'analyse et la résolution de problèmes en plusieurs étapes.
Traitement de documents

Envoie des PDF et des fichiers texte pour analyse, résumé et questions-réponses avec prise en charge des citations.
Sorties structurées

Force Claude à renvoyer du JSON valide conforme à ton schéma. Réponses parsables et typées garanties.
Recherche web

Laisse Claude chercher sur le web des informations en temps réel pendant les conversations à l'aide d'outils côté serveur intégrés.
Prompt caching

Met en cache les system prompts, les content blocks et les définitions d'outils. Réduis les coûts jusqu'à 90 % sur du contexte répété.
Message batches

Traite des milliers de requêtes de manière asynchrone. Parfait pour la génération de contenu en masse et les pipelines de traitement de données.
API Files

Téléverse, liste, télécharge et gère des fichiers sur les serveurs d'Anthropic. Référence-les sur plusieurs conversations.
Connecteur MCP

Connecte Claude à des serveurs Model Context Protocol externes. Étends les capacités avec des outils et services tiers.
Comptage de tokens

Compte les tokens avant d'envoyer des requêtes. Estime précisément les coûts et gère le budget de fenêtre de contexte.

Premiers pas

Intègre Claude dans ton projet Delphi en moins d'une minute. Pose le composant, configure ta clé API et envoie ton premier message. 

// Création du composant et configuration de la clé API
var
  Anthropic: TsgcHTTP_API_Anthropic;
  vResponse: string;
begin
  Anthropic := TsgcHTTP_API_Anthropic.Create(nil);
  Try
    Anthropic.AnthropicOptions.ApiKey := 'YOUR_API_KEY';
    // Envoi d'un message simple à Claude
    vResponse := Anthropic._CreateMessage(
      'claude-sonnet-4-20250514', 'Hello, Claude!');
    ShowMessage(vResponse);
  Finally
    Anthropic.Free;
  End;
end; 

Messages et streaming

L'API Messages est le fondement de chaque interaction avec Claude. Envoie du texte avec des system prompts optionnels, et reçois les réponses de manière synchrone ou streamées en temps réel.

System prompts

Contrôle le comportement de Claude en fournissant un system prompt qui définit le contexte, la personnalité ou les contraintes de la conversation. 

vResponse := Anthropic._CreateMessageWithSystem(
  'claude-sonnet-4-20250514',
  'You are a helpful assistant that responds in Spanish.',
  'What is the capital of France?');
// Retourne : "La capital de Francia es París." 

Streaming en temps réel

Pour des interfaces utilisateur réactives, stream la réponse de Claude token par token via Server-Sent Events. Assigne le gestionnaire d'événements OnHTTPAPISSE et appelle _CreateMessageStream

// Activer le streaming via SSE
Anthropic.OnHTTPAPISSE := OnSSEEvent;
Anthropic._CreateMessageStream('claude-sonnet-4-20250514',
  'Tell me a story about a brave explorer.');
procedure TForm1.OnSSEEvent(Sender: TObject;
  const aEvent, aData: string; var Cancel: Boolean);
begin
  // aEvent : type d'événement (par ex. content_block_delta)
  // aData : charge utile JSON pour cet événement
  Memo1.Lines.Add(aData);
end; 

API typée avancée

Pour un contrôle total sur les paramètres de la requête — température, top-p, séquences d'arrêt, métadonnées — utilise les classes de requête et de réponse typées. 

var
  oRequest: TsgcAnthropicClass_Request_Messages;
  oMessage: TsgcAnthropicClass_Request_Message;
  oResponse: TsgcAnthropicClass_Response_Messages;
begin
  oRequest := TsgcAnthropicClass_Request_Messages.Create;
  Try
    oRequest.Model := 'claude-sonnet-4-20250514';
    oRequest.MaxTokens := 1024;
    oRequest.System := 'You are a helpful assistant.';
    oRequest.Temperature := 0.7;
    oMessage := TsgcAnthropicClass_Request_Message.Create;
    oMessage.Role := 'user';
    oMessage.Content := 'Explain quantum computing in simple terms.';
    // ... ajouter le message à la requête, envoyer et traiter la réponse
    oResponse := Anthropic.CreateMessage(oRequest);
    Try
      if Length(oResponse.Content) > 0 then
        ShowMessage(oResponse.Content[0].Text);
    Finally
      oResponse.Free;
    End;
  Finally
    oMessage.Free;
    oRequest.Free;
  End;
end; 

Vision — compréhension d'images

 Claude peut analyser et raisonner sur des images. Envoie des photographies, des captures d'écran, des diagrammes ou des graphiques et reçois des descriptions détaillées, de l'extraction de données ou des Q&R visuelles.

Les formats pris en charge incluent JPEG, PNG, GIF et WebP. Les images sont envoyées sous forme de content blocks encodés en base64.

// Charger une image et demander à Claude de la décrire
var
  vBase64: string;
begin
  vBase64 := sgcBase64Encode(LoadFileToBytes('product-photo.png'));
  ShowMessage(Anthropic._CreateVisionMessage(
    'claude-sonnet-4-20250514',
    'Describe this product image for an e-commerce listing.',
    vBase64, 'image/png'));
end; 

Tool use — function calling

Définis des outils personnalisés avec JSON Schema et Claude décidera quand et comment les invoquer. C'est la base pour construire des workflows agentiques multi-étapes.

Le flux de tool use suit un schéma clair : définir les outils, envoyer une requête, détecter tool_use dans la réponse, exécuter la fonction localement et renvoyer le résultat à Claude pour la réponse finale. 

// Définir un outil météo avec une entrée JSON Schema
oTool := TsgcAnthropicClass_Request_Tool.Create;
oTool.Name := 'get_weather';
oTool.Description := 'Get the current weather in a given location';
oTool.InputSchema :=
  '{"type":"object","properties":{"location":{"type":"string",' +
  '"description":"The city and state"}},"required":["location"]}';
// Envoyer la requête avec les outils définis
oResponse := Anthropic.CreateMessage(oRequest);
// Vérifier si Claude veut appeler un outil
if oResponse.StopReason = 'tool_use' then
begin
  for i := 0 to Length(oResponse.Content) - 1 do
  begin
    if oResponse.Content[i].ContentType = 'tool_use' then
    begin
      vToolUseId := oResponse.Content[i].Id;
      vToolName  := oResponse.Content[i].Name;
      vToolInput := oResponse.Content[i].Input;
      // Exécuter l'outil et renvoyer le résultat à Claude
    end;
  end;
end; 

Traitement de documents et citations

Envoie à Claude des documents PDF et des fichiers texte pour analyse, résumé et questions-réponses. Active les citations pour recevoir des références vérifiables vers le matériel source. 

// Envoyer un PDF et demander à Claude de le résumer
vBase64 := sgcBase64Encode(LoadFileToBytes('annual-report.pdf'));
vResponse := Anthropic._CreateDocumentMessage(
  'claude-sonnet-4-20250514',
  'Summarize the key findings of this report.',
  vBase64, 'application/pdf'); 

Citations

Active les citations sur les content blocks de documents pour recevoir des références sources — incluant numéros de page, plages de caractères et texte cité — dans la réponse de Claude. 

oDocBlock := TsgcAnthropicClass_Request_Content_Block.Create;
oDocBlock.ContentType := 'document';
oDocBlock.SourceType := 'base64';
oDocBlock.MediaType := 'application/pdf';
oDocBlock.Data := vBase64;
oDocBlock.Title := 'Annual Report';
oDocBlock.CitationsEnabled := True;   

Connecteur MCP

Connecte Claude à des serveurs Model Context Protocol (MCP) externes pour étendre ses capacités avec des outils et services tiers — bases de données, CRMs, APIs internes et plus. 

Anthropic.AnthropicOptions.BetaHeaders := 'mcp-client-2025-11-20';
// Connexion à un serveur MCP en un seul appel de méthode
vResponse := Anthropic._CreateMessageWithMCP(
  'claude-sonnet-4-20250514',
  'What tools are available?',
  'https://my-mcp-server.example.com/sse',
  'my-mcp-server'); 

Serveurs MCP authentifiés

Pour les serveurs qui requièrent une authentification, l'API typée prend en charge les jetons OAuth Bearer. 

oServer := TsgcAnthropicClass_Request_MCPServer.Create;
oServer.ServerType := 'url';
oServer.Url := 'https://my-mcp-server.example.com/sse';
oServer.Name := 'my-server';
oServer.AuthorizationToken := 'OAUTH_TOKEN';
oTool := TsgcAnthropicClass_Request_Tool.Create;
oTool.ToolType := 'mcp_toolset';
oTool.MCPServerName := 'my-server';