Anthropic | Vision

Claude peut comprendre et analyser des images. Vous pouvez envoyer des images sous forme de données encodées en base64 dans des blocs de contenu.

Formats d'image pris en charge

Exemple simple

Envoyer une image avec une invite demandant à Claude de la décrire.


Anthropic := TsgcHTTP_API_Anthropic.Create(nil);
Anthropic.AnthropicOptions.ApiKey := 'API_KEY';

// Load image and encode to base64
oStream := TFileStream.Create('photo.png', fmOpenRead);
Try
  oBytes := TBytesStream.Create;
  Try
    oBytes.CopyFrom(oStream, 0);
    vBase64 := EncodeBase64(oBytes.Memory, oBytes.Size);
  Finally
    oBytes.Free;
  End;
Finally
  oStream.Free;
End;

WriteLn(Anthropic._CreateVisionMessage('claude-sonnet-4-20250514',
  'What is in this image?', vBase64, 'image/png'));

Exemple avancé

Utilisez des blocs de contenu pour un meilleur contrôle sur le message image.


oRequest := TsgcAnthropicClass_Request_Messages.Create;
Try
  oRequest.Model := 'claude-sonnet-4-20250514';
  oRequest.MaxTokens := 4096;

  oMessage := TsgcAnthropicClass_Request_Message.Create;
  oMessage.Role := 'user';

  // Image content block
  oImageBlock := TsgcAnthropicClass_Request_Content_Block.Create;
  oImageBlock.ContentType := 'image';
  oImageBlock.MediaType := 'image/jpeg';
  oImageBlock.Data := vBase64;

  // Text content block
  oTextBlock := TsgcAnthropicClass_Request_Content_Block.Create;
  oTextBlock.ContentType := 'text';
  oTextBlock.Text := 'Describe this image in detail.';

  SetLength(oBlocks, 2);
  oBlocks[0] := oImageBlock;
  oBlocks[1] := oTextBlock;
  oMessage.ContentBlocks := oBlocks;

  SetLength(oMessages, 1);
  oMessages[0] := oMessage;
  oRequest.Messages := oMessages;

  oResponse := Anthropic.CreateMessage(oRequest);
  Try
    if Length(oResponse.Content) > 0 then
      WriteLn(oResponse.Content[0].Text);
  Finally
    oResponse.Free;
  End;
Finally
  oImageBlock.Free;
  oTextBlock.Free;
  oMessage.Free;
  oRequest.Free;
End;