리소스의 모델 유추 엔드포인트에서 유추에 사용할 수 있는 모델을 결정하고 구성할 수 있습니다. 지정된 모델이 구성된 경우 요청에 모델 이름 또는 배포 이름을 표시하여 해당 모델에서 예측을 생성할 수 있습니다. 코드를 사용하기 위해 코드에서 더 이상 변경할 필요가 없습니다.
이 문서에서는 Azure AI 서비스의 Azure AI 모델 유추 서비스에 새 모델을 추가하는 방법을 알아봅니다.
필수 조건
이 문서를 완료하려면 다음이 필요합니다.
Azure 구독 GitHub 모델을 사용하는 경우 환경을 업그레이드하고 프로세스에서 Azure 구독을 만들 수 있습니다. GitHub 모델에서 AI Services의 Azure AI 모델로 업그레이드하는 방법에 대해 자세히 알아봅니다.
Azure AI 서비스 리소스입니다. 자세한 내용은 Azure AI Services 리소스 만들기를 참조 하세요.
모델 추가
모든 모델이 이미 구성된 GitHub 모델과 반대로 Azure AI Services 리소스를 사용하면 엔드포인트에서 사용할 수 있는 모델과 구성을 제어할 수 있습니다.
추가 계약 조건이 필요한 모델 공급자의 경우 해당 약관에 동의하라는 메시지가 표시됩니다. 예를 들어 Mistral 모델은 다른 조건에 동의하도록 요청합니다. 구독 및 배포를 선택하여 해당 사례에 대한 약관에 동의합니다.
현재 배포 설정을 구성할 수 있습니다. 기본적으로 배포는 배포하려는 모델의 이름을 받습니다. 배포 이름은 이 특정 모델 배포로 model 라우팅하기 위한 요청에 대한 매개 변수에 사용됩니다. 이 설정을 사용하면 특정 구성을 연결할 때 모델의 특정 이름을 구성할 수도 있습니다. 예를 들어 엄격한 o1-preview-safe 콘텐츠 안전 콘텐츠 필터가 있는 모델의 경우입니다.
팁
각 모델은 다양한 배포 유형을 지원하여 서로 다른 데이터 상주 또는 처리량 보장을 제공할 수 있습니다. 자세한 내용은 배포 유형을 참조하세요.
그런 다음 패키지를 사용하여 모델을 이용할 수 있습니다. 다음 예에서는 채팅 완성을 이용하는 클라이언트를 만드는 방법을 보여 줍니다.
import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { AzureKeyCredential } from "@azure/core-auth";
const client = new ModelClient(
process.env.AZUREAI_ENDPOINT_URL,
new AzureKeyCredential(process.env.AZUREAI_ENDPOINT_KEY)
);
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
그런 다음 패키지를 사용하여 모델을 이용할 수 있습니다. 다음 예에서는 채팅 완성을 이용하는 클라이언트를 만드는 방법을 보여 줍니다.
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);
참조 섹션을 사용하여 API 디자인 및 사용할 수 있는 매개 변수를 살펴봅니다. 예를 들어 채팅 완료에 대한 참조 섹션에서는 경로를 /chat/completions 사용하여 채팅 형식의 지침에 따라 예측을 생성하는 방법을 자세히 설명합니다. 경로 /models 는 URL의 루트에 포함됩니다.
요청
POST models/chat/completions?api-version=2024-04-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.Choices[0].Message.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"));
ChatCompletionsOptions options = new ChatCompletionsOptions(chatMessages);
options.setModel("Mistral-large");
ChatCompletions response = client.complete(options);
for (ChatChoice choice : chatCompletions.getChoices()) {
ChatResponseMessage message = choice.getMessage();
System.out.println("Response:" + message.getContent());
}
요청
POST models/chat/completions?api-version=2024-04-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"
}
팁
엔드포인트를 사용하는 경우 매개 변수를 리소스에서 model 사용 가능한 모든 모델 배포로 변경할 수 있습니다.
또한 리소스의 Azure OpenAI 서비스 엔드포인트를 사용하여 Azure OpenAI 모델을 사용할 수 있습니다. 이 엔드포인트는 각 모델 배포에만 사용할 수 있으며 자체 URL이 있습니다.
모델 배포 사용자 지정
모델 배포를 만들 때 콘텐츠 필터링 및 속도 제한을 포함하여 다른 설정을 구성할 수 있습니다. 추가 설정을 구성하려면 배포 마법사에서 사용자 지정 옵션을 선택합니다.