Github Models 는 GitHub의 AI 및 머신 러닝 모델을 쉽게 관리하고 배포할 수 있도록 돕는 기능입니다.
GitHub에서 제공하는 모델 저장소나 API를 통해 개발자는 자신만의 머신 러닝 모델을 관리하거나 다른 사람이 만든 모델을 활용할 수 있습니다.
이러한 모델들은 다양한 인공지능 작업에 사용될 수 있으며, GitHub의 강력한 버전 관리 기능을 통해 모델의 버전 관리와 협업을 할 수 있습니다.
이번 시간에는 이러한 Github Models를 가지고 AI를 만드는게 아니라 이미 제공되고 있는 다양한 ai 모델을 가지고 prototyping을 해보려고 합니다.
특히 Github Models 에는 gpt4oO나 llama3.3 등 최신 모델들을 prototyping 할 수 있도록 제공해주고 있습니다.
따라서 우리는 이러한 모델을 가지고 어떻게 ai를 호출하고 응답을 받는지를 테스트할 수 있는 간단한 코드를 작성해보려고 합니다.
Marketplace를 방문하면 이미 Text-ai 형태의 창을 볼 수 있습니다.
간단하게는 여기서 질문과 답변을 테스트 해볼 수 있습니다만, 우리는 개발을 목적으로 하므로 여기에서 더 깊이 들어가 봅시다.
prototyping 하고자 하는 모델을 하나 선택합니다.
Github에 로그인하여 Access Token을 발급 받거나 이미 발급 받은 키가 반드시 필요합니다.
Get API Key 버튼을 클릭하면 발급부터 코드 작성까지 안내를 받을 수 있습니다.
여기에서는 Language: javascript SDK는 OpenAI SDK를 기준으로 설명하겠습니다.
또한 Azure AI 유료버전을 활용할 수도 있으나 무료 버전으로도 충분히 테스트 해볼 수 있으니 여기에서는 Azure AI는 다루지 않겠습니다.
코드를 작성하기 전에 반드시 내 컴퓨터에 token을 등록해야 합니다.
Prototyping 이므로 재부팅하면 초기화 되므로 매번 token를 등록해야 합니다.
가이드의 아래 항목을 참조하세요.
export GITHUB_TOKEN="<your-github-token-goes-here>"
If you're in powershell:
$Env:GITHUB_TOKEN="<your-github-token-goes-here>"
If you're using Windows command prompt:
set GITHUB_TOKEN=<your-github-token-goes-here>
Node를 설치하고 설치가 되었으면 프로젝트 폴더를 만들어 package.json을 작성합니다.
AI 마다 요구하는 dependencies가 다르므로 가이드 문서를 확인하고, 알맞은 항목을 추가해야 합니다.
gpt4o인 경우에는 다음과 같이 작성합니다.
{
"type": "module",
"dependencies": {
"openai": "latest"
}
}
가이드의 "Run a basic code sample" 과 같이 코드를 작성합니다.
import OpenAI from "openai";
const token = process.env["GITHUB_TOKEN"];
const endpoint = "https://models.inference.ai.azure.com";
const modelName = "gpt-4o";
export async function main() {
const client = new OpenAI({ baseURL: endpoint, apiKey: token });
const response = await client.chat.completions.create({
messages: [
{ role:"system", content: "You are a helpful assistant." },
{ role:"user", content: "What is the capital of France?" }
],
temperature: 1.0,
top_p: 1.0,
max_tokens: 1000,
model: modelName
});
console.log(response.choices[0].message.content);
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
실행해보면 제대로 응답이 오는 것을 볼 수 있습니다.
위의 코드는 질문이 고정되어 있어 불편하므로, 사용자로부터 질문을 입력받아 처리하도록 수정합니다. 아래 코드는 명령줄 인수로 질문을 받아오는 예제입니다.
이제 node index.js "질문" 이렇게 전달하면 질문에 대한 응답을 받아볼 수 있습니다.
만일 파라미터를 인식할 수 없는 에러가 발생하는 경우 node index.js -- "질문" 이렇게 하여 명확하게 지정할 수도 있습니다.
import OpenAI from "openai/index.mjs";
// Get the user query from the command-line arguments (args[2])
const userQuery = process.argv[2];
const token = process.env["GITHUB_TOKEN"];
const endpoint = "https://models.inference.ai.azure.com";
const modelName = "gpt-4o";
export async function main() {
const client = new OpenAI({ baseURL: endpoint, apiKey: token });
const response = await client.chat.completions.create({
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: userQuery } // Use the user query passed from args
],
temperature: 1.0,
top_p: 1.0,
max_tokens: 1000,
model: modelName
});
console.log(response.choices[0].message.content);
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
이외에도 이미지 생성 요청 등 다양한 기능을 활용할 수 있습니다.
gpt-4o 외에도 llama3.3, mistral 등의 제공되는 다양한 모델을 테스트하여 자신에게 맞는 AI를 찾아보는 용도로 활용하기에 좋습니다.