직접 GenAI API
LLM, VLM 또는 ASR 모델이 애플리케이션과 동일한 프로세스에서 실행될 때 Neat의 직접 GenAI API를 사용합니다. 배포된 LLiMa 모델 디렉터리를 로드하고, GenerationRequest를 생성한 다음, 완전한 결과가 나올 때까지 기다리거나 결과가 생성되는 대로 토큰을 스트리밍합니다.
브라우저, 서비스 또는 원격 클라이언트가 HTTP를 통해 모델을 호출해야 하는 경우 대신 GenAI 서버를 사용합니다. 두 애플리케이션 경계 중에서 선택하는 방법에 대한 도움은 GenAI 모델 개요를 참조하십시오.
적절한 핸들 선택
대부분의 애플리케이션의 경우 GenAIModel부터 시작합니다. 이 핸들은 모델 디렉터리에서 모델 작업을 자동으로 감지하고 다음과 같은 기능 확인을 제공합니다.
accepts_text()accepts_image()accepts_audio()task()model_id()
애플리케이션이 로드하는 내용을 알고 더 좁은 범위의 API를 사용하려는 경우 작업별 핸들을 사용합니다.
| 핸들 | 사 용 용도 |
|---|---|
genai::GenAIModel | 자동으로 감지된 LLM, VLM 또는 ASR 모델 디렉터리 |
genai::VisionLanguageModel | 텍스트 전용 LLM 및 이미지 처리 기능이 있는 VLM |
genai::ASRModel | 음성-텍스트 모델 |
텍스트 요청 실행
#include "neat/genai.h"
#include <iostream>
int main() {
simaai::neat::genai::GenAIModel model(
"/media/nvme/llima/models/Qwen3-4B-Instruct-2507-GPTQ-a16w4");
simaai::neat::genai::GenerationRequest request;
request.prompt = "Explain what an API gateway is in one sentence.";
request.max_new_tokens = 64;
auto result = model.run(request);
std::cout << result.text << "\n";
}
run()은 동기 방식으로 작동합니다. 즉, 생성 작업이 완료된 후에 반환됩니다. 이는 테스트, 스크립트 및 요청/응답 애플리케이션 코드에 사용하기 가장 간단한 형태입니다.
생성된 토큰 스트림
호출자가 생 성되는 대로 출력을 확인해야 하는 경우 stream()을 사용합니다. 각 항목은 최신 텍스트 조각, 현재 지표 및 생성 완료 시의 최종 상태를 포함하는 TokenSample입니다.
simaai::neat::genai::GenerationRequest request;
request.prompt = "Give me three practical tips for designing a small REST API.";
request.max_new_tokens = 96;
simaai::neat::genai::GenerationStream stream_handle = model.stream(request);
for (const auto& token : stream_handle) {
std::cout << token.text << std::flush;
}
std::cout << "\n";