Biblioteca de clientes de Tradução de Texto do Azure para .NET – versão 1.0.0-beta.1
A Tradução de Texto é um recurso da API REST baseada em nuvem do serviço Tradutor que usa a tecnologia de tradução automática neural para permitir tradução rápida e precisa de texto de origem para destino em tempo real em todos os idiomas compatíveis.
Use a biblioteca de clientes de Tradução de Texto para .NET para:
Retornar uma lista de idiomas compatíveis com as operações Traduzir, Transliteratar e Dicionário.
Renderize texto de idioma de origem único em vários textos de linguagem de destino com uma única solicitação.
Converter texto de um idioma de origem em letras de um script diferente.
Retornar palavras equivalentes para o termo de origem no idioma de destino.
Retornar exemplos de contexto e estrutura gramatical para o termo de origem e o par de termos de destino.
Código-fonte | Documentação | de referência da APIDocumentação do produto
Introdução
Instalar o pacote
Instale a biblioteca de clientes de Tradução de Texto do Azure para .NET com o NuGet:
dotnet add package Azure.AI.Translation.Text --prerelease
Esta tabela mostra a relação entre as versões do SDK e as versões de API com suporte do serviço:
Versão do SDK | Versão da API do serviço com suporte |
---|---|
1.0.0-beta.1 | 3.0 |
Pré-requisitos
- Uma assinatura do Azure.
- Um serviço tradutor existente ou um recurso dos Serviços Cognitivos. Você pode criar um recurso de Tradutor após Criar um recurso de Tradutor.
Autenticar o cliente
A interação com o serviço que usa a biblioteca de clientes começa com a criação de uma instância da classe TextTranslationClient . Você precisará de uma chave de API ou TokenCredential
de instanciar um objeto cliente. Para obter mais informações sobre como autenticar com os Serviços Cognitivos, consulte Autenticar solicitações para o Serviço de Tradução.
Obter uma chave de API
Você pode obter as endpoint
informações do recurso e API key
Region
dos Serviços Cognitivos ou do recurso de serviço tradutor no Portal do Azure.
Como alternativa, use o snippet da CLI do Azure abaixo para obter a chave de API do recurso de serviço tradutor.
az cognitiveservices account keys list --resource-group <your-resource-group-name> --name <your-resource-name>
Criar um TextTranslationClient
usando uma chave de API e uma credencial de região
Depois de ter o valor da chave de API e região, crie um AzureKeyCredential
. Isso permitirá que você atualize a chave de API sem criar um novo cliente.
Com o valor do ponto AzureKeyCredential
de extremidade e um Region
, você pode criar o TextTranslationClient:
AzureKeyCredential credential = new("<apiKey>");
TextTranslationClient client = new(credential, "<region>");
Principais conceitos
TextTranslationClient
Um TextTranslationClient
é a interface principal para desenvolvedores que usam a biblioteca de clientes de Tradução de Texto. Ele fornece operações síncronas e assíncronas para acessar um uso específico do tradutor de texto, como obter detecção de idiomas com suporte ou tradução de texto.
Entrada
Um elemento de texto (string
) é uma única unidade de entrada a ser processada pelos modelos de tradução no serviço tradutor. As operações em TextTranslationClient
podem ter um único elemento de texto ou uma coleção de elementos de texto.
Para limites de comprimento do elemento de texto, tamanho máximo de solicitações e codificação de texto com suporte, consulte aqui.
Retornar valor
Os valores retornados, como Response<IReadOnlyList<TranslatedTextItem>>
, são o resultado de uma operação de Conversão de Texto, ela contém matriz com um resultado para cada cadeia de caracteres na matriz de entrada. O valor retornado de uma operação também pode incluir, opcionalmente, informações sobre o elemento de texto de entrada (por exemplo, idioma detectado).
Acesso thread-safe
Garantimos que todos os métodos de instância do cliente sejam thread-safe e independentes uns dos outros (diretriz). Isso garante que a recomendação de reutilize instâncias de cliente seja sempre segura, mesmo entre threads.
Conceitos adicionais
Opções | do cliente Acessando a resposta | Operações de execução prolongada | Tratamento de falhas | Diagnostics | Zombando | Tempo de vida do cliente
Exemplos
A seção a seguir fornece vários snippets de código usando o client
criado acima e aborda os main recursos presentes nesta biblioteca de clientes. Embora a maioria dos snippets abaixo usem chamadas de serviço assíncronas, tenha em mente que o Azure.AI.Translation.Text
pacote dá suporte a APIs síncronas e assíncronas.
Obter idiomas com suporte
Obtém o conjunto de idiomas atualmente compatíveis com outras operações do Tradutor.
try
{
Response<GetLanguagesResult> response = await client.GetLanguagesAsync(cancellationToken: CancellationToken.None).ConfigureAwait(false);
GetLanguagesResult languages = response.Value;
Console.WriteLine($"Number of supported languages for translate operations: {languages.Translation.Count}.");
}
catch (RequestFailedException exception)
{
Console.WriteLine($"Error Code: {exception.ErrorCode}");
Console.WriteLine($"Message: {exception.Message}");
}
Para obter exemplos sobre como usar o languages
ponto de extremidade, consulte mais exemplos aqui.
Consulte a documentação do serviço para obter uma discussão conceitual sobre idiomas.
Translate
Renderiza um texto de idioma de origem para vários textos de idioma de destino com apenas uma solicitação.
try
{
string targetLanguage = "cs";
string inputText = "This is a test.";
Response<IReadOnlyList<TranslatedTextItem>> response = await client.TranslateAsync(targetLanguage, inputText).ConfigureAwait(false);
IReadOnlyList<TranslatedTextItem> translations = response.Value;
TranslatedTextItem translation = translations.FirstOrDefault();
Console.WriteLine($"Detected languages of the input text: {translation?.DetectedLanguage?.Language} with score: {translation?.DetectedLanguage?.Score}.");
Console.WriteLine($"Text was translated to: '{translation?.Translations?.FirstOrDefault().To}' and the result is: '{translation?.Translations?.FirstOrDefault()?.Text}'.");
}
catch (RequestFailedException exception)
{
Console.WriteLine($"Error Code: {exception.ErrorCode}");
Console.WriteLine($"Message: {exception.Message}");
}
Para obter exemplos sobre como usar o translate
ponto de extremidade, consulte mais exemplos aqui.
Consulte a documentação do serviço para obter uma discussão conceitual sobre tradução.
Transliterate
Converte caracteres ou letras de um idioma de origem nos caracteres ou letras correspondentes de um idioma de destino.
try
{
string language = "zh-Hans";
string fromScript = "Hans";
string toScript = "Latn";
string inputText = "这是个测试。";
Response<IReadOnlyList<TransliteratedText>> response = await client.TransliterateAsync(language, fromScript, toScript, inputText).ConfigureAwait(false);
IReadOnlyList<TransliteratedText> transliterations = response.Value;
TransliteratedText transliteration = transliterations.FirstOrDefault();
Console.WriteLine($"Input text was transliterated to '{transliteration?.Script}' script. Transliterated text: '{transliteration?.Text}'.");
}
catch (RequestFailedException exception)
{
Console.WriteLine($"Error Code: {exception.ErrorCode}");
Console.WriteLine($"Message: {exception.Message}");
}
Para obter exemplos sobre como usar o transliterate
ponto de extremidade, consulte mais exemplos aqui.
Consulte a documentação do serviço para obter uma discussão conceitual sobre transliteração.
Interromper a frase
Identifica o posicionamento dos limites de frase em uma parte do texto.
try
{
string inputText = "How are you? I am fine. What did you do today?";
Response<IReadOnlyList<BreakSentenceItem>> response = await client.FindSentenceBoundariesAsync(inputText).ConfigureAwait(false);
IReadOnlyList<BreakSentenceItem> brokenSentences = response.Value;
BreakSentenceItem brokenSentence = brokenSentences.FirstOrDefault();
Console.WriteLine($"Detected languages of the input text: {brokenSentence?.DetectedLanguage?.Language} with score: {brokenSentence?.DetectedLanguage?.Score}.");
Console.WriteLine($"The detected sentece boundaries: '{string.Join(",", brokenSentence?.SentLen)}'.");
}
catch (RequestFailedException exception)
{
Console.WriteLine($"Error Code: {exception.ErrorCode}");
Console.WriteLine($"Message: {exception.Message}");
}
Para obter exemplos sobre como usar o break sentece
ponto de extremidade, consulte mais exemplos aqui.
Consulte a documentação do serviço para obter uma discussão conceitual sobre a frase de interrupção.
Pesquisa no dicionário
Retorna palavras equivalentes para o termo de origem no idioma de destino.
try
{
string sourceLanguage = "en";
string targetLanguage = "es";
string inputText = "fly";
Response<IReadOnlyList<DictionaryLookupItem>> response = await client.LookupDictionaryEntriesAsync(sourceLanguage, targetLanguage, inputText).ConfigureAwait(false);
IReadOnlyList<DictionaryLookupItem> dictionaryEntries = response.Value;
DictionaryLookupItem dictionaryEntry = dictionaryEntries.FirstOrDefault();
Console.WriteLine($"For the given input {dictionaryEntry?.Translations?.Count} entries were found in the dictionary.");
Console.WriteLine($"First entry: '{dictionaryEntry?.Translations?.FirstOrDefault()?.DisplayTarget}', confidence: {dictionaryEntry?.Translations?.FirstOrDefault()?.Confidence}.");
}
catch (RequestFailedException exception)
{
Console.WriteLine($"Error Code: {exception.ErrorCode}");
Console.WriteLine($"Message: {exception.Message}");
}
Para obter exemplos sobre como usar o dictionary lookup
ponto de extremidade, consulte mais exemplos aqui.
Consulte a documentação do serviço para obter uma discussão conceitual sobre a pesquisa de dicionário.
Exemplos de dicionário
Retorna exemplos de contexto e estrutura gramatical para o termo de origem e o par de termos de destino.
try
{
string sourceLanguage = "en";
string targetLanguage = "es";
IEnumerable<InputTextWithTranslation> inputTextElements = new[]
{
new InputTextWithTranslation("fly", "volar")
};
Response<IReadOnlyList<DictionaryExampleItem>> response = await client.LookupDictionaryExamplesAsync(sourceLanguage, targetLanguage, inputTextElements).ConfigureAwait(false);
IReadOnlyList<DictionaryExampleItem> dictionaryEntries = response.Value;
DictionaryExampleItem dictionaryEntry = dictionaryEntries.FirstOrDefault();
Console.WriteLine($"For the given input {dictionaryEntry?.Examples?.Count} examples were found in the dictionary.");
DictionaryExample firstExample = dictionaryEntry?.Examples?.FirstOrDefault();
Console.WriteLine($"Example: '{string.Concat(firstExample.TargetPrefix, firstExample.TargetTerm, firstExample.TargetSuffix)}'.");
}
catch (RequestFailedException exception)
{
Console.WriteLine($"Error Code: {exception.ErrorCode}");
Console.WriteLine($"Message: {exception.Message}");
}
Para obter exemplos sobre como usar o dictionary examples
ponto de extremidade, consulte mais exemplos aqui.
Consulte a documentação do serviço para obter uma discussão conceitual sobre exemplos de dicionário.
Solução de problemas
Quando você interage com o Serviço de Tradução usando a biblioteca de clientes de Tradução de Texto, os erros retornados pelo serviço tradutor correspondem aos mesmos códigos http status retornados para solicitações da API REST.
Por exemplo, se você enviar uma solicitação de tradução sem um idioma de tradução de destino, um 400
erro será retornado, indicando "Solicitação Incorreta".
try
{
var translation = client.TranslateAsync(Array.Empty<string>(), new[] { new InputText { Text = "This is a Test" } }).ConfigureAwait(false);
}
catch (RequestFailedException e)
{
Console.WriteLine(e.ToString());
}
Você observará que informações adicionais são registradas, como a ID de solicitação do cliente da operação.
Message:
Azure.RequestFailedException: Service request failed.
Status: 400 (Bad Request)
Content:
{"error":{"code":400036,"message":"The target language is not valid."}}
Headers:
X-RequestId: REDACTED
Access-Control-Expose-Headers: REDACTED
X-Content-Type-Options: REDACTED
Strict-Transport-Security: REDACTED
Date: Mon, 27 Feb 2023 23:31:37 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 71
Configuração do registro em log do console
A maneira mais simples de ver os logs é habilitar o log do console. Para criar um ouvinte de log do SDK do Azure que gera mensagens para o console, use o método AzureEventSourceListener.CreateConsoleLogger.
// Setup a listener to monitor logged events.
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();
Para saber mais sobre outros mecanismos de registro em log, confira aqui.
Próximas etapas
Exemplos que mostram como usar essa biblioteca de clientes estão disponíveis neste repositório GitHub. Os exemplos são fornecidos para cada main área funcional e, para cada área, os exemplos são fornecidos no modo de sincronização e assíncrono.
- Criar TextTranslationClient
- Idiomas
- Translate
- Transliterate
- Dividir Frase
- Pesquisa no dicionário
- Exemplos de dicionário
Participante
Consulte o CONTRIBUTING.md para obter detalhes sobre como criar, testar e contribuir para essa biblioteca.
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite cla.microsoft.com.
Quando você envia uma solicitação de pull, um bot do CLA determina automaticamente se você precisa fornecer um CLA e preencher a PR corretamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que usam nosso CLA.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas frequentes sobre o Código de Conduta ou contate opencode@microsoft.com para enviar outras perguntas ou comentários.
Azure SDK for .NET