Azure AI 서비스의 Azure AI 모델 유추를 통해 고객은 단일 엔드포인트 및 자격 증명을 사용하여 주력 모델 공급자의 가장 강력한 모델을 사용할 수 있습니다. 즉, 한 줄의 코드를 변경하지 않고 모델 간에 전환하고 애플리케이션에서 사용할 수 있습니다.
이 문서에서는 유추 엔드포인트를 사용하여 호출하는 방법을 설명합니다.
엔드포인트
Azure AI 서비스는 원하는 작업 유형에 따라 여러 엔드포인트를 노출합니다.
Azure AI 모델 유추 엔드포인트
Azure OpenAI 엔드포인트
Azure AI 유추 엔드포인트(일반적으로 양식 https://<resource-name>.services.ai.azure.com/models사용)를 사용하면 고객이 동일한 인증 및 스키마가 있는 단일 엔드포인트를 사용하여 리소스에 배포된 모델에 대한 유추를 생성할 수 있습니다. 모든 모델은 이 기능을 지원합니다. 이 엔드포인트는 Azure AI 모델 유추 API를 따릅니다.
AI 서비스에 배포된 Azure OpenAI 모델은 Azure OpenAI API(일반적으로 형식 https://<resource-name>.openai.azure.com)도 지원합니다. 이 엔드포인트는 OpenAI 모델의 전체 기능을 노출하고 도우미, 스레드, 파일 및 일괄 처리 유추와 같은 더 많은 기능을 지원합니다.
Azure OpenAI 엔드포인트를 적용하는 방법에 대한 자세한 내용은 Azure OpenAI 서비스 설명서를 참조하세요.
Azure AI 모델 유추 엔드포인트에서 라우팅 기능 사용
유추 엔드포인트는 요청 내의 매개 변수 name 를 배포 이름과 일치시켜 요청을 지정된 배포로 라우팅합니다. 즉, 배포는 특정 구성에서 지정된 모델의 별칭으로 작동합니다. 이러한 유연성을 통해 서비스에서 지정된 모델을 여러 번 배포할 수 있지만 필요한 경우 다른 구성으로 배포할 수 있습니다.
예를 들어 이름이 지정된 Mistral-large배포를 만드는 경우 이러한 배포를 다음과 같이 호출할 수 있습니다.
pip와 같은 패키지 관리 시스템을 사용하여 azure-ai-inference 패키지를 설치합니다.
pip install azure-ai-inference>=1.0.0b5
Warning
Azure AI Services 리소스에는 Python 버전 azure-ai-inference>=1.0.0b5 이 필요합니다.
그런 다음 패키지를 사용하여 모델을 이용할 수 있습니다. 다음 예에서는 채팅 완성을 이용하는 클라이언트를 만드는 방법을 보여 줍니다.
import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential
model = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)
그런 다음 패키지를 사용하여 모델을 이용할 수 있습니다. 다음 예에서는 채팅 완성을 이용하는 클라이언트를 만드는 방법을 보여 줍니다.
import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { AzureKeyCredential } from "@azure/core-auth";
const client = new ModelClient(
"https://<resource>.services.ai.azure.com/models",
new AzureKeyCredential(process.env.AZUREAI_ENDPOINT_KEY)
);
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
그런 다음 패키지를 사용하여 모델을 이용할 수 있습니다. 다음 예에서는 채팅 완성을 이용하는 클라이언트를 만드는 방법을 보여 줍니다.
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri("https://<resource>.services.ai.azure.com/models"),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);
참조 섹션을 사용하여 API 디자인 및 사용할 수 있는 매개 변수를 살펴봅니다. 예를 들어 채팅 완료에 대한 참조 섹션에서는 경로를 /chat/completions 사용하여 채팅 형식의 지침에 따라 예측을 생성하는 방법을 자세히 설명합니다. 경로 /models 는 URL의 루트에 포함됩니다.
요청
POST https://<resource>.services.ai.azure.com/models/chat/completions?api-version=2024-05-01-preview
Authorization: Bearer <bearer-token>
Content-Type: application/json
from azure.ai.inference.models import SystemMessage, UserMessage
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="Explain Riemann's conjecture in 1 paragraph"),
],
model="mistral-large"
)
print(response.choices[0].message.content)
var messages = [
{ role: "system", content: "You are a helpful assistant" },
{ role: "user", content: "Explain Riemann's conjecture in 1 paragraph" },
];
var response = await client.path("/chat/completions").post({
body: {
messages: messages,
model: "mistral-large"
}
});
console.log(response.choices[0].message.content)
requestOptions = new ChatCompletionsOptions()
{
Messages = {
new ChatRequestSystemMessage("You are a helpful assistant."),
new ChatRequestUserMessage("Explain Riemann's conjecture in 1 paragraph")
},
Model = "mistral-large"
};
response = client.Complete(requestOptions);
Console.WriteLine($"Response: {response.Value.Content}");
List<ChatRequestMessage> chatMessages = new ArrayList<>();
chatMessages.add(new ChatRequestSystemMessage("You are a helpful assistant"));
chatMessages.add(new ChatRequestUserMessage("Explain Riemann's conjecture in 1 paragraph"));
ChatCompletions chatCompletions = client.complete(new ChatCompletionsOptions(chatMessages));
for (ChatChoice choice : chatCompletions.getChoices()) {
ChatResponseMessage message = choice.getMessage();
System.out.println("Response:" + message.getContent());
}
요청
POST https://<resource>.services.ai.azure.com/models/chat/completions?api-version=2024-05-01-preview
Authorization: Bearer <bearer-token>
Content-Type: application/json
{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant"
},
{
"role": "user",
"content": "Explain Riemann's conjecture in 1 paragraph"
}
],
"model": "mistral-large"
}
지정된 모델 배포와 일치하지 않는 모델 이름을 지정하면 모델이 존재하지 않는다는 오류가 발생합니다. 모델 배포 추가 및 구성에 설명된 대로 모델 배포를 만들어 사용자가 사용할 수 있는 모델을 제어할 수 있습니다.
제한 사항
Azure OpenAI Batch는 Azure AI 모델 유추 엔드포인트와 함께 사용할 수 없습니다. Azure OpenAI 설명서의 Batch API 지원에 설명 된 대로 전용 배포 URL을 사용해야 합니다.