Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
A extensão do Azure OpenAI para o Funções do Azure está atualmente em visualização.
A associação de entrada de pesquisa semântica do Azure OpenAI permite que você use a pesquisa semântica em suas incorporações.
Para obter informações sobre detalhes de instalação e configuração da extensão do Azure OpenAI, consulte Extensões do Azure OpenAI para Funções do Azure. Para saber mais sobre a classificação semântica na Pesquisa de IA do Azure, consulte Classificação semântica na Pesquisa de IA do Azure.
Observação
Referências e exemplos são fornecidos apenas para o modelo Node.js v4.
Observação
Referências e exemplos são fornecidos apenas para o modelo Python v2.
Observação
Embora ambos os modelos de processo C# sejam suportados, apenas exemplos de modelos de trabalho isolados são fornecidos.
Exemplo
O suporte Go não está atualmente disponível para esta ligação.
Este exemplo mostra como executar uma pesquisa semântica em um arquivo.
[Function("PromptFile")]
public static IActionResult PromptFile(
[HttpTrigger(AuthorizationLevel.Function, "post")] SemanticSearchRequest unused,
[SemanticSearchInput("AISearchEndpoint", "openai-index", Query = "{prompt}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", EmbeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%", AIConnectionName = "AzureOpenAI")] SemanticSearchContext result)
{
return new ContentResult { Content = result.Response, ContentType = "text/plain" };
}
Este exemplo mostra como executar uma pesquisa semântica em um arquivo.
@FunctionName("PromptFile")
public HttpResponseMessage promptFile(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.FUNCTION)
HttpRequestMessage<SemanticSearchRequest> request,
@SemanticSearch(name = "search", searchConnectionName = "AISearchEndpoint", collection = "openai-index", query = "{prompt}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", embeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%", isReasoningModel = false, aiConnectionName = "AzureOpenAI" ) String semanticSearchContext,
final ExecutionContext context) {
String response = new JSONObject(semanticSearchContext).getString("Response");
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response)
.build();
}
public class SemanticSearchRequest {
public String prompt;
public String getPrompt() {
return prompt;
}
public void setPrompt(String prompt) {
this.prompt = prompt;
}
}
Este exemplo mostra como executar uma pesquisa semântica em um arquivo.
const semanticSearchInput = input.generic({
type: "semanticSearch",
searchConnectionName: "AISearchEndpoint",
collection: "openai-index",
query: "{prompt}",
chatModel: "%CHAT_MODEL_DEPLOYMENT_NAME%",
embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%",
aiConnectionName: 'AzureOpenAI',
});
app.http('PromptFile', {
methods: ['POST'],
authLevel: 'function',
extraInputs: [semanticSearchInput],
handler: async (_request, context) => {
var responseBody = context.extraInputs.get(semanticSearchInput)
return { status: 200, body: responseBody.Response.trim() }
}
});
const semanticSearchInput = input.generic({
type: "semanticSearch",
searchConnectionName: "AISearchEndpoint",
collection: "openai-index",
query: "{prompt}",
chatModel: "%CHAT_MODEL_DEPLOYMENT_NAME%",
aiConnectionName: 'AzureOpenAI',
embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
});
app.http('PromptFile', {
methods: ['POST'],
authLevel: 'function',
extraInputs: [semanticSearchInput],
handler: async (_request, context) => {
var responseBody: any = context.extraInputs.get(semanticSearchInput)
return { status: 200, body: responseBody.Response.trim() }
}
});
Este exemplo mostra como executar uma pesquisa semântica em um arquivo.
Aqui está o arquivofunction.json para solicitar um arquivo:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"name": "SemanticSearchInput",
"type": "semanticSearch",
"direction": "in",
"searchConnectionName": "AISearchEndpoint",
"collection": "openai-index",
"query": "{prompt}",
"chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
"embeddingsModel": "%EMBEDDING_MODEL_DEPLOYMENT_NAME%",
"aiConnectionName": "AzureOpenAI"
}
]
}
Para obter mais informações sobre function.json propriedades do arquivo, consulte a seção Configuração .
using namespace System.Net
param($Request, $TriggerMetadata, $SemanticSearchInput)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $SemanticSearchInput.Response
})
Este exemplo mostra como executar uma pesquisa semântica em um arquivo.
@app.function_name("PromptFile")
@app.route(methods=["POST"])
@app.semantic_search_input(
arg_name="result",
search_connection_name="AISearchEndpoint",
collection="openai-index",
query="{prompt}",
embeddings_model="%EMBEDDING_MODEL_DEPLOYMENT_NAME%",
ai_connection_name="AzureOpenAI",
chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
)
def prompt_file(req: func.HttpRequest, result: str) -> func.HttpResponse:
result_json = json.loads(result)
response_json = {
"content": result_json.get("Response"),
"content_type": "text/plain",
}
return func.HttpResponse(
json.dumps(response_json), status_code=200, mimetype="application/json"
)
Atributos
Aplique o SemanticSearchInput atributo para definir uma associação de entrada de pesquisa semântica, que suporta estes parâmetros:
| Parâmetro | Descrição |
|---|---|
| SearchConnectionName | O nome de uma configuração de aplicativo ou variável de ambiente que contém o valor da cadeia de conexão. Esta propriedade suporta expressões de ligação. |
| Coleção | O nome da coleção, tabela ou índice a pesquisar. Esta propriedade suporta expressões de ligação. |
| Consulta | O texto da consulta semântica a ser usado para pesquisar. Esta propriedade suporta expressões de ligação. |
| IncorporaçõesModelo |
Opcional. A ID do modelo a ser usado para incorporações. O valor predefinido é text-embedding-3-small. Esta propriedade suporta expressões de ligação. |
| Modelo de Bate-papo |
Opcional. Obtém ou define o nome do Modelo de Linguagem Grande a ser invocado para respostas de bate-papo. O valor predefinido é gpt-3.5-turbo. Esta propriedade suporta expressões de ligação. |
| AIConnectionName | Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY. |
| Prompt do sistema |
Opcional. Obtém ou define o prompt do sistema a ser usado para solicitar o modelo de linguagem grande. O prompt do sistema é anexado com conhecimento que é obtido como resultado do Query. O prompt combinado é enviado para a API de bate-papo do OpenAI. Esta propriedade suporta expressões de ligação. |
| MaxKnowledgeCount |
Opcional. Obtém ou define o número de itens de conhecimento a serem injetados no SystemPrompt. |
| IsReasoningModel |
Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false. |
Anotações
A SemanticSearchInput anotação permite definir uma ligação de entrada de pesquisa semântica, que suporta estes parâmetros:
| Elemento | Descrição |
|---|---|
| Nome | Obtém ou define o nome da ligação de entrada. |
| searchConnectionName | O nome de uma configuração de aplicativo ou variável de ambiente que contém o valor da cadeia de conexão. Esta propriedade suporta expressões de ligação. |
| coleção | O nome da coleção, tabela ou índice a pesquisar. Esta propriedade suporta expressões de ligação. |
| consulta | O texto da consulta semântica a ser usado para pesquisar. Esta propriedade suporta expressões de ligação. |
| incorporaçõesModelo |
Opcional. A ID do modelo a ser usado para incorporações. O valor predefinido é text-embedding-3-small. Esta propriedade suporta expressões de ligação. |
| chatModelo |
Opcional. Obtém ou define o nome do Modelo de Linguagem Grande a ser invocado para respostas de bate-papo. O valor predefinido é gpt-3.5-turbo. Esta propriedade suporta expressões de ligação. |
| aiConnectionName | Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY. |
| sistemaPrompt |
Opcional. Obtém ou define o prompt do sistema a ser usado para solicitar o modelo de linguagem grande. O prompt do sistema é anexado com conhecimento que é obtido como resultado do Query. O prompt combinado é enviado para a API de bate-papo do OpenAI. Esta propriedade suporta expressões de ligação. |
| maxKnowledgeCount |
Opcional. Obtém ou define o número de itens de conhecimento a serem injetados no SystemPrompt. |
| isReasoningModel |
Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false. |
Decoradores
Durante a visualização, defina a ligação de entrada como uma generic_input_binding associação do tipo semanticSearch, que suporta estes parâmetros:
| Parâmetro | Descrição |
|---|---|
| arg_name | O nome da variável que representa o parâmetro de ligação. |
| search_connection_name | O nome de uma configuração de aplicativo ou variável de ambiente que contém o valor da cadeia de conexão. Esta propriedade suporta expressões de ligação. |
| coleção | O nome da coleção, tabela ou índice a pesquisar. Esta propriedade suporta expressões de ligação. |
| consulta | O texto da consulta semântica a ser usado para pesquisar. Esta propriedade suporta expressões de ligação. |
| embeddings_model |
Opcional. A ID do modelo a ser usado para incorporações. O valor predefinido é text-embedding-3-small. Esta propriedade suporta expressões de ligação. |
| chat_model |
Opcional. Obtém ou define o nome do Modelo de Linguagem Grande a ser invocado para respostas de bate-papo. O valor predefinido é gpt-3.5-turbo. Esta propriedade suporta expressões de ligação. |
| ai_connection_name | Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY. |
| system_prompt |
Opcional. Obtém ou define o prompt do sistema a ser usado para solicitar o modelo de linguagem grande. O prompt do sistema é anexado com conhecimento que é obtido como resultado do Query. O prompt combinado é enviado para a API de bate-papo do OpenAI. Esta propriedade suporta expressões de ligação. |
| max_knowledge_count |
Opcional. Obtém ou define o número de itens de conhecimento a serem injetados no SystemPrompt. |
| is_reasoning _model |
Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false. |
Configuração
A associação suporta essas propriedades de configuração definidas no arquivo function.json.
| Propriedade | Descrição |
|---|---|
| tipo | Deve ser semanticSearch. |
| direção | Deve ser in. |
| Nome | O nome da ligação de entrada. |
| searchConnectionName | Obtém ou define o nome de uma configuração de aplicativo ou variável de ambiente que contém um valor de cadeia de conexão. Esta propriedade suporta expressões de ligação. |
| coleção | O nome da coleção, tabela ou índice a pesquisar. Esta propriedade suporta expressões de ligação. |
| consulta | O texto da consulta semântica a ser usado para pesquisar. Esta propriedade suporta expressões de ligação. |
| incorporaçõesModelo |
Opcional. A ID do modelo a ser usado para incorporações. O valor predefinido é text-embedding-3-small. Esta propriedade suporta expressões de ligação. |
| chatModelo |
Opcional. Obtém ou define o nome do Modelo de Linguagem Grande a ser invocado para respostas de bate-papo. O valor predefinido é gpt-3.5-turbo. Esta propriedade suporta expressões de ligação. |
| aiConnectionName | Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY. |
| sistemaPrompt |
Opcional. Obtém ou define o prompt do sistema a ser usado para solicitar o modelo de linguagem grande. O prompt do sistema é anexado com conhecimento que é obtido como resultado do Query. O prompt combinado é enviado para a API de bate-papo do OpenAI. Esta propriedade suporta expressões de ligação. |
| maxKnowledgeCount |
Opcional. Obtém ou define o número de itens de conhecimento a serem injetados no SystemPrompt. |
| isReasoningModel |
Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false. |
Configuração
A associação suporta estas propriedades, que são definidas no seu código:
| Propriedade | Descrição |
|---|---|
| searchConnectionName | O nome de uma configuração de aplicativo ou variável de ambiente que contém o valor da cadeia de conexão. Esta propriedade suporta expressões de ligação. |
| coleção | O nome da coleção, tabela ou índice a pesquisar. Esta propriedade suporta expressões de ligação. |
| consulta | O texto da consulta semântica a ser usado para pesquisar. Esta propriedade suporta expressões de ligação. |
| incorporaçõesModelo |
Opcional. A ID do modelo a ser usado para incorporações. O valor predefinido é text-embedding-3-small. Esta propriedade suporta expressões de ligação. |
| chatModelo |
Opcional. Obtém ou define o nome do Modelo de Linguagem Grande a ser invocado para respostas de bate-papo. O valor predefinido é gpt-3.5-turbo. Esta propriedade suporta expressões de ligação. |
| aiConnectionName | Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY. |
| sistemaPrompt |
Opcional. Obtém ou define o prompt do sistema a ser usado para solicitar o modelo de linguagem grande. O prompt do sistema é anexado com conhecimento que é obtido como resultado do Query. O prompt combinado é enviado para a API de bate-papo do OpenAI. Esta propriedade suporta expressões de ligação. |
| maxKnowledgeCount |
Opcional. Obtém ou define o número de itens de conhecimento a serem injetados no SystemPrompt. |
| isReasoningModel |
Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false. |
Utilização
Consulte a seção Exemplo para obter exemplos completos.
Connections
Para usar a extensão de ligação Azure OpenAI, precisa de especificar uma ligação a uma definição de modelo OpenAI. Defina a ligação do modelo OpenAI nas suas ligações usando uma destas abordagens:
- Use a
AIConnectionNamepropriedade binding (preferida para Azure OpenAI). - Definir
AZURE_OPENAI_ENDPOINTeAZURE_OPENAI_KEYnas definições da aplicação (para Azure OpenAI). - Definir apenas
Open_API_Keynas definições da aplicação (parahttps://api.openai.com).
A forma como se define a ligação depende tanto da API do modelo como do método de autenticação, conforme indicado na tabela seguinte:
| API de Autenticação/Modelo | Azure OpenAI | OpenAI (https://api.openai.com) |
|---|---|---|
| Ligação de identidade gerida | AIConnectionName |
Não suportado |
| Referência ao Key Vault | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
| Referência de configuração da aplicação | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
| Segredo partilhado | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
Use ligações geridas baseadas em identidade e a propriedade AIConnectionName .
Quando usa AIConnectionName, o valor desta definição de propriedade depende do tipo de ligação:
-
Ligação de identidade gerida: A
AIConnectionNamepropriedade é<CONNECTION_NAME_PREFIX>partilhada por um grupo de definições que, em conjunto, definem uma ligação baseada em identidade ao Azure OpenAI. Para mais informações, consulte Definir ligações de identidade. -
Referência Key Vault: A
AIConnectionNamedefinição de propriedade devolve uma referência Azure Key Vault ao local onde a chave API é mantida centralmente. Para mais informações, consulte Definir ligações ao Key Vault. -
Referência App Configuration: A
AIConnectionNamedefinição de propriedade devolve uma referência Azure App Configuration que devolve uma chave API ou uma referência ao Key Vault. Para mais informações, consulte Azure App Configuration no artigo de ligações. -
Chave API: A
AIConnectionNamedefinição de propriedade resolve para as definições da aplicação que contêm diretamente o endpoint e a chave. Como as chaves partilhadas podem ser comprometidas, utilize ligações de identidade geridas sempre que possível. Para mais informações, veja Definir ligações.
Para saber mais sobre ligações de bindings, consulte Gerir ligações no Funções do Azure.
As ligações OpenAI incluem uma AIConnectionName propriedade que pode usar para especificar <ConnectionNamePrefix> o grupo de definições da aplicação que definem a ligação ao 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 um 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 não especificar esta propriedade, é usada a identidade atribuída pelo sistema. Esta propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não deveria ser definida. |
<CONNECTION_NAME_PREFIX>__credential |
Define como um token de acesso é obtido para a ligação. Use managedidentity para autenticação de 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 esta propriedade para especificar o Identificador de recurso a usar ao obter um token. A propriedade aceita um identificador de recurso correspondente ao ID do recurso da identidade gerenciada definida pelo usuário. É inválido especificar um ID de recurso e um ID de cliente. Se não especificar nenhum dos dois, é usada a identidade atribuída pelo sistema. Esta propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não deveria ser definida. |
<CONNECTION_NAME_PREFIX>__key |
Define a chave secreta partilhada necessária para aceder ao endpoint do serviço Azure OpenAI usando autenticação baseada em chaves. Como melhor prática de segurança, utilize sempre o Microsoft Entra ID com identidades geridas para autenticação. |
Considere estas definições de ligação de identidade gerida quando 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 anfitrião interpreta estas definições como uma única myAzureOpenAI definição:
"myAzureOpenAI":
{
"endpoint": "https://contoso.openai.azure.com/",
"credential": "managedidentity",
"clientId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
}
Quando usar identidades geridas, certifique-se de adicionar a sua identidade ao papel de Utilizador OpenAI de Serviços Cognitivos .
Ao executar localmente, adicione estas definições ao ficheirolocal.settings.json projeto. Para obter mais informações, consulte Desenvolvimento local com conexões baseadas em identidade.
Para obter mais informações, consulte Trabalhar com configurações do aplicativo.