Поделиться через


Привязка входных данных помощника По Azure OpenAI для Функции Azure

Внимание

Расширение Azure OpenAI для Функции Azure в настоящее время находится в предварительной версии.

Помощник по Azure OpenAI после входной привязки позволяет отправлять запросы помощникам ботам чата.

Сведения о настройке и настройке расширения Azure OpenAI см. в Функции Azure расширения Azure OpenAI. Дополнительные сведения о помощниках По Azure OpenAI см. в api Azure OpenAI Assistants.

Примечание.

Ссылки и примеры предоставляются только для модели Node.js версии 4.

Примечание.

Ссылки и примеры предоставляются только для модели Python версии 2.

Примечание.

Хотя поддерживаются обе модели процессов C#, предоставляются только примеры изолированных рабочих моделей .

Пример

В этом примере демонстрируется процесс создания, в котором функция HTTP POST, которая отправляет пользователю запросы в помощник чат-бот. Ответ на запрос возвращается в ответе HTTP.

/// <summary>
/// HTTP POST function that sends user prompts to the assistant chat bot.
/// </summary>
[Function(nameof(PostUserQuery))]
public static IActionResult PostUserQuery(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId,
    [AssistantPostInput("{assistantId}", "{Query.message}", ChatModel = "%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.");
}

В этом примере демонстрируется процесс создания, в котором функция HTTP POST, которая отправляет пользователю запросы в помощник чат-бот. Ответ на запрос возвращается в ответе HTTP.

/*
 * HTTP POST function that sends user prompts to the assistant chat bot.
 */ 
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(
    @HttpTrigger(
        name = "req",
        methods = {HttpMethod.POST}, 
        authLevel = AuthorizationLevel.ANONYMOUS,
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,        
    @AssistantPost(name="newMessages", id = "{assistantId}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", userMessage = "{Query.message}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
    final ExecutionContext context) {
        
        List<AssistantMessage> recentMessages = state.getRecentMessages();
        String response = recentMessages.isEmpty() ? "No response returned." : recentMessages.get(recentMessages.size() - 1).getContent();
        
        return request.createResponseBuilder(HttpStatus.OK)
            .header("Content-Type", "application/json")
            .body(response)
            .build();
}

В этом примере демонстрируется процесс создания, в котором функция HTTP POST, которая отправляет пользователю запросы в помощник чат-бот. Ответ на запрос возвращается в ответе HTTP.

const { app, input, output } = require("@azure/functions");

const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    chatModel: '%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'
            }
        };
    }
})
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"

const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    chatModel: '%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'
            }
        };
    }
})

В этом примере демонстрируется процесс создания, в котором функция HTTP POST, которая отправляет пользователю запросы в помощник чат-бот. Ответ на запрос возвращается в ответе HTTP.

Ниже приведен файл function.json для отправки запроса пользователя:

{
  "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}",
      "chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
      "chatStorageConnectionSetting": "AzureWebJobsStorage",
      "collectionName": "ChatState"
    }
  ]
}

Дополнительные сведения о свойствах файла function.json см. в разделе "Конфигурация ".

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

В этом примере демонстрируется процесс создания, в котором функция HTTP POST, которая отправляет пользователю запросы в помощник чат-бот. Ответ на запрос возвращается в ответе HTTP.

@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(
    arg_name="state",
    id="{assistantId}",
    user_message="{Query.message}",
    chat_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)

    # Extract the content of the recentMessage
    recent_message_content = data["recentMessages"][0]["content"]
    return func.HttpResponse(
        recent_message_content, status_code=200, mimetype="text/plain"
    )

Атрибуты

Примените атрибут для PostUserQuery определения помощника после входной привязки, которая поддерживает следующие параметры:

Параметр Описание
Идентификатор Идентификатор помощника для обновления.
UserMessage Возвращает или задает пользовательское сообщение для модели завершения чата, закодированное в виде строки.
AIConnectionName Необязательно. Возвращает или задает имя раздела конфигурации для параметров подключения службы ИИ. Для Azure OpenAI: если указано, найдите значения Endpoint и Key в этом разделе конфигурации. Если этот раздел не указан или раздел не существует, возвращается к переменным среды: AZURE_OPENAI_ENDPOINT и AZURE_OPENAI_KEY. Для проверки подлинности управляемого удостоверения, назначаемого пользователем, это свойство необходимо. Для службы OpenAI (не Azure) задайте переменную среды OPENAI_API_KEY.
ChatModel Необязательно. Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
Температура Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
TopP Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из 10 лучших% массы вероятностей. Следует использовать либо Temperature или TopP, но не оба.
MaxTokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).
IsReasoningModel Необязательно. Возвращает или задает значение, указывающее, является ли модель завершения чата моделью причин. Этот параметр является экспериментальным и связан с моделью причин, пока все модели не имеют четности в ожидаемых свойствах с значением falseпо умолчанию.

Заметки

Заметка PostUserQuery позволяет определить привязку помощника после ввода, которая поддерживает следующие параметры:

Элемент Описание
имя Имя выходной привязки.
идентификатор Идентификатор помощника для обновления.
userMessage Возвращает или задает пользовательское сообщение для модели завершения чата, закодированное в виде строки.
aiConnectionName Необязательно. Возвращает или задает имя раздела конфигурации для параметров подключения службы ИИ. Для Azure OpenAI: если указано, найдите значения Endpoint и Key в этом разделе конфигурации. Если этот раздел не указан или раздел не существует, возвращается к переменным среды: AZURE_OPENAI_ENDPOINT и AZURE_OPENAI_KEY. Для проверки подлинности управляемого удостоверения, назначаемого пользователем, это свойство необходимо. Для службы OpenAI (не Azure) задайте переменную среды OPENAI_API_KEY.
chatModel Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
температура Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
topP Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из 10 лучших% массы вероятностей. Следует использовать либо Temperature или TopP, но не оба.
maxTokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).
isReasoningModel Необязательно. Возвращает или задает значение, указывающее, является ли модель завершения чата моделью причин. Этот параметр является экспериментальным и связан с моделью причин, пока все модели не имеют четности в ожидаемых свойствах с значением falseпо умолчанию.

Декораторы

Во время предварительной версии определите выходную привязку как привязку generic_output_binding типа postUserQuery, которая поддерживает следующие параметры:

Параметр Описание
arg_name Имя переменной, представляющей параметр привязки.
идентификатор Идентификатор помощника для обновления.
user_message Возвращает или задает пользовательское сообщение для модели завершения чата, закодированное в виде строки.
ai_connection_name Необязательно. Возвращает или задает имя раздела конфигурации для параметров подключения службы ИИ. Для Azure OpenAI: если указано, найдите значения Endpoint и Key в этом разделе конфигурации. Если этот раздел не указан или раздел не существует, возвращается к переменным среды: AZURE_OPENAI_ENDPOINT и AZURE_OPENAI_KEY. Для проверки подлинности управляемого удостоверения, назначаемого пользователем, это свойство необходимо. Для службы OpenAI (не Azure) задайте переменную среды OPENAI_API_KEY.
chat_model Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
температура Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
top_p Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из 10 лучших% массы вероятностей. Следует использовать либо Temperature или TopP, но не оба.
max_tokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).
is_reasoning _model Необязательно. Возвращает или задает значение, указывающее, является ли модель завершения чата моделью причин. Этот параметр является экспериментальным и связан с моделью причин, пока все модели не имеют четности в ожидаемых свойствах с значением falseпо умолчанию.

Настройка

Привязка поддерживает эти свойства конфигурации, заданные в файле function.json.

Свойство Описание
тип Этот параметр должен содержать значение PostUserQuery.
направление Этот параметр должен содержать значение out.
имя Имя выходной привязки.
идентификатор Идентификатор помощника для обновления.
userMessage Возвращает или задает пользовательское сообщение для модели завершения чата, закодированное в виде строки.
aiConnectionName Необязательно. Возвращает или задает имя раздела конфигурации для параметров подключения службы ИИ. Для Azure OpenAI: если указано, найдите значения Endpoint и Key в этом разделе конфигурации. Если этот раздел не указан или раздел не существует, возвращается к переменным среды: AZURE_OPENAI_ENDPOINT и AZURE_OPENAI_KEY. Для проверки подлинности управляемого удостоверения, назначаемого пользователем, это свойство необходимо. Для службы OpenAI (не Azure) задайте переменную среды OPENAI_API_KEY.
chatModel Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
температура Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
topP Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из 10 лучших% массы вероятностей. Следует использовать либо Temperature или TopP, но не оба.
maxTokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).
isReasoningModel Необязательно. Возвращает или задает значение, указывающее, является ли модель завершения чата моделью причин. Этот параметр является экспериментальным и связан с моделью причин, пока все модели не имеют четности в ожидаемых свойствах с значением falseпо умолчанию.

Настройка

Привязка поддерживает эти свойства, определенные в коде:

Свойство Описание
идентификатор Идентификатор помощника для обновления.
userMessage Возвращает или задает пользовательское сообщение для модели завершения чата, закодированное в виде строки.
aiConnectionName Необязательно. Возвращает или задает имя раздела конфигурации для параметров подключения службы ИИ. Для Azure OpenAI: если указано, найдите значения Endpoint и Key в этом разделе конфигурации. Если этот раздел не указан или раздел не существует, возвращается к переменным среды: AZURE_OPENAI_ENDPOINT и AZURE_OPENAI_KEY. Для проверки подлинности управляемого удостоверения, назначаемого пользователем, это свойство необходимо. Для службы OpenAI (не Azure) задайте переменную среды OPENAI_API_KEY.
chatModel Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
температура Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
topP Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из 10 лучших% массы вероятностей. Следует использовать либо Temperature или TopP, но не оба.
maxTokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).
isReasoningModel Необязательно. Возвращает или задает значение, указывающее, является ли модель завершения чата моделью причин. Этот параметр является экспериментальным и связан с моделью причин, пока все модели не имеют четности в ожидаемых свойствах с значением falseпо умолчанию.

Использование

Подробные примеры см. в разделе Примеры.