Azure OpenAI-assistent na invoerbinding voor Azure Functions
Belangrijk
De Azure OpenAI-extensie voor Azure Functions is momenteel in preview.
Met de Azure OpenAI-assistent na invoerbinding kunt u prompts verzenden naar chatbots met assistentchats.
Zie Azure OpenAI-extensies voor Azure Functions voor informatie over de installatie en configuratie van de Azure OpenAI-extensie. Zie [Api voor Azure OpenAI-assistenten](.) voor meer informatie over Azure OpenAI-assistenten. /ai-services/openai/
Notitie
Verwijzingen en voorbeelden worden alleen verstrekt voor het Node.js v4-model.
Notitie
Verwijzingen en voorbeelden worden alleen verstrekt voor het Python v2-model.
Notitie
Hoewel beide C#-procesmodellen worden ondersteund, worden alleen geïsoleerde werkrolmodelvoorbeelden gegeven.
Opmerking
In dit voorbeeld ziet u het aanmaakproces, waarbij de HTTP POST-functie waarmee gebruikersprompts worden verzonden naar de chatbot van de assistent. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.
/// <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)
{
In dit voorbeeld ziet u het aanmaakproces, waarbij de HTTP POST-functie waarmee gebruikersprompts worden verzonden naar de chatbot van de assistent. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.
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(
In dit voorbeeld ziet u het aanmaakproces, waarbij de HTTP POST-functie waarmee gebruikersprompts worden verzonden naar de chatbot van de assistent. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.
const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";
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 = context.extraInputs.get(assistantPostInput)
const content = chatState.recentMessages[0].content
return {
status: 200,
body: content,
headers: {
'Content-Type': 'text/plain'
}
};
}
})
const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";
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)
const content = chatState.recentMessages[0].content
return {
status: 200,
body: content,
headers: {
'Content-Type': 'text/plain'
}
};
}
})
In dit voorbeeld ziet u het aanmaakproces, waarbij de HTTP POST-functie waarmee gebruikersprompts worden verzonden naar de chatbot van de assistent. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.
Dit is het function.json-bestand voor een query na de gebruiker:
{
"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"
}
]
}
Zie de sectie Configuratie voor meer informatie over function.json bestandseigenschappen.
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"
}
})
In dit voorbeeld ziet u het aanmaakproces, waarbij de HTTP POST-functie waarmee gebruikersprompts worden verzonden naar de chatbot van de assistent. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.
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)
Kenmerken
Pas het PostUserQuery
kenmerk toe om een assistent na invoerbinding te definiëren, die ondersteuning biedt voor deze parameters:
Parameter | Description |
---|---|
Id | De id van de assistent die moet worden bijgewerkt. |
Model | De naam van het OpenAI-chatmodel dat moet worden gebruikt. Voor Azure OpenAI is deze waarde de naam van de modelimplementatie. |
Aantekeningen
Met de PostUserQuery
aantekening kunt u een assistent na invoerbinding definiëren, die deze parameters ondersteunt:
Element | Description |
---|---|
name | De naam van de uitvoerbinding. |
id | De id van de assistent die moet worden bijgewerkt. |
model | De naam van het OpenAI-chatmodel dat moet worden gebruikt. Voor Azure OpenAI is deze waarde de naam van de modelimplementatie. |
Decorators
Definieer tijdens de preview de uitvoerbinding als een generic_output_binding
binding van het type postUserQuery
, die ondersteuning biedt voor deze parameters:
Parameter | Description |
---|---|
arg_name | De naam van de variabele die de bindingsparameter vertegenwoordigt. |
id | De id van de assistent die moet worden bijgewerkt. |
model | De naam van het OpenAI-chatmodel dat moet worden gebruikt. Voor Azure OpenAI is deze waarde de naam van de modelimplementatie. |
Configuratie
De binding ondersteunt deze configuratie-eigenschappen die u in het function.json-bestand hebt ingesteld.
Eigenschappen | Beschrijving |
---|---|
type | Moet PostUserQuery zijn. |
direction | Moet out zijn. |
name | De naam van de uitvoerbinding. |
id | De id van de assistent die moet worden bijgewerkt. |
model | De naam van het OpenAI-chatmodel dat moet worden gebruikt. Voor Azure OpenAI is deze waarde de naam van de modelimplementatie. |
Configuratie
De binding ondersteunt deze eigenschappen, die zijn gedefinieerd in uw code:
Eigenschappen | Description |
---|---|
id | De id van de assistent die moet worden bijgewerkt. |
model | De naam van het OpenAI-chatmodel dat moet worden gebruikt. Voor Azure OpenAI is deze waarde de naam van de modelimplementatie. |
Gebruik
Zie de sectie Voorbeeld voor volledige voorbeelden.