Assistente Azure OpenAI post-binding di input per Funzioni di Azure
Importante
L'estensione OpenAI di Azure per Funzioni di Azure è attualmente in anteprima.
L'assistente Azure OpenAI post-input consente di inviare richieste ai chatbot assistenti.
Per informazioni sull'installazione e la configurazione dell'estensione OpenAI di Azure, vedere Estensioni OpenAI di Azure per Funzioni di Azure. Per altre informazioni sugli assistenti OpenAI di Azure, vedere [API Assistenti OpenAI di Azure](.. /ai-services/openai/
Nota
I riferimenti e gli esempi vengono forniti solo per il modello Node.js v4.
Nota
I riferimenti e gli esempi vengono forniti solo per il modello Python v2.
Nota
Anche se sono supportati entrambi i modelli di processo C#, vengono forniti solo esempi di modelli di lavoro isolati.
Esempio
Questo esempio illustra il processo di creazione, in cui la funzione HTTP POST che invia richieste utente al chatbot assistente. La risposta alla richiesta viene restituita nella risposta 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)
{
Questo esempio illustra il processo di creazione, in cui la funzione HTTP POST che invia richieste utente al chatbot assistente. La risposta alla richiesta viene restituita nella risposta 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(
Gli esempi non sono ancora disponibili.
Questo esempio illustra il processo di creazione, in cui la funzione HTTP POST che invia richieste utente al chatbot assistente. La risposta alla richiesta viene restituita nella risposta 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)
Questo esempio illustra il processo di creazione, in cui la funzione HTTP POST che invia richieste utente al chatbot assistente. La risposta alla richiesta viene restituita nella risposta HTTP.
Ecco il file function.json per la query post-utente:
{
"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"
}
]
}
Per altre informazioni sulle proprietà dei file function.json, vedere la sezione configurazione.
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"
}
})
Questo esempio illustra il processo di creazione, in cui la funzione HTTP POST che invia richieste utente al chatbot assistente. La risposta alla richiesta viene restituita nella risposta 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)
Attributi
Applicare l'attributo PostUserQuery
per definire un'associazione assistente post-input, che supporta questi parametri:
Parametro | Descrizione |
---|---|
Id | ID dell'assistente da aggiornare. |
Modello | Nome del modello di chat OpenAI da usare. Per Azure OpenAI, questo valore è il nome della distribuzione del modello. |
Annotazioni
L'annotazione PostUserQuery
consente di definire un'associazione post-input assistente, che supporta questi parametri:
Elemento | Descrizione |
---|---|
name | Nome dell'associazione di output. |
id | ID dell'assistente da aggiornare. |
model | Nome del modello di chat OpenAI da usare. Per Azure OpenAI, questo valore è il nome della distribuzione del modello. |
Elementi Decorator
Durante l'anteprima, definire l'associazione di output come associazione generic_output_binding
di tipo postUserQuery
, che supporta questi parametri:
Parametro | Descrizione |
---|---|
arg_name | Nome della variabile che rappresenta il parametro di associazione. |
id | ID dell'assistente da aggiornare. |
model | Nome del modello di chat OpenAI da usare. Per Azure OpenAI, questo valore è il nome della distribuzione del modello. |
Impostazione
L'associazione supporta queste proprietà di configurazione impostate nel file function.json.
Proprietà | Descrizione |
---|---|
type | Deve essere PostUserQuery . |
direction | Deve essere out . |
name | Nome dell'associazione di output. |
id | ID dell'assistente da aggiornare. |
model | Nome del modello di chat OpenAI da usare. Per Azure OpenAI, questo valore è il nome della distribuzione del modello. |
Impostazione
Il binding supporta queste proprietà, definite nel codice:
Proprietà | Descrizione |
---|---|
id | ID dell'assistente da aggiornare. |
model | Nome del modello di chat OpenAI da usare. Per Azure OpenAI, questo valore è il nome della distribuzione del modello. |
Utilizzo
Per esempi completi, vedere la sezione di esempio.