중요합니다
Azure Functions용 Azure OpenAI 확장은 현재 미리 보기 상태입니다.
Azure OpenAI 텍스트 완성 입력 바인딩을 사용하면 결과 텍스트 완성 API를 코드 실행으로 가져올 수 있습니다. 미리 정의된 프롬프트를 매개 변수와 함께 사용하거나 전체 프롬프트를 통과하도록 바인딩을 정의할 수 있습니다.
Azure OpenAI 확장의 설정 및 구성 세부 정보에 대한 자세한 내용은 Azure Functions용 Azure OpenAI 확장을 참조하세요. Azure OpenAI 완성에 대한 자세한 내용은 텍스트를 생성하거나 조작하는 방법을 알아봅니다.
비고
참조 및 예는 Node.js v4 모델에 대해서만 제공됩니다.
비고
참조 및 예는 Python v2 모델에 대해서만 제공됩니다.
비고
두 C# 프로세스 모델이 모두 지원되지만 격리된 작업자 모델 예제만 제공됩니다.
예시
이 예제에서는 HTTP 트리거 함수가 매개 변수를 사용하여 텍스트 프롬프트에 포함하는 name
패턴을 보여 줍니다. 그러면 확장에서 Azure OpenAI 완성 API로 전송됩니다. 프롬프트에 대한 응답은 HTTP 응답으로 반환됩니다.
[Function(nameof(WhoIs))]
public static IActionResult WhoIs(
[HttpTrigger(AuthorizationLevel.Function, Route = "whois/{name}")] HttpRequestData req,
[TextCompletionInput("Who is {name}?", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
{
return new OkObjectResult(response.Content);
}
이 예제에서는 프롬프트를 입력으로 사용하고, 완료 API로 직접 보내고, 응답을 출력으로 반환합니다.
[Function(nameof(GenericCompletion))]
public static IActionResult GenericCompletion(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
[TextCompletionInput("{Prompt}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response,
ILogger log)
{
string text = response.Content;
return new OkObjectResult(text);
}
이 예제에서는 HTTP 트리거 함수가 매개 변수를 사용하여 텍스트 프롬프트에 포함하는 name
패턴을 보여 줍니다. 그러면 확장에서 Azure OpenAI 완성 API로 전송됩니다. 프롬프트에 대한 응답은 HTTP 응답으로 반환됩니다.
@FunctionName("WhoIs")
public HttpResponseMessage whoIs(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "whois/{name}")
HttpRequestMessage<Optional<String>> request,
@BindingName("name") String name,
@TextCompletion(prompt = "Who is {name}?", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false) TextCompletionResponse response,
final ExecutionContext context) {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response.getContent())
.build();
}
이 예제에서는 프롬프트를 입력으로 사용하고, 완료 API로 직접 보내고, 응답을 출력으로 반환합니다.
@FunctionName("GenericCompletion")
public HttpResponseMessage genericCompletion(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@TextCompletion(prompt = "{prompt}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false) TextCompletionResponse response,
final ExecutionContext context) {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response.getContent())
.build();
}
이 예제에서는 HTTP 트리거 함수가 매개 변수를 사용하여 텍스트 프롬프트에 포함하는 name
패턴을 보여 줍니다. 그러면 확장에서 Azure OpenAI 완성 API로 전송됩니다. 프롬프트에 대한 응답은 HTTP 응답으로 반환됩니다.
const { app, input } = require("@azure/functions");
// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
prompt: 'Who is {name}?',
maxTokens: '100',
type: 'textCompletion',
chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})
app.http('whois', {
methods: ['GET'],
route: 'whois/{name}',
authLevel: 'function',
extraInputs: [openAICompletionInput],
handler: async (_request, context) => {
var response = context.extraInputs.get(openAICompletionInput)
return { body: response.content.trim() }
}
});
이 예제에서는 HTTP 트리거 함수가 매개 변수를 사용하여 텍스트 프롬프트에 포함하는 name
패턴을 보여 줍니다. 그러면 확장에서 Azure OpenAI 완성 API로 전송됩니다. 프롬프트에 대한 응답은 HTTP 응답으로 반환됩니다.
import { app, input } from "@azure/functions";
// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
prompt: 'Who is {name}?',
maxTokens: '100',
type: 'textCompletion',
chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})
app.http('whois', {
methods: ['GET'],
route: 'whois/{name}',
authLevel: 'function',
extraInputs: [openAICompletionInput],
handler: async (_request, context) => {
var response: any = context.extraInputs.get(openAICompletionInput)
return { body: response.content.trim() }
}
});
이 예제에서는 HTTP 트리거 함수가 매개 변수를 사용하여 텍스트 프롬프트에 포함하는 name
패턴을 보여 줍니다. 그러면 확장에서 Azure OpenAI 완성 API로 전송됩니다. 프롬프트에 대한 응답은 HTTP 응답으로 반환됩니다.
다음은 에 대한 TextCompletionResponse
파일입니다.
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"route": "whois/{name}",
"methods": [
"get"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"type": "textCompletion",
"direction": "in",
"name": "TextCompletionResponse",
"prompt": "Who is {name}?",
"maxTokens": "100",
"chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%"
}
]
}
function.json 파일 속성에 대한 자세한 내용은 구성 섹션을 참조하세요.
이 코드는 완성 API의 텍스트를 응답으로 반환합니다.
using namespace System.Net
param($Request, $TriggerMetadata, $TextCompletionResponse)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $TextCompletionResponse.Content
})
이 예제에서는 HTTP 트리거 함수가 매개 변수를 사용하여 텍스트 프롬프트에 포함하는 name
패턴을 보여 줍니다. 그러면 확장에서 Azure OpenAI 완성 API로 전송됩니다. 프롬프트에 대한 응답은 HTTP 응답으로 반환됩니다.
@app.route(route="whois/{name}", methods=["GET"])
@app.text_completion_input(
arg_name="response",
prompt="Who is {name}?",
max_tokens="100",
chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
)
def whois(req: func.HttpRequest, response: str) -> func.HttpResponse:
response_json = json.loads(response)
return func.HttpResponse(response_json["content"], status_code=200)
이 예제에서는 프롬프트를 입력으로 사용하고, 완료 API로 직접 보내고, 응답을 출력으로 반환합니다.
@app.route(route="genericcompletion", methods=["POST"])
@app.text_completion_input(
arg_name="response",
prompt="{Prompt}",
chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
)
def genericcompletion(
req: func.HttpRequest,
response: str
) -> func.HttpResponse:
response_json = json.loads(response)
return func.HttpResponse(response_json["content"], status_code=200)
특성
텍스트 완성 입력 바인딩을 정의하기 위해 적용하는 특정 특성은 C# 프로세스 모드에 따라 달라집니다.
격리된 작업자 모델에서 텍스트 완성 입력 바인딩을 정의하려면 적용 TextCompletionInput
합니다.
이 특성은 다음 매개 변수를 지원합니다.
매개 변수 | 설명 |
---|---|
프롬프트 | 문자열로 인코딩된 완료를 생성하는 프롬프트를 가져오거나 설정합니다. |
AIConnectionName | 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다. |
ChatModel |
선택 사항입니다. 기본값 gpt-3.5-turbo 을 사용하여 문자열로 사용할 모델의 ID를 가져오거나 설정합니다. |
온도 |
선택 사항입니다. 사용할 샘플링 온도를 문자열 0 2 로 가져오거나 설정합니다. 값(0.8 )이 높을수록 출력이 더 임의로 생성되고,(와) 같은 값이0.2 낮을수록 출력이 더 집중적이고 결정적입니다. 둘 다 Temperature 사용하거나 TopP 사용하지 않아야 합니다. |
TopP |
선택 사항입니다. 핵 샘플링이라고 하는 온도를 문자열로 사용하여 샘플링하는 대안을 가져오거나 설정합니다. 이 샘플링 방법에서 모델은 확률 질량을 가진 top_p 토큰의 결과를 고려합니다. 따라서 0.1 상위 10개% 확률 질량을 구성하는 토큰만 고려됩니다. 둘 다 Temperature 사용하거나 TopP 사용하지 않아야 합니다. |
MaxTokens |
선택 사항입니다. 완료 시 생성할 최대 토큰 수를 기본값 100 인 문자열로 가져오거나 설정합니다. 프롬프트의 토큰 수에 max_tokens 를 더한 값은 모델의 컨텍스트 길이를 초과할 수 없습니다. 대부분의 모델에는 컨텍스트 길이가 2,048 토큰(4096을 지원하는 최신 모델 제외)이 있습니다. |
IsReasoningModel |
선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false 이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다. |
주석
주석을 TextCompletion
사용하면 다음 매개 변수를 지원하는 텍스트 완성 입력 바인딩을 정의할 수 있습니다.
요소 | 설명 |
---|---|
이름 | 입력 바인딩의 이름을 가져오거나 설정합니다. |
프롬프트 | 문자열로 인코딩된 완료를 생성하는 프롬프트를 가져오거나 설정합니다. |
aiConnectionName | 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다. |
chatModel | 기본값 gpt-3.5-turbo 을 사용하여 문자열로 사용할 모델의 ID를 가져오거나 설정합니다. |
온도 |
선택 사항입니다. 사용할 샘플링 온도를 문자열 0 2 로 가져오거나 설정합니다. 값(0.8 )이 높을수록 출력이 더 임의로 생성되고,(와) 같은 값이0.2 낮을수록 출력이 더 집중적이고 결정적입니다. 둘 다 Temperature 사용하거나 TopP 사용하지 않아야 합니다. |
topP |
선택 사항입니다. 핵 샘플링이라고 하는 온도를 문자열로 사용하여 샘플링하는 대안을 가져오거나 설정합니다. 이 샘플링 방법에서 모델은 확률 질량을 가진 top_p 토큰의 결과를 고려합니다. 따라서 0.1 상위 10개% 확률 질량을 구성하는 토큰만 고려됩니다. 둘 다 Temperature 사용하거나 TopP 사용하지 않아야 합니다. |
maxTokens |
선택 사항입니다. 완료 시 생성할 최대 토큰 수를 기본값 100 인 문자열로 가져오거나 설정합니다. 프롬프트의 토큰 수에 max_tokens 를 더한 값은 모델의 컨텍스트 길이를 초과할 수 없습니다. 대부분의 모델에는 컨텍스트 길이가 2,048 토큰(4096을 지원하는 최신 모델 제외)이 있습니다. |
isReasoningModel |
선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false 이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다. |
데코레이터
미리 보기 중에 입력 바인딩을 다음 매개 변수를 지원하는 generic_input_binding
형식의 textCompletion
바인딩으로 정의합니다.
매개 변수 | 설명 |
---|---|
arg_name | 바인딩 매개 변수를 나타내는 변수의 이름입니다. |
프롬프트 | 문자열로 인코딩된 완료를 생성하는 프롬프트를 가져오거나 설정합니다. |
ai_connection_name | 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다. |
chat_model | 기본값 gpt-3.5-turbo 을 사용하여 문자열로 사용할 모델의 ID를 가져오거나 설정합니다. |
온도 |
선택 사항입니다. 사용할 샘플링 온도를 문자열 0 2 로 가져오거나 설정합니다. 값(0.8 )이 높을수록 출력이 더 임의로 생성되고,(와) 같은 값이0.2 낮을수록 출력이 더 집중적이고 결정적입니다. 둘 다 Temperature 사용하거나 TopP 사용하지 않아야 합니다. |
top_p |
선택 사항입니다. 핵 샘플링이라고 하는 온도를 문자열로 사용하여 샘플링하는 대안을 가져오거나 설정합니다. 이 샘플링 방법에서 모델은 확률 질량을 가진 top_p 토큰의 결과를 고려합니다. 따라서 0.1 상위 10개% 확률 질량을 구성하는 토큰만 고려됩니다. 둘 다 Temperature 사용하거나 TopP 사용하지 않아야 합니다. |
max_tokens |
선택 사항입니다. 완료 시 생성할 최대 토큰 수를 기본값 100 인 문자열로 가져오거나 설정합니다. 프롬프트의 토큰 수에 max_tokens 를 더한 값은 모델의 컨텍스트 길이를 초과할 수 없습니다. 대부분의 모델에는 컨텍스트 길이가 2,048 토큰(4096을 지원하는 최신 모델 제외)이 있습니다. |
is_reasoning _model |
선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false 이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다. |
구성 / 설정
바인딩은 function.json 파일에 설정한 이러한 구성 속성을 지원합니다.
재산 | 설명 |
---|---|
유형 |
textCompletion 이어야 합니다. |
방향 |
in 이어야 합니다. |
이름 | 입력 바인딩의 이름입니다. |
프롬프트 | 문자열로 인코딩된 완료를 생성하는 프롬프트를 가져오거나 설정합니다. |
aiConnectionName | 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다. |
chatModel | 기본값 gpt-3.5-turbo 을 사용하여 문자열로 사용할 모델의 ID를 가져오거나 설정합니다. |
온도 |
선택 사항입니다. 사용할 샘플링 온도를 문자열 0 2 로 가져오거나 설정합니다. 값(0.8 )이 높을수록 출력이 더 임의로 생성되고,(와) 같은 값이0.2 낮을수록 출력이 더 집중적이고 결정적입니다. 둘 다 Temperature 사용하거나 TopP 사용하지 않아야 합니다. |
topP |
선택 사항입니다. 핵 샘플링이라고 하는 온도를 문자열로 사용하여 샘플링하는 대안을 가져오거나 설정합니다. 이 샘플링 방법에서 모델은 확률 질량을 가진 top_p 토큰의 결과를 고려합니다. 따라서 0.1 상위 10개% 확률 질량을 구성하는 토큰만 고려됩니다. 둘 다 Temperature 사용하거나 TopP 사용하지 않아야 합니다. |
maxTokens |
선택 사항입니다. 완료 시 생성할 최대 토큰 수를 기본값 100 인 문자열로 가져오거나 설정합니다. 프롬프트의 토큰 수에 max_tokens 를 더한 값은 모델의 컨텍스트 길이를 초과할 수 없습니다. 대부분의 모델에는 컨텍스트 길이가 2,048 토큰(4096을 지원하는 최신 모델 제외)이 있습니다. |
isReasoningModel |
선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false 이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다. |
구성 / 설정
바인딩은 코드에 정의된 다음 속성을 지원합니다.
재산 | 설명 |
---|---|
프롬프트 | 문자열로 인코딩된 완료를 생성하는 프롬프트를 가져오거나 설정합니다. |
aiConnectionName | 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다. |
chatModel | 기본값 gpt-3.5-turbo 을 사용하여 문자열로 사용할 모델의 ID를 가져오거나 설정합니다. |
온도 |
선택 사항입니다. 사용할 샘플링 온도를 문자열 0 2 로 가져오거나 설정합니다. 값(0.8 )이 높을수록 출력이 더 임의로 생성되고,(와) 같은 값이0.2 낮을수록 출력이 더 집중적이고 결정적입니다. 둘 다 Temperature 사용하거나 TopP 사용하지 않아야 합니다. |
topP |
선택 사항입니다. 핵 샘플링이라고 하는 온도를 문자열로 사용하여 샘플링하는 대안을 가져오거나 설정합니다. 이 샘플링 방법에서 모델은 확률 질량을 가진 top_p 토큰의 결과를 고려합니다. 따라서 0.1 상위 10개% 확률 질량을 구성하는 토큰만 고려됩니다. 둘 다 Temperature 사용하거나 TopP 사용하지 않아야 합니다. |
maxTokens |
선택 사항입니다. 완료 시 생성할 최대 토큰 수를 기본값 100 인 문자열로 가져오거나 설정합니다. 프롬프트의 토큰 수에 max_tokens 를 더한 값은 모델의 컨텍스트 길이를 초과할 수 없습니다. 대부분의 모델에는 컨텍스트 길이가 2,048 토큰(4096을 지원하는 최신 모델 제외)이 있습니다. |
isReasoningModel |
선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false 이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다. |
사용법
전체 예제는 예제 섹션을 참조하세요.