Dela via


Azure OpenAI-assistentutlösare för Azure Functions

Viktigt!

Azure OpenAI-tillägget för Azure Functions är för närvarande i förhandsversion.

Med utlösaren för Azure OpenAI-assistenten kan du köra din kod baserat på anpassad chattrobot eller kunskapsbegäran som gjorts till en assistent.

Information om konfiguration och konfigurationsinformation för Azure OpenAI-tillägget finns i Azure OpenAI-tillägg för Azure Functions. Mer information om Azure OpenAI-assistenter finns i API för Azure OpenAI Assistants.

Kommentar

Referenser och exempel tillhandahålls endast för modellen Node.js v4.

Kommentar

Referenser och exempel tillhandahålls endast för Python v2-modellen.

Kommentar

Båda C#-processmodellerna stöds, men endast exempel på isolerade arbetsmodeller tillhandahålls.

Exempel

Det här exemplet visar hur du skapar en assistent som lägger till en ny uppgift att göra i en databas. Utlösaren har en statisk beskrivning av Create a new todo task modellens användning. Själva funktionen tar en sträng som representerar en ny uppgift att lägga till. När den körs lägger funktionen till uppgiften som ett nytt att göra-objekt i ett anpassat objektarkiv och returnerar ett svar från arkivet.

[Function(nameof(AddTodo))]
public Task AddTodo([AssistantSkillTrigger("Create a new todo task")] string taskDescription)
{
    if (string.IsNullOrEmpty(taskDescription))
    {
        throw new ArgumentException("Task description cannot be empty");
    }

    this.logger.LogInformation("Adding todo: {task}", taskDescription);

    string todoId = Guid.NewGuid().ToString()[..6];
    return this.todoManager.AddTodoAsync(new TodoItem(todoId, taskDescription));
}

Det här exemplet visar hur du skapar en assistent som lägger till en ny uppgift att göra i en databas. Utlösaren har en statisk beskrivning av Create a new todo task modellens användning. Själva funktionen tar en sträng som representerar en ny uppgift att lägga till. När den körs lägger funktionen till uppgiften som ett nytt att göra-objekt i ett anpassat objektarkiv och returnerar ett svar från arkivet.

@FunctionName("AddTodo")
public void addTodo(
    @AssistantSkillTrigger(
            name = "assistantSkillCreateTodo",
            functionDescription = "Create a new todo task"
    ) String taskDescription,
    final ExecutionContext context) {

    if (taskDescription == null || taskDescription.isEmpty()) {
        throw new IllegalArgumentException("Task description cannot be empty");
    }
    context.getLogger().info("Adding todo: " + taskDescription);

    String todoId = UUID.randomUUID().toString().substring(0, 6);
    TodoItem todoItem = new TodoItem(todoId, taskDescription);
    todoManager.addTodo(todoItem);
}

Det här exemplet visar hur du skapar en assistent som lägger till en ny uppgift att göra i en databas. Utlösaren har en statisk beskrivning av Create a new todo task modellens användning. Själva funktionen tar en sträng som representerar en ny uppgift att lägga till. När den körs lägger funktionen till uppgiften som ett nytt att göra-objekt i ett anpassat objektarkiv och returnerar ett svar från arkivet.

const { app, trigger } = require("@azure/functions");
const { TodoItem, CreateTodoManager } = require("../services/todoManager");
const { randomUUID } = require('crypto');

const todoManager = CreateTodoManager()

app.generic('AddTodo', {
    trigger: trigger.generic({
        type: 'assistantSkillTrigger',
        functionDescription: 'Create a new todo task'
    }),
    handler: async (taskDescription, context) => {
        if (!taskDescription) {
            throw new Error('Task description cannot be empty')
        }

        context.log(`Adding todo: ${taskDescription}`)

        const todoId = randomUUID().substring(0, 6)
        return todoManager.AddTodo(new TodoItem(todoId, taskDescription))
    }
})
import { InvocationContext, app, trigger } from "@azure/functions"
import { TodoItem, ITodoManager, CreateTodoManager } from "../services/todoManager"
import { randomUUID } from 'crypto';

const todoManager: ITodoManager = CreateTodoManager()

app.generic('AddTodo', {
    trigger: trigger.generic({
        type: 'assistantSkillTrigger',
        functionDescription: 'Create a new todo task'
    }),
    handler: async (taskDescription: string, context: InvocationContext) => {
        if (!taskDescription) {
            throw new Error('Task description cannot be empty')
        }

        context.log(`Adding todo: ${taskDescription}`)

        const todoId = randomUUID().substring(0, 6)
        return todoManager.AddTodo(new TodoItem(todoId, taskDescription))
    }

Det här exemplet visar hur du skapar en assistent som lägger till en ny uppgift att göra i en databas. Utlösaren har en statisk beskrivning av Create a new todo task modellens användning. Själva funktionen tar en sträng som representerar en ny uppgift att lägga till. När den körs lägger funktionen till uppgiften som ett nytt att göra-objekt i ett anpassat objektarkiv och returnerar ett svar från arkivet.

Här är function.json-filen för Lägg till todo:

{
  "bindings": [
    {
      "name": "TaskDescription",
      "type": "assistantSkillTrigger",
      "dataType": "string",
      "direction": "in",
      "functionDescription": "Create a new todo task"
    }
  ]
}

Mer information om function.json filegenskaper finns i avsnittet Konfiguration .

using namespace System.Net

param($TaskDescription, $TriggerMetadata)
$ErrorActionPreference = "Stop"

if (-not $TaskDescription) {
    throw "Task description cannot be empty"
}

Write-Information "Adding todo: $TaskDescription"
$todoID = [Guid]::NewGuid().ToString().Substring(0, 5)
Add-Todo $todoId $TaskDescription

Det här exemplet visar hur du skapar en assistent som lägger till en ny uppgift att göra i en databas. Utlösaren har en statisk beskrivning av Create a new todo task modellens användning. Själva funktionen tar en sträng som representerar en ny uppgift att lägga till. När den körs lägger funktionen till uppgiften som ett nytt att göra-objekt i ett anpassat objektarkiv och returnerar ett svar från arkivet.

@skills.function_name("AddTodo")
@skills.assistant_skill_trigger(arg_name="taskDescription", function_description="Create a new todo task")
def add_todo(taskDescription: str) -> None:
    if not taskDescription:
        raise ValueError("Task description cannot be empty")

    logging.info(f"Adding todo: {taskDescription}")

    todo_id = str(uuid.uuid4())[0:6]
    todo_manager.add_todo(TodoItem(id=todo_id, task=taskDescription))
    return

Attribut

AssistantSkillTrigger Använd attributet för att definiera en assistentutlösare som stöder följande parametrar:

Parameter Description
FunctionDescription Hämtar beskrivningen av assistentfunktionen, som tillhandahålls till modellen.
Funktionsnamn Valfritt. Hämtar eller anger namnet på funktionen som anropas av assistenten.
ParameterDescriptionJson Valfritt. Hämtar eller anger en JSON-beskrivning av funktionsparametern, som tillhandahålls till modellen. Mer information finns i Användning.
Modell Valfritt. Hämtar eller ställer in distributionen av OpenAI-chattmodellen som ska användas, med standardvärdet gpt-3.5-turbo.

Kommentarer

Med anteckningen AssistantSkillTrigger kan du definiera en assistentutlösare som stöder följande parametrar:

Element Description
Namn Hämtar eller anger namnet på indatabindningen.
functionDescription Hämtar beskrivningen av assistentfunktionen, som tillhandahålls till modellen.
functionName Valfritt. Hämtar eller anger namnet på funktionen som anropas av assistenten.
parameterDescriptionJson Valfritt. Hämtar eller anger en JSON-beskrivning av funktionsparametern, som tillhandahålls till modellen. Mer information finns i Användning.
modell Valfritt. Hämtar eller ställer in distributionen av OpenAI-chattmodellen som ska användas, med standardvärdet gpt-3.5-turbo.

Dekoratörer

Under förhandsversionen definierar du indatabindningen som en generic_trigger bindning av typen assistantSkillTrigger, som stöder följande parametrar:

Parameter Description
function_description Hämtar beskrivningen av assistentfunktionen, som tillhandahålls till modellen.
function_name Valfritt. Hämtar eller anger namnet på en funktion som anropas av assistenten.
parameterDescriptionJson Valfritt. Hämtar eller anger en JSON-beskrivning av funktionsparametern, som tillhandahålls till modellen. Mer information finns i Användning.
modell Valfritt. Hämtar eller ställer in distributionen av OpenAI-chattmodellen som ska användas, med standardvärdet gpt-3.5-turbo.

Konfiguration

Bindningen stöder de konfigurationsegenskaper som du anger i filen function.json.

Property Beskrivning
typ Måste vara AssistantSkillTrigger.
riktning Måste vara in.
Namn Namnet på utlösaren.
functionName Hämtar eller anger namnet på funktionen som anropas av assistenten.
functionDescription Hämtar beskrivningen av assistentfunktionen, som tillhandahålls till LLM
parameterDescriptionJson Valfritt. Hämtar eller anger en JSON-beskrivning av funktionsparametern, som tillhandahålls till modellen. Mer information finns i Användning.
modell Valfritt. Hämtar eller ställer in distributionen av OpenAI-chattmodellen som ska användas, med standardvärdet gpt-3.5-turbo.

Konfiguration

Bindningen stöder dessa egenskaper, som definieras i koden:

Property Beskrivning
typ Måste vara AssistantSkillTrigger.
Namn Namnet på utlösaren.
functionName Hämtar eller anger namnet på funktionen som anropas av assistenten.
functionDescription Hämtar beskrivningen av assistentfunktionen, som tillhandahålls till LLM
parameterDescriptionJson Valfritt. Hämtar eller anger en JSON-beskrivning av funktionsparametern, som tillhandahålls till modellen. Mer information finns i Användning.
modell Valfritt. Hämtar eller ställer in distributionen av OpenAI-chattmodellen som ska användas, med standardvärdet gpt-3.5-turbo.

Se avsnittet Exempel för fullständiga exempel.

Förbrukning

När parameterDescriptionJson JSON-värdet inte anges genereras det automatiskt. Mer information om syntaxen för det här objektet finns i OpenAI API-dokumentationen.