Associação de entrada de postagem do assistente do OpenAI do Azure para Azure Functions
Importante
Atualmente, a extensão do OpenAI do Azure para Azure Functions está em versão prévia.
A associação de entrada de postagem do assistente do OpenAI do Azure permite enviar prompts para chatbots assistentes.
Para obter informações sobre os detalhes de configuração da extensão do OpenAI do Azure, consulte Extensões do OpenAI do Azure para Azure Functions. Para saber mais sobre os assistentes do Azure OpenAI, consulte [API de Assistentes do Azure OpenAI](.. /ai-serviços/openai/
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 ambos os modelos de processo C# sejam suportados, apenas exemplos de modelo de trabalho isolado são fornecidos.
Exemplo
Este exemplo demonstra o processo de criação, em que a função HTTP POST que envia prompts de usuário para o chatbot assistente. A resposta ao prompt é retornada na resposta HTTP.
/// <summary>
/// HTTP POST function that sends user prompts to the assistant chat bot.
/// </summary>
[Function(nameof(PostUserQuery))]
public static async Task<IActionResult> PostUserQuery(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
string assistantId,
[AssistantPostInput("{assistantId}", "{Query.message}", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
return new OkObjectResult(state.RecentMessages.Any() ? state.RecentMessages[state.RecentMessages.Count - 1].Content : "No response returned.");
}
/// <summary>
/// HTTP GET function that queries the conversation history of the assistant chat bot.
/// </summary>
[Function(nameof(GetChatState))]
public static async Task<IActionResult> GetChatState(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "assistants/{assistantId}")] HttpRequestData req,
string assistantId,
[AssistantQueryInput("{assistantId}", TimestampUtc = "{Query.timestampUTC}", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
Este exemplo demonstra o processo de criação, em que a função HTTP POST que envia prompts de usuário para o chatbot assistente. A resposta ao prompt é retornada na resposta HTTP.
public HttpResponseMessage getChatState(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS,
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();
}
/*
* HTTP POST function that sends user prompts to the assistant chat bot.
*/
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(
Ainda não há exemplos disponíveis.
Este exemplo demonstra o processo de criação, em que a função HTTP POST que envia prompts de usuário para o chatbot assistente. A resposta ao prompt é retornada na resposta HTTP.
}
})
const assistantPostInput = input.generic({
type: 'assistantPost',
id: '{assistantId}',
model: '%CHAT_MODEL_DEPLOYMENT_NAME%',
userMessage: '{Query.message}',
chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
methods: ['POST'],
route: 'assistants/{assistantId}',
authLevel: 'anonymous',
extraInputs: [assistantPostInput],
handler: async (_, context) => {
const chatState: any = context.extraInputs.get(assistantPostInput)
Este exemplo demonstra o processo de criação, em que a função HTTP POST que envia prompts de usuário para o chatbot assistente. A resposta ao prompt é retornada na resposta HTTP.
Aqui está o arquivo function.json para consulta pós-usuário:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"route": "assistants/{assistantId}",
"methods": [
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"name": "State",
"type": "assistantPost",
"direction": "in",
"dataType": "string",
"id": "{assistantId}",
"userMessage": "{Query.message}",
"model": "%CHAT_MODEL_DEPLOYMENT_NAME%",
"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)
$recent_message_content = "No recent messages!"
if ($State.recentMessages.Count -gt 0) {
$recent_message_content = $State.recentMessages[0].content
}
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $recent_message_content
Headers = @{
"Content-Type" = "text/plain"
}
})
Este exemplo demonstra o processo de criação, em que a função HTTP POST que envia prompts de usuário para o chatbot assistente. A resposta ao prompt é retornada na resposta HTTP.
response_json = {"assistantId": assistantId}
return func.HttpResponse(json.dumps(response_json), status_code=202, mimetype="application/json")
@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(arg_name="state", id="{assistantId}", user_message="{Query.message}", model="%CHAT_MODEL_DEPLOYMENT_NAME%", chat_storage_connection_setting=DEFAULT_CHAT_STORAGE_SETTING, collection_name=DEFAULT_CHAT_COLLECTION_NAME)
def post_user_response(req: func.HttpRequest, state: str) -> func.HttpResponse:
# Parse the JSON string into a dictionary
data = json.loads(state)
Atributos
Aplique o atributo PostUserQuery
para definir uma associação de entrada de postagem do assistente, que dá suporte a esses parâmetros:
Parâmetro | Descrição |
---|---|
Id | A ID do assistente a ser atualizada. |
Modelo | O nome do modelo de chat do OpenAI a ser usado. Para o OpenAI do Azure, esse valor é o nome da implantação de modelo. |
Anotações
A anotação PostUserQuery
permite que você defina uma associação de entrada de postagem do assistente, que dá suporte a estes parâmetros:
Element | Descrição |
---|---|
name | O nome da associação de saída. |
id | A ID do assistente a ser atualizada. |
Modelo | O nome do modelo de chat do OpenAI a ser usado. Para o OpenAI do Azure, esse valor é o nome da implantação de modelo. |
Decoradores
Durante a versão prévia, defina a associação de saída como uma associação generic_output_binding
do tipo postUserQuery
, que dá suporte a esses parâmetros:
Parâmetro | Descrição |
---|---|
arg_name | O nome da variável que representa o parâmetro de associação. |
id | A ID do assistente a ser atualizada. |
Modelo | O nome do modelo de chat do OpenAI a ser usado. Para o OpenAI do Azure, esse valor é o nome da implantação de modelo. |
Configuração
A associação dá suporte a essas propriedades de configuração definidas no arquivo function.json.
Propriedade | Descrição |
---|---|
tipo | Deve ser PostUserQuery . |
direction | Deve ser out . |
name | O nome da associação de saída. |
id | A ID do assistente a ser atualizada. |
Modelo | O nome do modelo de chat do OpenAI a ser usado. Para o OpenAI do Azure, esse valor é o nome da implantação de modelo. |
Configuração
A associação dá suporte a estas propriedades, que são definidas no código:
Propriedade | Descrição |
---|---|
id | A ID do assistente a ser atualizada. |
Modelo | O nome do modelo de chat do OpenAI a ser usado. Para o OpenAI do Azure, esse valor é o nome da implantação de modelo. |
Uso
Consulte a Seção de exemplo para obter exemplos completos.