Azure OpenAI-Assistentenauslöser für Azure Functions

Wichtig

Die Azure OpenAI-Erweiterung für Azure Functions befindet sich derzeit in der Vorschau.

Mit dem Azure OpenAI-Assistentenauslöser können Sie Ihren Code auf der Grundlage von benutzerdefinierten Chatbot- oder Skillanforderungen ausführen, die an einen Assistenten gestellt werden.

Informationen zu Einrichtungs- und Konfigurationsdetails der Azure OpenAI-Erweiterung finden Sie unter Azure OpenAI-Erweiterungen für Azure Functions. Weitere Informationen zu Azure OpenAI-Assistenten finden Sie unter API für Azure OpenAI-Assistenten.

Hinweis

Referenzen und Beispiele werden nur für das Node.js v4-Modell bereitgestellt.

Hinweis

Referenzen und Beispiele werden nur für das Python v2-Modell bereitgestellt.

Hinweis

Während beide C#-Prozessmodelle unterstützt werden, werden nur Isolierte Arbeitsmodellbeispiele bereitgestellt.

Beispiel

Dieses Beispiel zeigt, wie man einen Assistenten erstellt, der eine neue Aufgabe zu einer Datenbank hinzufügt. Der Auslöser hat eine statische Beschreibung von Create a new todo task, die vom Modell verwendet wird. Die Funktion selbst nimmt eine Zeichenfolge an, die eine neue Aufgabe darstellt, die hinzugefügt werden soll. Bei der Ausführung fügt die Funktion die Aufgabe als neues ToDo-Element in einem benutzerdefinierten Elementspeicher hinzu und gibt eine Antwort aus dem Speicher zurück.

[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));
}

Dieses Beispiel zeigt, wie man einen Assistenten erstellt, der eine neue Aufgabe zu einer Datenbank hinzufügt. Der Auslöser hat eine statische Beschreibung von Create a new todo task, die vom Modell verwendet wird. Die Funktion selbst nimmt eine Zeichenfolge an, die eine neue Aufgabe darstellt, die hinzugefügt werden soll. Bei der Ausführung fügt die Funktion die Aufgabe als neues ToDo-Element in einem benutzerdefinierten Elementspeicher hinzu und gibt eine Antwort aus dem Speicher zurück.

@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);
}

Beispiele sind noch nicht verfügbar.

Dieses Beispiel zeigt, wie man einen Assistenten erstellt, der eine neue Aufgabe zu einer Datenbank hinzufügt. Der Auslöser hat eine statische Beschreibung von Create a new todo task, die vom Modell verwendet wird. Die Funktion selbst nimmt eine Zeichenfolge an, die eine neue Aufgabe darstellt, die hinzugefügt werden soll. Bei der Ausführung fügt die Funktion die Aufgabe als neues ToDo-Element in einem benutzerdefinierten Elementspeicher hinzu und gibt eine Antwort aus dem Speicher zurück.


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))
    }

Dieses Beispiel zeigt, wie man einen Assistenten erstellt, der eine neue Aufgabe zu einer Datenbank hinzufügt. Der Auslöser hat eine statische Beschreibung von Create a new todo task, die vom Modell verwendet wird. Die Funktion selbst nimmt eine Zeichenfolge an, die eine neue Aufgabe darstellt, die hinzugefügt werden soll. Bei der Ausführung fügt die Funktion die Aufgabe als neues ToDo-Element in einem benutzerdefinierten Elementspeicher hinzu und gibt eine Antwort aus dem Speicher zurück.

Dies ist die function.json Datei für "Add Todo":

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

Weitere Informationen zu den Dateieigenschaften von function.json finden Sie im Abschnitt 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

Dieses Beispiel zeigt, wie man einen Assistenten erstellt, der eine neue Aufgabe zu einer Datenbank hinzufügt. Der Auslöser hat eine statische Beschreibung von Create a new todo task, die vom Modell verwendet wird. Die Funktion selbst nimmt eine Zeichenfolge an, die eine neue Aufgabe darstellt, die hinzugefügt werden soll. Bei der Ausführung fügt die Funktion die Aufgabe als neues ToDo-Element in einem benutzerdefinierten Elementspeicher hinzu und gibt eine Antwort aus dem Speicher zurück.

@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

Attribute

Wenden Sie das Attribut AssistantSkillTrigger an, um einen Assistentenauslöser zu definieren, der diese Parameter unterstützt:

Parameter Beschreibung
FunctionDescription Ruft die Beschreibung der Assistenzfunktion ab, die dem Modell zur Verfügung gestellt wird.
FunctionName Optional. Ruft den Namen der Funktion ab, die vom Assistenten aufgerufen wird, oder legt ihn fest.
ParameterDescriptionJson Optional. Ruft eine JSON-Beschreibung des Funktionsparameters ab, die dem Modell zur Verfügung gestellt wird, oder legt diese fest. Weitere Informationen finden Sie unter Verbrauch.
Modell Optional. Ruft die zu verwendende OpenAI-Modellimplementierung ab oder legt diese fest, wobei der Standardwert gpt-3.5-turbo ist.

Anmerkungen

Mit der Anmerkung AssistantSkillTrigger können Sie einen Assistentenauslöser festlegen, die diese Parameter unterstützt:

Element BESCHREIBUNG
name Ruft den Namen der Eingabebindung ab oder legt ihn fest.
functionDescription Ruft die Beschreibung der Assistenzfunktion ab, die dem Modell zur Verfügung gestellt wird.
functionName Optional. Ruft den Namen der Funktion ab, die vom Assistenten aufgerufen wird, oder legt ihn fest.
parameterDescriptionJson Optional. Ruft eine JSON-Beschreibung des Funktionsparameters ab, die dem Modell zur Verfügung gestellt wird, oder legt diese fest. Weitere Informationen finden Sie unter Verbrauch.
Modell Optional. Ruft die zu verwendende OpenAI-Modellimplementierung ab oder legt diese fest, wobei der Standardwert gpt-3.5-turbo ist.

Decorator-Elemente

Definieren Sie während der Vorschau die Eingabebindung als generic_trigger-Bindung vom Typ assistantSkillTrigger, die diese Parameter unterstützt:

Parameter Beschreibung
function_description Ruft die Beschreibung der Assistenzfunktion ab, die dem Modell zur Verfügung gestellt wird.
function_name Optional. Ruft den Namen einer Funktion ab, die vom Assistenten aufgerufen wird, oder legt ihn fest.
parameterDescriptionJson Optional. Ruft eine JSON-Beschreibung des Funktionsparameters ab, die dem Modell zur Verfügung gestellt wird, oder legt diese fest. Weitere Informationen finden Sie unter Verbrauch.
Modell Optional. Ruft die zu verwendende OpenAI-Modellimplementierung ab oder legt diese fest, wobei der Standardwert gpt-3.5-turbo ist.

Konfiguration

Die Bindung unterstützt diese Konfigurationseigenschaften, die Sie in der Datei „function.json“ festlegen.

Eigenschaft Beschreibung des Dataflows
type Muss AssistantSkillTriggerlauten.
direction Muss inlauten.
name Der Name des Triggers.
functionName Ruft den Namen der Funktion ab, die vom Assistenten aufgerufen wird, oder legt ihn fest.
functionDescription Ruft die Beschreibung der Assistenzfunktion ab, die dem LLM zur Verfügung gestellt wird
parameterDescriptionJson Optional. Ruft eine JSON-Beschreibung des Funktionsparameters ab, die dem Modell zur Verfügung gestellt wird, oder legt diese fest. Weitere Informationen finden Sie unter Verbrauch.
Modell Optional. Ruft die zu verwendende OpenAI-Modellimplementierung ab oder legt diese fest, wobei der Standardwert gpt-3.5-turbo ist.

Konfiguration

Die Bindung unterstützt diese Eigenschaften, die in Ihrem Code definiert sind:

Eigenschaft Beschreibung des Dataflows
type Muss AssistantSkillTriggerlauten.
name Der Name des Triggers.
functionName Ruft den Namen der Funktion ab, die vom Assistenten aufgerufen wird, oder legt ihn fest.
functionDescription Ruft die Beschreibung der Assistenzfunktion ab, die dem LLM zur Verfügung gestellt wird
parameterDescriptionJson Optional. Ruft eine JSON-Beschreibung des Funktionsparameters ab, die dem Modell zur Verfügung gestellt wird, oder legt diese fest. Weitere Informationen finden Sie unter Verbrauch.
Modell Optional. Ruft die zu verwendende OpenAI-Modellimplementierung ab oder legt diese fest, wobei der Standardwert gpt-3.5-turbo ist.

Vollständige Beispiele finden Sie im Abschnitt Beispiele.

Verbrauch

Wenn der JSON-Wert parameterDescriptionJson nicht angegeben wird, wird er automatisch generiert. Weitere Informationen zur Syntax dieses Objekts finden Sie in der OpenAI-API-Dokumentation.