중요합니다
Azure Functions용 Azure OpenAI 확장은 현재 미리 보기 상태입니다.
Azure OpenAI 도우미 사후 입력 바인딩을 사용하면 도우미 챗봇에 프롬프트를 보낼 수 있습니다.
Azure OpenAI 확장의 설정 및 구성 세부 정보에 대한 자세한 내용은 Azure Functions용 Azure OpenAI 확장을 참조하세요. Azure OpenAI 도우미에 대해 자세히 알아보려면 Azure OpenAI 도우미 API를 참조하세요.
참고 항목
참조 및 예는 Node.js v4 모델에 대해서만 제공됩니다.
참고 항목
참조 및 예는 Python v2 모델에 대해서만 제공됩니다.
참고 항목
두 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 특성을 적용하여 이러한 매개 변수를 지원하는 도우미 사후 입력 바인딩을 정의합니다.
| 매개 변수 | 설명 |
|---|---|
| ID | 업데이트할 도우미의 ID입니다. |
| UserMessage | 문자열로 인코딩된 채팅 완료 모델에 대한 사용자 메시지를 가져오거나 설정합니다. |
| AIConnectionName | 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다. |
| ChatModel |
선택 사항입니다. 기본값 gpt-3.5-turbo을 사용하여 문자열로 사용할 모델의 ID를 가져오거나 설정합니다. |
| 온도 |
선택 사항입니다. 사용할 샘플링 온도를 문자열 02로 가져오거나 설정합니다. 값(0.8)이 높을수록 출력이 더 임의로 생성되고,(와) 같은 값이0.2 낮을수록 출력이 더 집중적이고 결정적입니다. 둘 다 Temperature 사용하거나 TopP사용하지 않아야 합니다. |
| TopP |
선택 사항입니다. 핵 샘플링이라고 하는 온도를 문자열로 사용하여 샘플링하는 대안을 가져오거나 설정합니다. 이 샘플링 방법에서 모델은 확률 질량을 가진 top_p 토큰의 결과를 고려합니다. 따라서 0.1 상위 10개% 확률 질량을 구성하는 토큰만 고려됩니다. 둘 다 Temperature 사용하거나 TopP사용하지 않아야 합니다. |
| MaxTokens |
선택 사항입니다. 완료 시 생성할 최대 토큰 수를 기본값 100인 문자열로 가져오거나 설정합니다. 프롬프트의 토큰 수에 max_tokens를 더한 값은 모델의 컨텍스트 길이를 초과할 수 없습니다. 대부분의 모델에는 컨텍스트 길이가 2,048 토큰(4096을 지원하는 최신 모델 제외)이 있습니다. |
| IsReasoningModel |
선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다. |
주석
PostUserQuery 주석을 사용하면 이러한 매개 변수를 지원하는 도우미 사후 입력 바인딩을 정의할 수 있습니다.
| 요소 | 설명 |
|---|---|
| 이름 | 출력 바인딩의 이름입니다. |
| 아이디 | 업데이트할 도우미의 ID입니다. |
| userMessage | 문자열로 인코딩된 채팅 완료 모델에 대한 사용자 메시지를 가져오거나 설정합니다. |
| aiConnectionName | 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다. |
| chatModel | 기본값 gpt-3.5-turbo을 사용하여 문자열로 사용할 모델의 ID를 가져오거나 설정합니다. |
| 온도 |
선택 사항입니다. 사용할 샘플링 온도를 문자열 02로 가져오거나 설정합니다. 값(0.8)이 높을수록 출력이 더 임의로 생성되고,(와) 같은 값이0.2 낮을수록 출력이 더 집중적이고 결정적입니다. 둘 다 Temperature 사용하거나 TopP사용하지 않아야 합니다. |
| topP |
선택 사항입니다. 핵 샘플링이라고 하는 온도를 문자열로 사용하여 샘플링하는 대안을 가져오거나 설정합니다. 이 샘플링 방법에서 모델은 확률 질량을 가진 top_p 토큰의 결과를 고려합니다. 따라서 0.1 상위 10개% 확률 질량을 구성하는 토큰만 고려됩니다. 둘 다 Temperature 사용하거나 TopP사용하지 않아야 합니다. |
| maxTokens |
선택 사항입니다. 완료 시 생성할 최대 토큰 수를 기본값 100인 문자열로 가져오거나 설정합니다. 프롬프트의 토큰 수에 max_tokens를 더한 값은 모델의 컨텍스트 길이를 초과할 수 없습니다. 대부분의 모델에는 컨텍스트 길이가 2,048 토큰(4096을 지원하는 최신 모델 제외)이 있습니다. |
| isReasoningModel |
선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다. |
데코레이터
미리 보기 중에 출력 바인딩을 다음 매개 변수를 지원하는 generic_output_binding 형식의 postUserQuery 바인딩으로 정의합니다.
| 매개 변수 | 설명 |
|---|---|
| arg_name | 바인딩 매개 변수를 나타내는 변수의 이름입니다. |
| 아이디 | 업데이트할 도우미의 ID입니다. |
| user_message | 문자열로 인코딩된 채팅 완료 모델에 대한 사용자 메시지를 가져오거나 설정합니다. |
| 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를 가져오거나 설정합니다. |
| 온도 |
선택 사항입니다. 사용할 샘플링 온도를 문자열 02로 가져오거나 설정합니다. 값(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 파일에 설정한 이러한 구성 속성을 지원합니다.
| 속성 | 설명 |
|---|---|
| 유형 |
PostUserQuery이어야 합니다. |
| 방향 |
out이어야 합니다. |
| 이름 | 출력 바인딩의 이름입니다. |
| 아이디 | 업데이트할 도우미의 ID입니다. |
| userMessage | 문자열로 인코딩된 채팅 완료 모델에 대한 사용자 메시지를 가져오거나 설정합니다. |
| aiConnectionName | 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다. |
| chatModel | 기본값 gpt-3.5-turbo을 사용하여 문자열로 사용할 모델의 ID를 가져오거나 설정합니다. |
| 온도 |
선택 사항입니다. 사용할 샘플링 온도를 문자열 02로 가져오거나 설정합니다. 값(0.8)이 높을수록 출력이 더 임의로 생성되고,(와) 같은 값이0.2 낮을수록 출력이 더 집중적이고 결정적입니다. 둘 다 Temperature 사용하거나 TopP사용하지 않아야 합니다. |
| topP |
선택 사항입니다. 핵 샘플링이라고 하는 온도를 문자열로 사용하여 샘플링하는 대안을 가져오거나 설정합니다. 이 샘플링 방법에서 모델은 확률 질량을 가진 top_p 토큰의 결과를 고려합니다. 따라서 0.1 상위 10개% 확률 질량을 구성하는 토큰만 고려됩니다. 둘 다 Temperature 사용하거나 TopP사용하지 않아야 합니다. |
| maxTokens |
선택 사항입니다. 완료 시 생성할 최대 토큰 수를 기본값 100인 문자열로 가져오거나 설정합니다. 프롬프트의 토큰 수에 max_tokens를 더한 값은 모델의 컨텍스트 길이를 초과할 수 없습니다. 대부분의 모델에는 컨텍스트 길이가 2,048 토큰(4096을 지원하는 최신 모델 제외)이 있습니다. |
| isReasoningModel |
선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다. |
구성
바인딩은 코드에 정의된 다음 속성을 지원합니다.
| 속성 | 설명 |
|---|---|
| 아이디 | 업데이트할 도우미의 ID입니다. |
| userMessage | 문자열로 인코딩된 채팅 완료 모델에 대한 사용자 메시지를 가져오거나 설정합니다. |
| aiConnectionName | 선택 사항입니다. AI 서비스 연결 설정에 대한 구성 섹션의 이름을 가져오거나 설정합니다. Azure OpenAI의 경우: 지정된 경우 이 구성 섹션에서 "엔드포인트" 및 "키" 값을 찾습니다. 지정하지 않았거나 섹션이 없으면 환경 변수(AZURE_OPENAI_ENDPOINT 및 AZURE_OPENAI_KEY)로 바꿉니다. 사용자 할당 관리 ID 인증의 경우 이 속성이 필요합니다. OpenAI 서비스(비 Azure)의 경우 OPENAI_API_KEY 환경 변수를 설정합니다. |
| chatModel | 기본값 gpt-3.5-turbo을 사용하여 문자열로 사용할 모델의 ID를 가져오거나 설정합니다. |
| 온도 |
선택 사항입니다. 사용할 샘플링 온도를 문자열 02로 가져오거나 설정합니다. 값(0.8)이 높을수록 출력이 더 임의로 생성되고,(와) 같은 값이0.2 낮을수록 출력이 더 집중적이고 결정적입니다. 둘 다 Temperature 사용하거나 TopP사용하지 않아야 합니다. |
| topP |
선택 사항입니다. 핵 샘플링이라고 하는 온도를 문자열로 사용하여 샘플링하는 대안을 가져오거나 설정합니다. 이 샘플링 방법에서 모델은 확률 질량을 가진 top_p 토큰의 결과를 고려합니다. 따라서 0.1 상위 10개% 확률 질량을 구성하는 토큰만 고려됩니다. 둘 다 Temperature 사용하거나 TopP사용하지 않아야 합니다. |
| maxTokens |
선택 사항입니다. 완료 시 생성할 최대 토큰 수를 기본값 100인 문자열로 가져오거나 설정합니다. 프롬프트의 토큰 수에 max_tokens를 더한 값은 모델의 컨텍스트 길이를 초과할 수 없습니다. 대부분의 모델에는 컨텍스트 길이가 2,048 토큰(4096을 지원하는 최신 모델 제외)이 있습니다. |
| isReasoningModel |
선택 사항입니다. 채팅 완료 모델이 추론 모델인지 여부를 나타내는 값을 가져오거나 설정합니다. 이 옵션은 실험적이며 모든 모델에 기본값 false이 있는 예상 속성의 패리티가 있을 때까지 추론 모델과 연결됩니다. |
사용
전체 예제는 예제 섹션을 참조하세요.