Claude は画像を理解して分析できます。コンテンツブロック内でbase64エンコードされたデータとして画像を送信できます。
Claude に画像とともにプロンプトを送信してその画像を説明させます。
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'));
画像メッセージをより細かく制御するためにコンテンツブロックを使用します。
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;