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.
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'));
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;