다음을 통해 공유


Azure Functions에 대한 Azure OpenAI 의미 체계 검색 입력 바인딩

중요합니다

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

Azure OpenAI 의미 체계 검색 입력 바인딩을 사용하면 포함에서 의미 체계 검색을 사용할 수 있습니다.

Azure OpenAI 확장의 설정 및 구성 세부 정보에 대한 자세한 내용은 Azure Functions용 Azure OpenAI 확장을 참조하세요. Azure AI 검색의 의미 체계 순위 지정에 대해 자세히 알아보려면 Azure AI 검색의 의미 체계 순위 지정을 참조하세요.

비고

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

비고

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

비고

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

예시

이 예제에서는 파일에서 의미 체계 검색을 수행하는 방법을 보여줍니다.

[Function("PromptFile")]
public static IActionResult PromptFile(
    [HttpTrigger(AuthorizationLevel.Function, "post")] SemanticSearchRequest unused,
    [SemanticSearchInput("AISearchEndpoint", "openai-index", Query = "{prompt}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", EmbeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%")] SemanticSearchContext result)
{
    return new ContentResult { Content = result.Response, ContentType = "text/plain" };
}

이 예제에서는 파일에서 의미 체계 검색을 수행하는 방법을 보여줍니다.

@FunctionName("PromptFile")
public HttpResponseMessage promptFile(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.POST},
        authLevel = AuthorizationLevel.ANONYMOUS)
        HttpRequestMessage<SemanticSearchRequest> request,
    @SemanticSearch(name = "search", searchConnectionName = "AISearchEndpoint", collection = "openai-index", query = "{prompt}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", embeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%", isReasoningModel = false ) String semanticSearchContext,
    final ExecutionContext context) {
        String response = new JSONObject(semanticSearchContext).getString("Response");
        return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response)
        .build();        
}
public class SemanticSearchRequest {
    public String prompt;
    public String getPrompt() {
        return prompt;
    }
    public void setPrompt(String prompt) {
        this.prompt = prompt;
    }        
}

이 예제에서는 파일에서 의미 체계 검색을 수행하는 방법을 보여줍니다.

const semanticSearchInput = input.generic({
    type: "semanticSearch",
    connectionName: "AISearchEndpoint",
    collection: "openai-index",
    query: "{prompt}",
    chatModel: "%CHAT_MODEL_DEPLOYMENT_NAME%",
    embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
});

app.http('PromptFile', {
    methods: ['POST'],
    authLevel: 'function',
    extraInputs: [semanticSearchInput],
    handler: async (_request, context) => {
        var responseBody = context.extraInputs.get(semanticSearchInput)

        return { status: 200, body: responseBody.Response.trim() }
    }
});
const semanticSearchInput = input.generic({
    type: "semanticSearch",
    connectionName: "AISearchEndpoint",
    collection: "openai-index",
    query: "{prompt}",
    chatModel: "%CHAT_MODEL_DEPLOYMENT_NAME%",
    embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
});

app.http('PromptFile', {
    methods: ['POST'],
    authLevel: 'function',
    extraInputs: [semanticSearchInput],
    handler: async (_request, context) => {
        var responseBody: any = context.extraInputs.get(semanticSearchInput)

        return { status: 200, body: responseBody.Response.trim() }
    }
});

이 예제에서는 파일에서 의미 체계 검색을 수행하는 방법을 보여줍니다.

파일 메시지를 표시하는 function.json 파일은 다음과 같습니다.

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "name": "SemanticSearchInput",
      "type": "semanticSearch",
      "direction": "in",
      "searchConnectionName": "AISearchEndpoint",
      "collection": "openai-index",
      "query": "{prompt}",
      "chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
      "embeddingsModel": "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
    }
  ]
}

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

using namespace System.Net

param($Request, $TriggerMetadata, $SemanticSearchInput)

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body       = $SemanticSearchInput.Response
    })

이 예제에서는 파일에서 의미 체계 검색을 수행하는 방법을 보여줍니다.

@app.function_name("PromptFile")
@app.route(methods=["POST"])
@app.semantic_search_input(
    arg_name="result",
    search_connection_name="AISearchEndpoint",
    collection="openai-index",
    query="{prompt}",
    embeddings_model="%EMBEDDING_MODEL_DEPLOYMENT_NAME%",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
)
def prompt_file(req: func.HttpRequest, result: str) -> func.HttpResponse:
    result_json = json.loads(result)
    response_json = {
        "content": result_json.get("Response"),
        "content_type": "text/plain",
    }
    return func.HttpResponse(
        json.dumps(response_json), status_code=200, mimetype="application/json"
    )

특성

SemanticSearchInput 특성을 적용하여 다음 매개 변수를 지원하는 의미 체계 검색 입력 바인딩을 정의합니다.

매개 변수 설명
SearchConnectionName 연결 문자열 값이 포함된 앱 설정 또는 환경 변수의 이름입니다. 이 속성은 바인딩 식을 지원합니다.
컬렉션 검색할 컬렉션, 테이블 또는 인덱스의 이름입니다. 이 속성은 바인딩 식을 지원합니다.
쿼리 검색에 사용할 의미 체계 쿼리 텍스트입니다. 이 속성은 바인딩 식을 지원합니다.
EmbeddingsModel 선택 사항입니다. 포함에 사용할 모델의 ID입니다. 기본값은 text-embedding-3-small입니다. 이 속성은 바인딩 식을 지원합니다.
ChatModel 선택 사항입니다. 채팅 응답에 대해 호출할 큰 언어 모델의 이름을 가져오거나 설정합니다. 기본값은 gpt-3.5-turbo입니다. 이 속성은 바인딩 식을 지원합니다.
AIConnectionName 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다.
SystemPrompt 선택 사항입니다. 큰 언어 모델을 표시하는 데 사용할 시스템 프롬프트를 가져오거나 설정합니다. 시스템 프롬프트에는 .의 Query결과로 가져온 지식이 추가됩니다. 결합된 프롬프트가 OpenAI 채팅 API로 전송됩니다. 이 속성은 바인딩 식을 지원합니다.
MaxKnowledgeCount 선택 사항입니다. 에 삽입 SystemPrompt할 기술 항목 수를 가져오거나 설정합니다.
IsReasoningModel 선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다.

주석

SemanticSearchInput 주석을 사용하면 다음 매개 변수를 지원하는 의미 체계 검색 입력 바인딩을 정의할 수 있습니다.

요소 설명
이름 입력 바인딩의 이름을 가져오거나 설정합니다.
searchConnectionName 연결 문자열 값이 포함된 앱 설정 또는 환경 변수의 이름입니다. 이 속성은 바인딩 식을 지원합니다.
모음 검색할 컬렉션, 테이블 또는 인덱스의 이름입니다. 이 속성은 바인딩 식을 지원합니다.
쿼리 검색에 사용할 의미 체계 쿼리 텍스트입니다. 이 속성은 바인딩 식을 지원합니다.
embeddingsModel 선택 사항입니다. 포함에 사용할 모델의 ID입니다. 기본값은 text-embedding-3-small입니다. 이 속성은 바인딩 식을 지원합니다.
chatModel 선택 사항입니다. 채팅 응답에 대해 호출할 큰 언어 모델의 이름을 가져오거나 설정합니다. 기본값은 gpt-3.5-turbo입니다. 이 속성은 바인딩 식을 지원합니다.
aiConnectionName 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다.
systemPrompt 선택 사항입니다. 큰 언어 모델을 표시하는 데 사용할 시스템 프롬프트를 가져오거나 설정합니다. 시스템 프롬프트에는 .의 Query결과로 가져온 지식이 추가됩니다. 결합된 프롬프트가 OpenAI 채팅 API로 전송됩니다. 이 속성은 바인딩 식을 지원합니다.
maxKnowledgeCount 선택 사항입니다. 에 삽입 SystemPrompt할 기술 항목 수를 가져오거나 설정합니다.
isReasoningModel 선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다.

데코레이터

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

매개 변수 설명
arg_name 바인딩 매개 변수를 나타내는 변수의 이름입니다.
search_connection_name 연결 문자열 값이 포함된 앱 설정 또는 환경 변수의 이름입니다. 이 속성은 바인딩 식을 지원합니다.
모음 검색할 컬렉션, 테이블 또는 인덱스의 이름입니다. 이 속성은 바인딩 식을 지원합니다.
쿼리 검색에 사용할 의미 체계 쿼리 텍스트입니다. 이 속성은 바인딩 식을 지원합니다.
embeddings_model 선택 사항입니다. 포함에 사용할 모델의 ID입니다. 기본값은 text-embedding-3-small입니다. 이 속성은 바인딩 식을 지원합니다.
chat_model 선택 사항입니다. 채팅 응답에 대해 호출할 큰 언어 모델의 이름을 가져오거나 설정합니다. 기본값은 gpt-3.5-turbo입니다. 이 속성은 바인딩 식을 지원합니다.
ai_connection_name 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다.
system_prompt 선택 사항입니다. 큰 언어 모델을 표시하는 데 사용할 시스템 프롬프트를 가져오거나 설정합니다. 시스템 프롬프트에는 .의 Query결과로 가져온 지식이 추가됩니다. 결합된 프롬프트가 OpenAI 채팅 API로 전송됩니다. 이 속성은 바인딩 식을 지원합니다.
max_knowledge_count 선택 사항입니다. 에 삽입 SystemPrompt할 기술 항목 수를 가져오거나 설정합니다.
is_reasoning _model 선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다.

구성 / 설정

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

재산 설명
유형 semanticSearch이어야 합니다.
방향 in이어야 합니다.
이름 입력 바인딩의 이름입니다.
searchConnectionName 연결 문자열 값이 포함된 앱 설정 또는 환경 변수의 이름을 가져오거나 설정합니다. 이 속성은 바인딩 식을 지원합니다.
모음 검색할 컬렉션, 테이블 또는 인덱스의 이름입니다. 이 속성은 바인딩 식을 지원합니다.
쿼리 검색에 사용할 의미 체계 쿼리 텍스트입니다. 이 속성은 바인딩 식을 지원합니다.
embeddingsModel 선택 사항입니다. 포함에 사용할 모델의 ID입니다. 기본값은 text-embedding-3-small입니다. 이 속성은 바인딩 식을 지원합니다.
chatModel 선택 사항입니다. 채팅 응답에 대해 호출할 큰 언어 모델의 이름을 가져오거나 설정합니다. 기본값은 gpt-3.5-turbo입니다. 이 속성은 바인딩 식을 지원합니다.
aiConnectionName 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다.
systemPrompt 선택 사항입니다. 큰 언어 모델을 표시하는 데 사용할 시스템 프롬프트를 가져오거나 설정합니다. 시스템 프롬프트에는 .의 Query결과로 가져온 지식이 추가됩니다. 결합된 프롬프트가 OpenAI 채팅 API로 전송됩니다. 이 속성은 바인딩 식을 지원합니다.
maxKnowledgeCount 선택 사항입니다. 에 삽입 SystemPrompt할 기술 항목 수를 가져오거나 설정합니다.
isReasoningModel 선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다.

구성 / 설정

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

재산 설명
searchConnectionName 연결 문자열 값이 포함된 앱 설정 또는 환경 변수의 이름입니다. 이 속성은 바인딩 식을 지원합니다.
모음 검색할 컬렉션, 테이블 또는 인덱스의 이름입니다. 이 속성은 바인딩 식을 지원합니다.
쿼리 검색에 사용할 의미 체계 쿼리 텍스트입니다. 이 속성은 바인딩 식을 지원합니다.
embeddingsModel 선택 사항입니다. 포함에 사용할 모델의 ID입니다. 기본값은 text-embedding-3-small입니다. 이 속성은 바인딩 식을 지원합니다.
chatModel 선택 사항입니다. 채팅 응답에 대해 호출할 큰 언어 모델의 이름을 가져오거나 설정합니다. 기본값은 gpt-3.5-turbo입니다. 이 속성은 바인딩 식을 지원합니다.
aiConnectionName 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다.
systemPrompt 선택 사항입니다. 큰 언어 모델을 표시하는 데 사용할 시스템 프롬프트를 가져오거나 설정합니다. 시스템 프롬프트에는 .의 Query결과로 가져온 지식이 추가됩니다. 결합된 프롬프트가 OpenAI 채팅 API로 전송됩니다. 이 속성은 바인딩 식을 지원합니다.
maxKnowledgeCount 선택 사항입니다. 에 삽입 SystemPrompt할 기술 항목 수를 가져오거나 설정합니다.
isReasoningModel 선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다.

사용법

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