Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Atualmente, a extensão do OpenAI do Azure para Azure Functions está em versão prévia.
A associação de entrada de consulta do assistente do Azure OpenAI permite que você integre consultas de API de Assistentes em suas execuções de código.
Para obter informações sobre os detalhes de instalação e configuração da extensão do OpenAI do Azure, confira Extensões do OpenAI do Azure para Azure Functions. Para saber mais sobre os assistentes do OpenAI do Azure, consulte API de Assistentes do OpenAI do Azure.
Observação
Referências e exemplos só são fornecidos para o modelo do Node.js v4.
Observação
Referências e exemplos só são fornecidos para o modelo do Python v2.
Observação
Embora haja suporte para ambos os modelos de processo C#, apenas exemplos de modelo de trabalho isolados são fornecidos.
Exemplo
O suporte do Go não está disponível para essa ligação no momento.
Este exemplo demonstra o processo de criação, em que a função HTTP GET que consulta o histórico de conversa do chatbot assistente. A resposta ao prompt é retornada na resposta HTTP.
/// <summary>
/// HTTP GET function that queries the conversation history of the assistant chat bot.
/// </summary>
[Function(nameof(GetChatState))]
public static IActionResult GetChatState(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "assistants/{assistantId}")] HttpRequestData req,
string assistantId,
[AssistantQueryInput("{assistantId}", TimestampUtc = "{Query.timestampUTC}", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
return new OkObjectResult(state);
}
Este exemplo demonstra o processo de criação, em que a função HTTP GET que consulta o histórico de conversa do chatbot assistente. A resposta ao prompt é retornada na resposta HTTP.
/*
* HTTP GET function that queries the conversation history of the assistant chat bot.
*/
@FunctionName("GetChatState")
public HttpResponseMessage getChatState(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.FUNCTION,
route = "assistants/{assistantId}")
HttpRequestMessage<Optional<String>> request,
@BindingName("assistantId") String assistantId,
@AssistantQuery(name = "AssistantState", id = "{assistantId}", timestampUtc = "{Query.timestampUTC}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
final ExecutionContext context) {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(state)
.build();
}
Este exemplo demonstra o processo de criação, em que a função HTTP GET que consulta o histórico de conversa do chatbot assistente. A resposta ao prompt é retornada na resposta HTTP.
const { app, input, output } = require("@azure/functions");
const chatBotQueryInput = input.generic({
type: 'assistantQuery',
id: '{assistantId}',
timestampUtc: '{Query.timestampUTC}',
chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
collectionName: COLLECTION_NAME
})
app.http('GetChatState', {
methods: ['GET'],
route: 'assistants/{assistantId}',
authLevel: 'function',
extraInputs: [chatBotQueryInput],
handler: async (_, context) => {
const state = context.extraInputs.get(chatBotQueryInput)
return { status: 200, jsonBody: state }
}
})
Este exemplo demonstra o processo de criação, em que a função HTTP GET que consulta o histórico de conversa do chatbot assistente. A resposta ao prompt é retornada na resposta HTTP.
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"
const chatBotQueryInput = input.generic({
type: 'assistantQuery',
id: '{assistantId}',
timestampUtc: '{Query.timestampUTC}',
chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
collectionName: COLLECTION_NAME
})
app.http('GetChatState', {
methods: ['GET'],
route: 'assistants/{assistantId}',
authLevel: 'function',
extraInputs: [chatBotQueryInput],
handler: async (_, context) => {
const state: any = context.extraInputs.get(chatBotQueryInput)
return { status: 200, jsonBody: state }
}
})
Este exemplo demonstra o processo de criação, em que a função HTTP GET que consulta o histórico de conversa do chatbot assistente. A resposta ao prompt é retornada na resposta HTTP.
Aqui está o arquivo function.json para Obter estado de bate-papo:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"route": "assistants/{assistantId}",
"methods": [
"get"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"name": "State",
"type": "assistantQuery",
"direction": "in",
"dataType": "string",
"id": "{assistantId}",
"timestampUtc": "{Query.timestampUTC}",
"chatStorageConnectionSetting": "AzureWebJobsStorage",
"collectionName": "ChatState"
}
]
}
Para obter mais informações sobre as propriedades do arquivo function.json, consulte a seção Configuração.
using namespace System.Net
param($Request, $TriggerMetadata, $State)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $State
Headers = @{
"Content-Type" = "application/json"
}
})
Este exemplo demonstra o processo de criação, em que a função HTTP GET que consulta o histórico de conversa do chatbot assistente. A resposta ao prompt é retornada na resposta HTTP.
@apis.function_name("GetChatState")
@apis.route(route="assistants/{assistantId}", methods=["GET"])
@apis.assistant_query_input(
arg_name="state",
id="{assistantId}",
timestamp_utc="{Query.timestampUTC}",
chat_storage_connection_setting=DEFAULT_CHAT_STORAGE_SETTING,
collection_name=DEFAULT_CHAT_COLLECTION_NAME,
)
def get_chat_state(req: func.HttpRequest, state: str) -> func.HttpResponse:
return func.HttpResponse(state, status_code=200, mimetype="application/json")
Atributos
Aplique o atributo AssistantQuery para definir uma associação de entrada de consulta do assistente, que dá suporte a esses parâmetros:
| Parâmetro | Descrição |
|---|---|
| Id | Obtém a ID do assistente para consulta. |
| TimeStampUtc | Opcional. Obtém ou define o carimbo de data/hora da mensagem mais antiga do histórico de chat a ser buscado. O carimbo de data/hora deve estar no formato ISO 8601 – por exemplo, 2023-08-01T00:00:00Z. |
Anotações
A anotação assistantQuery permite que você defina uma associação de entrada de consulta do assistente, que dá suporte a estes parâmetros:
| Elemento | Descrição |
|---|---|
| nome | Obtém ou define o nome da associação de entrada. |
| id | Obtém a ID do assistente para consulta. |
| timeStampUtc | Opcional. Obtém ou define o carimbo de data/hora da mensagem mais antiga do histórico de chat a ser buscado. O carimbo de data/hora deve estar no formato ISO 8601 – por exemplo, 2023-08-01T00:00:00Z. |
Decoradores
Durante a versão prévia, defina a associação de entrada como uma associação generic_input_binding do tipo assistantQuery, que dá suporte a estes parâmetros:
| Parâmetro | Descrição |
|---|---|
| arg_name | O nome da variável que representa o parâmetro de associação. |
| id | Obtém a ID do assistente para consulta. |
| time_stamp_utc | Opcional. Obtém ou define o carimbo de data/hora da mensagem mais antiga do histórico de chat a ser buscado. O carimbo de data/hora deve estar no formato ISO 8601 – por exemplo, 2023-08-01T00:00:00Z. |
Configuração
A associação dá suporte a essas propriedades de configuração definidas no arquivo function.json.
| Propriedade | Descrição |
|---|---|
| tipo | Deve ser assistantQuery. |
| direção | Deve ser in. |
| nome | O nome da associação de entrada. |
| id | Obtém a ID do assistente para consulta. |
| timeStampUtc | Opcional. Obtém ou define o carimbo de data/hora da mensagem mais antiga do histórico de chat a ser buscado. O carimbo de data/hora deve estar no formato ISO 8601 – por exemplo, 2023-08-01T00:00:00Z. |
Configuração
A associação dá suporte a estas propriedades, que são definidas no código:
| Propriedade | Descrição |
|---|---|
| id | Obtém a ID do assistente para consulta. |
| timeStampUtc | Opcional. Obtém ou define o carimbo de data/hora da mensagem mais antiga do histórico de chat a ser buscado. O carimbo de data/hora deve estar no formato ISO 8601 – por exemplo, 2023-08-01T00:00:00Z. |
Uso
Consulte a Seção de exemplo para obter exemplos completos.
Conexões
Para usar a extensão de binding Azure OpenAI, você precisa especificar uma conexão com uma definição de modelo OpenAI. Defina a conexão do modelo OpenAI nas suas ligações usando uma destas abordagens:
- Use a
AIConnectionNamepropriedade de binding (preferida para Azure OpenAI). - Configure
AZURE_OPENAI_ENDPOINTeAZURE_OPENAI_KEYesteja nas configurações do app (para Azure OpenAI). - Defina apenas
Open_API_Keynas configurações do app (parahttps://api.openai.com).
A forma como você configura a conexão depende tanto da API do modelo quanto do método de autenticação, conforme indicado pela tabela a seguir:
| API de Autenticação/Modelo | Azure OpenAI | OpenAI (https://api.openai.com) |
|---|---|---|
| Conexão de identidade gerenciada | AIConnectionName |
Sem suporte |
| Referência ao Key Vault | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
| Referência de configuração do aplicativo | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
| Segredo compartilhado | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
Use conexões baseadas em identidade gerenciada e a propriedade AIConnectionName .
Quando você usa AIConnectionName, o valor dessa configuração de propriedade depende do tipo de conexão:
-
Conexão de identidade gerenciada: A
AIConnectionNamepropriedade é<CONNECTION_NAME_PREFIX>compartilhada por um grupo de configurações que, juntas, definem uma conexão baseada em identidade com o Azure OpenAI. Para mais informações, veja Definir conexões de identidade. -
Referência Key Vault: A
AIConnectionNameconfiguração de propriedade retorna uma referência ao Azure Key Vault para o local onde a chave API é mantida centralmente. Para mais informações, veja Definir conexões do Key Vault. -
Referência de Configuração de App: A
AIConnectionNameconfiguração de propriedade retorna uma referência Configuração de Aplicativos do Azure que retorna uma chave API ou uma referência ao Key Vault. Para mais informações, veja Configuração de Aplicativos do Azure no artigo de conexões. -
Chave API: A
AIConnectionNameconfiguração de propriedade resolve para as configurações do app contendo diretamente o endpoint e a chave. Como as chaves compartilhadas podem ser comprometidas, use conexões de identidade gerenciadas sempre que possível. Para mais informações, veja Definir conexões.
Para saber mais sobre conexões de bindings, veja Gerenciar conexões no Azure Functions.
As ligações do OpenAI incluem uma AIConnectionName propriedade que você pode usar para especificar o <ConnectionNamePrefix> grupo de configurações de aplicativos que definem a conexão com o Azure OpenAI:
| Nome da configuração | Descrição |
|---|---|
<CONNECTION_NAME_PREFIX>__endpoint |
Define o endpoint URI do serviço Azure OpenAI. Essa configuração é sempre necessária. |
<CONNECTION_NAME_PREFIX>__clientId |
Define a identidade específica atribuída pelo usuário a ser usada ao obter um token de acesso. Requer que <CONNECTION_NAME_PREFIX>__credential esteja definido como managedidentity. A propriedade aceita uma ID de cliente correspondente a uma identidade atribuída pelo usuário atribuída ao aplicativo. É inválido especificar uma ID de recurso e uma ID de cliente. Se você não especificar essa propriedade, a identidade atribuída ao sistema é usada. Essa propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não puder ser definido. |
<CONNECTION_NAME_PREFIX>__credential |
Define como um token de access é obtido para a conexão. Use managedidentity para a autenticação da identidade gerenciada. Esse valor só é válido quando uma identidade gerenciada está disponível no ambiente de hospedagem. |
<CONNECTION_NAME_PREFIX>__managedIdentityResourceId |
Quando credential está definido como managedidentity, defina essa propriedade para especificar o Identificador de recurso a usar ao obter um token. A propriedade aceita um identificador de recurso correspondente à ID do recurso da identidade gerenciada definida pelo usuário. É inválido especificar uma ID de recurso e uma ID de cliente. Se você não especificar nenhum dos dois, a identidade atribuída pelo sistema é usada. Essa propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não puder ser definido. |
<CONNECTION_NAME_PREFIX>__key |
Define a chave secreta compartilhada necessária para acessar o endpoint do serviço Azure OpenAI usando autenticação baseada em chaves. Como melhor prática de segurança, sempre use o Microsoft Entra ID com identidades gerenciadas para autenticação. |
Considere essas configurações de conexão de identidade gerenciada ao definir a AIConnectionName propriedade para myAzureOpenAI:
myAzureOpenAI__endpoint=https://contoso.openai.azure.com/myAzureOpenAI__credential=managedidentitymyAzureOpenAI__clientId=aaaaaaaa-bbbb-cccc-1111-222222222222
Em tempo de execução, o host interpreta essas configurações como uma única myAzureOpenAI configuração:
"myAzureOpenAI":
{
"endpoint": "https://contoso.openai.azure.com/",
"credential": "managedidentity",
"clientId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
}
Ao usar identidades gerenciadas, certifique-se de adicionar sua identidade ao papel de Usuário OpenAI de Serviços Cognitivos .
Ao rodar localmente, adicione essas configurações ao arquivolocal.settings.json projeto. Para obter mais informações, consulte Desenvolvimento local com conexões baseadas em identidade.
Para obter mais informações, confira Trabalhar com configurações de aplicativo.