Como gerar inserções de imagem com modelos de Microsoft foundry (clássico)

Aplica-se somente a:Portal Foundry (clássico). Este artigo não está disponível para o novo portal do Foundry. Saiba mais sobre o novo portal.

Nota

Links neste artigo podem abrir conteúdo na nova documentação do Microsoft Foundry em vez da documentação da Foundry (clássica) que você está exibindo agora.

Importante

Itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou ter recursos restritos. Para obter mais informações, consulte Supplemental Terms of Use for Microsoft Azure Previews.

Este artigo explica como usar a API de inserções de imagem com modelos de Microsoft foundry.

Pré-requisitos

Para usar modelos de inserção em seu aplicativo, você precisa:

  • Instale o pacote de inferência de IA Azure para Python com o seguinte comando:

    pip install -U azure-ai-inference
    
  • Uma implantação de modelo de inserções de imagem. Se você não tiver um, leia Adicionar e configurar Modelos do Foundry para adicionar um modelo de embeddings ao seu recurso.

    • Este exemplo usa Cohere-embed-v3-english do Cohere.

Usar inserções de imagem

Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.

import os
from azure.ai.inference import ImageEmbeddingsClient
from azure.core.credentials import AzureKeyCredential

client = ImageEmbeddingsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
    model="Cohere-embed-v3-english"
)

Se você configurou o recurso com suporte Microsoft Entra ID, poderá usar o snippet de código a seguir para criar um cliente.

import os
from azure.ai.inference import ImageEmbeddingsClient
from azure.identity import DefaultAzureCredential

client = ImageEmbeddingsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=DefaultAzureCredential(),
    model="Cohere-embed-v3-english"
)

Criar inserções

Para criar inserções de imagem, você precisa passar os dados da imagem como parte de sua solicitação. Os dados da imagem devem estar no formato PNG e codificados como base64.

from azure.ai.inference.models import ImageEmbeddingInput

image_input= ImageEmbeddingInput.load(image_file="sample1.png", image_format="png")
response = client.embed(
    input=[ image_input ],
)

Dica

Ao criar uma solicitação, leve em conta o limite de entrada do token para o modelo. Se você precisar inserir partes maiores do texto, precisará de uma estratégia de agrupamento.

A resposta é a seguinte, em que você pode ver as estatísticas de uso do modelo:

import numpy as np

for embed in response.data:
    print("Embedding of size:", np.asarray(embed.embedding).shape)

print("Model:", response.model)
print("Usage:", response.usage)

Importante

Talvez não haja suporte para inserções de computação em lotes para todos os modelos. Por exemplo, para Cohere-embed-v3-english o modelo, você precisa enviar uma imagem por vez.

Inserindo imagens e pares de texto

Alguns modelos podem gerar inserções de imagens e pares de texto. Nesse caso, você pode usar os campos image e text na solicitação para passar a imagem e o texto para o modelo. O exemplo a seguir mostra como criar inserções para imagens e pares de texto:

text_image_input= ImageEmbeddingInput.load(image_file="sample1.png", image_format="png")
text_image_input.text = "A cute baby sea otter"
response = client.embed(
    input=[ text_image_input ],
)

Criar diferentes tipos de inserções

Alguns modelos podem gerar várias inserções para a mesma entrada, dependendo de como você planeja usá-las. Essa funcionalidade permite que você recupere inserções mais precisas para padrões RAG.

O exemplo a seguir mostra como criar inserções usadas para criar uma inserção para um documento que será armazenado em um banco de dados vetor:

from azure.ai.inference.models import EmbeddingInputType

response = client.embed(
    input=[ image_input ],
    input_type=EmbeddingInputType.DOCUMENT,
)

Ao trabalhar em uma consulta para recuperar esse documento, você pode usar o snippet de código a seguir para criar as inserções para a consulta e maximizar o desempenho de recuperação.

from azure.ai.inference.models import EmbeddingInputType

response = client.embed(
    input=[ image_input ],
    input_type=EmbeddingInputType.QUERY,
)

Observe que nem todos os modelos de inserção dão suporte à indicação do tipo de entrada na solicitação e, nesses casos, um erro 422 é retornado.

Importante

Itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou ter recursos restritos. Para obter mais informações, consulte Supplemental Terms of Use for Microsoft Azure Previews.

Este artigo explica como usar a API de inserções de imagem com modelos de Microsoft foundry.

Pré-requisitos

Para usar modelos de inserção em seu aplicativo, você precisa:

  • Instale a biblioteca de inferência Azure para JavaScript com o seguinte comando:

    npm install @azure-rest/ai-inference
    npm install @azure/core-auth
    npm install @azure/identity
    

    Se você estiver usando Node.js, poderá configurar as dependências no package.json:

    package.json

    {
      "name": "main_app",
      "version": "1.0.0",
      "description": "",
      "main": "app.js",
      "type": "module",
      "dependencies": {
        "@azure-rest/ai-inference": "1.0.0-beta.6",
        "@azure/core-auth": "1.9.0",
        "@azure/core-sse": "2.2.0",
        "@azure/identity": "4.8.0"
      }
    }
    
  • Importe o seguinte:

    import ModelClient from "@azure-rest/ai-inference";
    import { isUnexpected } from "@azure-rest/ai-inference";
    import { createSseStream } from "@azure/core-sse";
    import { AzureKeyCredential } from "@azure/core-auth";
    import { DefaultAzureCredential } from "@azure/identity";
    
  • Uma implantação de modelo de inserções de imagem. Se você não tiver um, leia Adicione e configure modelos Foundry para adicionar um modelo de embeddings ao seu recurso.

    • Este exemplo usa Cohere-embed-v3-english do Cohere.

Usar inserções de imagem

Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.

const client = ModelClient(
    "https://<resource>.services.ai.azure.com/models", 
    new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);

Se você configurou o recurso com suporte Microsoft Entra ID, poderá usar o snippet de código a seguir para criar um cliente.

const clientOptions = { credentials: { "https://cognitiveservices.azure.com" } };

const client = ModelClient(
    "https://<resource>.services.ai.azure.com/models", 
    new DefaultAzureCredential()
    clientOptions,
);

Criar inserções

Para criar inserções de imagem, você precisa passar os dados da imagem como parte de sua solicitação. Os dados da imagem devem estar no formato PNG e codificados como base64.

var image_path = "sample1.png";
var image_data = fs.readFileSync(image_path);
var image_data_base64 = Buffer.from(image_data).toString("base64");

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        model: "Cohere-embed-v3-english",
    }
});

Dica

Ao criar uma solicitação, leve em conta o limite de entrada do token para o modelo. Se você precisar inserir partes maiores do texto, precisará de uma estratégia de agrupamento.

A resposta é a seguinte, em que você pode ver as estatísticas de uso do modelo:

if (isUnexpected(response)) {
    throw response.body.error;
}

console.log(response.embedding);
console.log(response.body.model);
console.log(response.body.usage);

Importante

Talvez não haja suporte para inserções de computação em lotes para todos os modelos. Por exemplo, para Cohere-embed-v3-english o modelo, você precisa enviar uma imagem por vez.

Inserindo imagens e pares de texto

Alguns modelos podem gerar inserções de imagens e pares de texto. Nesse caso, você pode usar os campos image e text na solicitação para passar a imagem e o texto para o modelo. O exemplo a seguir mostra como criar inserções para imagens e pares de texto:

var image_path = "sample1.png";
var image_data = fs.readFileSync(image_path);
var image_data_base64 = Buffer.from(image_data).toString("base64");

var response = await client.path("/images/embeddings").post({
    body: {
        input: [
            {
                text: "A cute baby sea otter",
                image: image_data_base64
            }
        ],
        model: "Cohere-embed-v3-english",
    }
});

Criar diferentes tipos de inserções

Alguns modelos podem gerar várias inserções para a mesma entrada, dependendo de como você planeja usá-las. Essa funcionalidade permite que você recupere inserções mais precisas para padrões RAG.

O exemplo a seguir mostra como criar inserções usadas para criar uma inserção para um documento que será armazenado em um banco de dados vetor:

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "document",
        model: "Cohere-embed-v3-english",
    }
});

Ao trabalhar em uma consulta para recuperar esse documento, você pode usar o snippet de código a seguir para criar as inserções para a consulta e maximizar o desempenho de recuperação.

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "query",
        model: "Cohere-embed-v3-english",
    }
});

Observe que nem todos os modelos de inserção dão suporte à indicação do tipo de entrada na solicitação e, nesses casos, um erro 422 é retornado.

Nota

O uso de inserções de imagem só tem suporte usando solicitações Python, JavaScript, C#ou REST.

Importante

Itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou ter recursos restritos. Para obter mais informações, consulte Supplemental Terms of Use for Microsoft Azure Previews.

Este artigo explica como usar a API de inserções de imagem com modelos de Microsoft foundry.

Pré-requisitos

Para usar modelos de inserção em seu aplicativo, você precisa:

  • Instale o pacote de inferência de IA Azure com o seguinte comando:

    dotnet add package Azure.AI.Inference --prerelease
    
  • Se você estiver usando Entra ID, também precisará do seguinte pacote:

    dotnet add package Azure.Identity
    
  • Uma implantação de modelo de inserções de imagem. Se você não tiver um, leia Adicionar e configurar Modelos do Foundry para adicionar um modelo de embeddings ao seu recurso.

    • Este exemplo usa Cohere-embed-v3-english do Cohere.

Usar inserções de imagem

Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.

ImageEmbeddingsClient client = new ImageEmbeddingsClient(
    new Uri("https://<resource>.services.ai.azure.com/models"),
    new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);

Se você configurou o recurso com suporte Microsoft Entra ID, poderá usar o snippet de código a seguir para criar um cliente. Observe que includeInteractiveCredentials é configurado para true apenas para fins de demonstração, permitindo que a autenticação aconteça usando o navegador da Web. Para cargas de trabalho de produção, você deve remover o parâmetro.

TokenCredential credential = new DefaultAzureCredential(includeInteractiveCredentials: true);
AzureAIInferenceClientOptions clientOptions = new AzureAIInferenceClientOptions();
BearerTokenAuthenticationPolicy tokenPolicy = new BearerTokenAuthenticationPolicy(credential, new string[] { "https://cognitiveservices.azure.com/.default" });

clientOptions.AddPolicy(tokenPolicy, HttpPipelinePosition.PerRetry);

ImageEmbeddingsClient client = new ImageEmbeddingsClient(
    new Uri("https://<resource>.services.ai.azure.com/models"),
    credential,
    clientOptions
);

Criar inserções

Para criar inserções de imagem, você precisa passar os dados da imagem como parte de sua solicitação. Os dados da imagem devem estar no formato PNG e codificados como base64.

List<ImageEmbeddingInput> input = new List<ImageEmbeddingInput>
{
    ImageEmbeddingInput.Load(imageFilePath:"sampleImage.png", imageFormat:"png")
};

var requestOptions = new ImageEmbeddingsOptions()
{
    Input = input,
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

Dica

Ao criar uma solicitação, leve em conta o limite de entrada do token para o modelo. Se você precisar inserir partes maiores do texto, precisará de uma estratégia de agrupamento.

A resposta é a seguinte, em que você pode ver as estatísticas de uso do modelo:

foreach (EmbeddingItem item in response.Value.Data)
{
    List<float> embedding = item.Embedding.ToObjectFromJson<List<float>>();
    Console.WriteLine($"Index: {item.Index}, Embedding: <{string.Join(", ", embedding)}>");
}

Importante

Talvez não haja suporte para inserções de computação em lotes para todos os modelos. Por exemplo, para Cohere-embed-v3-english o modelo, você precisa enviar uma imagem por vez.

Inserindo imagens e pares de texto

Alguns modelos podem gerar inserções de imagens e pares de texto. Nesse caso, você pode usar os campos image e text na solicitação para passar a imagem e o texto para o modelo. O exemplo a seguir mostra como criar inserções para imagens e pares de texto:

var image_input = ImageEmbeddingInput.Load(imageFilePath:"sampleImage.png", imageFormat:"png")
image_input.text = "A cute baby sea otter"

var requestOptions = new ImageEmbeddingsOptions()
{
    Input = new List<ImageEmbeddingInput>
    {
        image_input
    },
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

Criar diferentes tipos de inserções

Alguns modelos podem gerar várias inserções para a mesma entrada, dependendo de como você planeja usá-las. Essa funcionalidade permite que você recupere inserções mais precisas para padrões RAG.

O exemplo a seguir mostra como criar inserções para um documento que será armazenado em um banco de dados de vetor:

var requestOptions = new EmbeddingsOptions()
{
    Input = image_input,
    InputType = EmbeddingInputType.DOCUMENT, 
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

Ao trabalhar em uma consulta para recuperar esse documento, você pode usar o snippet de código a seguir para criar as inserções para a consulta e maximizar o desempenho de recuperação.

var requestOptions = new EmbeddingsOptions()
{
    Input = image_input,
    InputType = EmbeddingInputType.QUERY,
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

Observe que nem todos os modelos de inserção dão suporte à indicação do tipo de entrada na solicitação e, nesses casos, um erro 422 é retornado.

Importante

Itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou ter recursos restritos. Para obter mais informações, consulte Supplemental Terms of Use for Microsoft Azure Previews.

Este artigo explica como usar a API de inserções de imagem com modelos de Microsoft foundry.

Pré-requisitos

Para usar modelos de inserção em seu aplicativo, você precisa:

  • Uma implantação de modelo de inserções de imagem. Se você não tiver um, leia Adicione e configure modelos Foundry para adicionar um modelo de embeddings ao seu recurso.

    • Este exemplo usa Cohere-embed-v3-english do Cohere.

Usar inserções de imagem

Para usar as inserções de texto, use a rota /images/embeddings acrescentada à URL base junto com a credencial indicada em api-key. Authorization o cabeçalho é também suportado com o formato Bearer <key>.

POST https://<resource>.services.ai.azure.com/models/images/embeddings?api-version=2024-05-01-preview
Content-Type: application/json
api-key: <key>

Se você configurou o recurso com suporte Microsoft Entra ID, passe o token no cabeçalho Authorization com o formato Bearer <token>. Use o escopo https://ai.azure.com/.default.

POST https://<resource>.services.ai.azure.com/models/images/embeddings?api-version=2024-05-01-preview
Content-Type: application/json
Authorization: Bearer <token>

Usar Microsoft Entra ID pode exigir uma configuração adicional em seu recurso para conceder acesso. Saiba como configure autenticação sem chave com Microsoft Entra ID.

Criar inserções

Para criar inserções de imagem, você precisa passar os dados da imagem como parte de sua solicitação. Os dados da imagem devem estar no formato PNG e codificados como base64.

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ]
}

Dica

Ao criar uma solicitação, leve em conta o limite de entrada do token para o modelo. Se você precisar inserir partes maiores do texto, precisará de uma estratégia de agrupamento.

A resposta é a seguinte, em que você pode ver as estatísticas de uso do modelo:

{
    "id": "0ab1234c-d5e6-7fgh-i890-j1234k123456",
    "object": "list",
    "data": [
        {
            "index": 0,
            "object": "embedding",
            "embedding": [
                0.017196655,
                // ...
                -0.000687122,
                -0.025054932,
                -0.015777588
            ]
        }
    ],
    "model": "Cohere-embed-v3-english",
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 0,
        "total_tokens": 9
    }
}

Importante

Talvez não haja suporte para inserções de computação em lotes para todos os modelos. Por exemplo, para Cohere-embed-v3-english o modelo, você precisa enviar uma imagem por vez.

Inserindo imagens e pares de texto

Alguns modelos podem gerar inserções de imagens e pares de texto. Nesse caso, você pode usar os campos image e text na solicitação para passar a imagem e o texto para o modelo. O exemplo a seguir mostra como criar inserções para imagens e pares de texto:

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh...",
            "text": "A photo of a cat"
        }
    ]
}

Criar diferentes tipos de inserções

Alguns modelos podem gerar várias inserções para a mesma entrada, dependendo de como você planeja usá-las. Essa funcionalidade permite que você recupere inserções mais precisas para padrões RAG.

O exemplo a seguir mostra como criar inserções usadas para criar uma inserção para um documento que será armazenado em um banco de dados vetor:

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ],
    "input_type": "document"
}

Ao trabalhar em uma consulta para recuperar esse documento, você pode usar o snippet de código a seguir para criar as inserções para a consulta e maximizar o desempenho de recuperação.

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ],
    "input_type": "query"
}

Observe que nem todos os modelos de inserção dão suporte à indicação do tipo de entrada na solicitação e, nesses casos, um erro 422 é retornado.