Claude, mesajların içinde içerik blokları olarak gönderilen PDF belgelerini ve metin dosyalarını işleyebilir. Belgeler base64 kodlu veri olarak veya URL aracılığıyla gönderilir ve Claude, içeriklerini analiz edebilir, özetleyebilir ve içerikleri hakkındaki soruları yanıtlayabilir.
Kolaylık yöntemini kullanarak bir soruyla bir PDF belgesi gönderin.
Anthropic := TsgcHTTP_API_Anthropic.Create(nil);
Anthropic.AnthropicOptions.ApiKey := 'API_KEY';
// Load PDF file and encode to base64
vBase64 := sgcBase64Encode(LoadFileToBytes('document.pdf'));
WriteLn(Anthropic._CreateDocumentMessage('claude-sonnet-4-20250514',
'Summarize this document.', vBase64, 'application/pdf'));
Citations etkinleştirilmiş bir belge göndermek için yazılı sınıfları kullanın. Citations etkinleştirildiğinde, Claude'un yanıtı kaynak belgenin belirli bölümlerine referanslar içerecektir.
Anthropic := TsgcHTTP_API_Anthropic.Create(nil);
Anthropic.AnthropicOptions.ApiKey := 'API_KEY';
oRequest := TsgcAnthropicClass_Request_Messages.Create;
Try
oRequest.Model := 'claude-sonnet-4-20250514';
oRequest.MaxTokens := 4096;
// Create document content block
oDocBlock := TsgcAnthropicClass_Request_Content_Block.Create;
oDocBlock.ContentType := 'document';
oDocBlock.SourceType := 'base64';
oDocBlock.MediaType := 'application/pdf';
oDocBlock.Data := sgcBase64Encode(LoadFileToBytes('report.pdf'));
oDocBlock.Title := 'Annual Report';
oDocBlock.CitationsEnabled := True;
// Create text prompt block
oTextBlock := TsgcAnthropicClass_Request_Content_Block.Create;
oTextBlock.ContentType := 'text';
oTextBlock.Text := 'What are the key findings?';
// Build message with content blocks
oMessage := TsgcAnthropicClass_Request_Message.Create;
oMessage.Role := 'user';
oBlocks := oMessage.ContentBlocks;
SetLength(oBlocks, 2);
oBlocks[0] := oDocBlock;
oBlocks[1] := oTextBlock;
oMessage.ContentBlocks := oBlocks;
oMessages := oRequest.Messages;
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
oDocBlock.Free;
oTextBlock.Free;
oMessage.Free;
oRequest.Free;
End;