Azure OpenAI 도우미가 Azure Functions에 대한 출력 바인딩을 만듦

Important

Azure Functions용 Azure OpenAI 확장은 현재 미리 보기 상태입니다.

Azure OpenAI 도우미 만들기 출력 바인딩을 사용하면 함수 코드 실행에서 새 도우미 챗봇을 만들 수 있습니다.

Azure OpenAI 확장의 설정 및 구성 세부 정보에 대한 자세한 내용은 Azure Functions용 Azure OpenAI 확장을 참조하세요. Azure OpenAI 도우미에 대해 자세히 알아보려면 Azure OpenAI 도우미 API를 참조하세요.

참고 항목

참조 및 예는 Node.js v4 모델에 대해서만 제공됩니다.

참고 항목

참조 및 예는 Python v2 모델에 대해서만 제공됩니다.

참고 항목

두 C# 프로세스 모델이 모두 지원되지만 격리된 작업자 모델 예제만 제공됩니다.

예시

이 예에서는 지정된 ID를 사용하여 새로운 보조 챗봇을 만드는 HTTP PUT 함수가 있는 만들기 프로세스를 보여 줍니다. 프롬프트에 대한 응답은 HTTP 응답으로 반환됩니다.

public static async Task<CreateChatBotOutput> CreateAssistant(
    [HttpTrigger(AuthorizationLevel.Anonymous, "put", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId)
{
    string instructions =
       """
        Don't make assumptions about what values to plug into functions.
        Ask for clarification if a user request is ambiguous.
        """;

    using StreamReader reader = new(req.Body);

    string request = await reader.ReadToEndAsync();


    return new CreateChatBotOutput
    {
        HttpResponse = new ObjectResult(new { assistantId }) { StatusCode = 202 },
        ChatBotCreateRequest = new AssistantCreateRequest(assistantId, instructions)
        {
            ChatStorageConnectionSetting = "AzureWebJobsStorage",
            CollectionName = "SampleChatState",
        },
    };
}

이 예에서는 지정된 ID를 사용하여 새로운 보조 챗봇을 만드는 HTTP PUT 함수가 있는 만들기 프로세스를 보여 줍니다. 프롬프트에 대한 응답은 HTTP 응답으로 반환됩니다.

@FunctionName("CreateAssistant")
public HttpResponseMessage createAssistant(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.PUT}, 
        authLevel = AuthorizationLevel.ANONYMOUS, 
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,
    @AssistantCreate(name = "AssistantCreate") OutputBinding<AssistantCreateRequest> message,
    final ExecutionContext context) {
        context.getLogger().info("Java HTTP trigger processed a request.");
        
        String instructions = "Don't make assumptions about what values to plug into functions.\n" +
                "Ask for clarification if a user request is ambiguous.";

        AssistantCreateRequest assistantCreateRequest = new AssistantCreateRequest(assistantId, instructions);
        message.setValue(assistantCreateRequest);
        JSONObject response = new JSONObject();
        response.put("assistantId", assistantId);
        
        return request.createResponseBuilder(HttpStatus.CREATED)
            .header("Content-Type", "application/json")
            .body(response.toString())
            .build();    
}

예는 아직 제공되지 않습니다.

이 예에서는 지정된 ID를 사용하여 새로운 보조 챗봇을 만드는 HTTP PUT 함수가 있는 만들기 프로세스를 보여 줍니다. 프롬프트에 대한 응답은 HTTP 응답으로 반환됩니다.

const chatBotCreateOutput = output.generic({
    type: 'assistantCreate'
})
app.http('CreateAssistant', {
    methods: ['PUT'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraOutputs: [chatBotCreateOutput],
    handler: async (request: HttpRequest, context: InvocationContext) => {
        const assistantId = request.params.assistantId
        const instructions =
            `
            Don't make assumptions about what values to plug into functions.
            Ask for clarification if a user request is ambiguous.
            `
        const createRequest = {
            id: assistantId,
            instructions: instructions,
            chatStorageConnectionSetting: "AzureWebJobsStorage",
            collectionName: "SampleChatState"
        }
        context.extraOutputs.set(chatBotCreateOutput, createRequest)
        return { status: 202, jsonBody: { assistantId: assistantId } }

이 예에서는 지정된 ID를 사용하여 새로운 보조 챗봇을 만드는 HTTP PUT 함수가 있는 만들기 프로세스를 보여 줍니다. 프롬프트에 대한 응답은 HTTP 응답으로 반환됩니다.

Create Assistant에 대한 function.json 파일은 다음과 같습니다.

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "assistants/{assistantId}",
      "methods": [
        "put"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "assistantCreate",
      "direction": "out",
      "dataType": "string",
      "name": "Requests"
    }
  ]
}

function.json 파일 속성에 대한 자세한 내용은 구성 섹션을 참조하세요.

{{예제 코드 주석에서 가져옵니다}}

using namespace System.Net

param($Request, $TriggerMetadata)

$assistantId = $Request.params.assistantId

$instructions = "Don't make assumptions about what values to plug into functions."
$instructions += "\nAsk for clarification if a user request is ambiguous."

$create_request = @{
    "id" = $assistantId
    "instructions" = $instructions,
    "chatStorageConnectionSetting" = "AzureWebJobsStorage",
    "collectionName" = "SampleChatState"
}

Push-OutputBinding -Name Requests -Value (ConvertTo-Json $create_request)

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::Accepted
    Body       = (ConvertTo-Json @{ "assistantId" = $assistantId})
    Headers    = @{
        "Content-Type" = "application/json"
    }
})

이 예에서는 지정된 ID를 사용하여 새로운 보조 챗봇을 만드는 HTTP PUT 함수가 있는 만들기 프로세스를 보여 줍니다. 프롬프트에 대한 응답은 HTTP 응답으로 반환됩니다.

@apis.function_name("CreateAssistant")
@apis.route(route="assistants/{assistantId}", methods=["PUT"])
@apis.assistant_create_output(arg_name="requests")
def create_assistant(req: func.HttpRequest, requests: func.Out[str]) -> func.HttpResponse:
    assistantId = req.route_params.get("assistantId")
    instructions = """
            Don't make assumptions about what values to plug into functions.
            Ask for clarification if a user request is ambiguous.
            """
    create_request = {
        "id": assistantId,
        "instructions": instructions,
        "chatStorageConnectionSection": "AzureWebJobsStorage",
        "collectionName": "SampleChatState"
    }
    requests.set(json.dumps(create_request))

특성

CreateAssistant 특성을 적용하여 다음 매개 변수를 지원하는 도우미 만들기 출력 바인딩을 정의합니다.

매개 변수 설명
ID 만들 도우미의 식별자입니다.
지침 선택 사항. 도우미가 따라야 할 지침입니다.

주석

CreateAssistant 주석을 사용하면 다음 매개 변수를 지원하는 도우미 만들기 출력 바인딩을 정의할 수 있습니다.

요소 설명
이름 출력 바인딩의 이름을 가져오거나 설정합니다.
id 만들 도우미의 식별자입니다.
지침 선택 사항. 도우미가 따라야 할 지침입니다.

데코레이터

미리 보기 중에 출력 바인딩을 다음 매개 변수를 지원하는 createAssistant 형식의 generic_output_binding 바인딩으로 정의합니다.

매개 변수 설명
arg_name 바인딩 매개 변수를 나타내는 변수의 이름입니다.
id 만들 도우미의 식별자입니다.
지침 선택 사항. 도우미가 따라야 할 지침입니다.

구성

바인딩은 function.json 파일에 설정한 이러한 구성 속성을 지원합니다.

속성 설명
type CreateAssistant이어야 합니다.
direction out이어야 합니다.
이름 출력 바인딩의 이름입니다.
id 만들 도우미의 식별자입니다.
지침 선택 사항. 도우미가 따라야 할 지침입니다.

구성

바인딩은 코드에 정의된 다음 속성을 지원합니다.

속성 Description
id 만들 도우미의 식별자입니다.
지침 선택 사항. 도우미가 따라야 할 지침입니다.

사용

전체 예제는 예제 섹션을 참조하세요.