API
API
Classes
GeminiModel

GeminiModel extends AILocalModelImpl

Google Gemini generateContent API를 직접 호출하는 로컬 모델.
system 메시지는 systemInstruction으로, 나머지는 contents(role user/model)로 변환하며 (assistant→model), tools는 functionDeclarations로 전달해 native function-calling을 사용한다.
Gemini의 functionCall.args는 이미 객체이므로 별도 JSON parse가 필요 없다.

Properties

contextCacheTtl: string (opens in a new tab) readonly

gemini 명시적 캐시 TTL(Duration 문자열).

default: undefined

embeddingModel: string (opens in a new tab) readonly

query 임베딩에 사용하는 모델명(미지정 시 provider 기본값 사용).

default: undefined

endpoint: string (opens in a new tab) readonly

azure 또는 custom provider에서 호출 대상 endpoint(baseURL)를 지정한다.

default: undefined

ragDim: number (opens in a new tab) readonly

로드된 코퍼스의 임베딩 차원(meta.dim). RAG 로드 전에는 0. query 임베딩 차원을 코퍼스와 맞추는 데 쓴다.

default: undefined

systemContext: string (opens in a new tab) readonly

호출 측(피벗)이 설정하는 시스템 컨텍스트.
데이터 필드 메타·동작 지시문 등을 담으며, LLM 호출 시 system 메시지로 사용된다.

default: undefined

tools: Array (opens in a new tab)<AIToolSchema> readonly

모델에 등록된 도구 목록.

default: undefined

useContextCache: boolean (opens in a new tab) readonly

systemContext를 provider 컨텍스트 캐시로 재사용할지 여부(서브클래스가 provider별로 활용).

default: undefined

Methods

call(api, query, toolChoice?): Promise (opens in a new tab)<AIConversationTurn>

사용자의 자연어 요청을 전달하고 LLM의 응답을 받는다.

ParameterType
apiPivotAIApi
querystring (opens in a new tab)
toolChoiceAIToolChoice

clearHistory(): void (opens in a new tab)

누적된 대화 기록을 모두 비워 새 대화를 시작한다.

dispose(): null

객체를 해제하고 null을 반환한다.
사용 예: this._obj = this._obj.dispose();

return null

getHistory(): Array (opens in a new tab)<AIConversationTurn>

누적된 대화 기록(사용자 요청 + LLM 응답)을 오래된 순서대로 반환한다.

registerTools(tools, clear?): Promise (opens in a new tab)<void (opens in a new tab)>

명령(도구) 목록을 등록한다.
전송(_doRegisterTools)이 성공한 경우에만 로컬 캐시를 갱신한다.
clear가 true이면 기존 목록을 비운 뒤 등록하고, false(기본)이면 추가한다.

ParameterType
toolsArray (opens in a new tab)<AIToolSchema>
clearboolean (opens in a new tab)

retrieve(query, topK?): Promise (opens in a new tab)<Array (opens in a new tab)<string (opens in a new tab)>>

미리 임베딩한 벡터 스냅샷에서 query와 유사한 chunk 상위 topK개를 검색한다.
코퍼스 벡터는 빌드 시 정규화돼 있다고 가정하며(코사인=내적), query 벡터만 런타임에 정규화한다.
RAG 파일이 비어 있으면 빈 배열을 반환한다. 임베딩(_embed) 미구현 시 예외를 throw한다.

제약 사항(벡터 DB의 검색 코어만 떼어낸 경량 구현이므로):

  • 검색 방식: brute-force 전수 내적(O(N·D)). ANN 인덱스(HNSW/IVF)가 아니다. → 정확한 top-k지만, 규모는 브라우저 메모리·연산 한계(수만 벡터 수준)까지만 현실적.
  • 메타데이터 필터 없음: 전체 코퍼스를 대상으로만 검색(예: 부서/기간 조건부 검색 불가).
  • 갱신 없음: 스냅샷을 통째로 교체할 뿐, 개별 벡터 upsert/delete 불가.
  • 정규화 가정: 코퍼스가 정규화돼 있어야 점수가 코사인과 일치(미정규화면 순위 왜곡). 대규모·실시간 필터·증분 갱신이 필요하면 벡터 DB REST 직접 호출 또는 remote 모델(서버 retrieve)로 가야 한다.
ParameterType
querystring (opens in a new tab)
topK=...number (opens in a new tab)

setDeveloperContext(context?): void (opens in a new tab)

개발자 컨텍스트를 설정한다(개발자 관련 정보가 필요할 때 호출 측에서 지정).
undefined를 전달하면 컨텍스트를 해제한다.

ParameterType
contextstring (opens in a new tab)

setSystemContext(context?): void (opens in a new tab)

시스템 컨텍스트를 설정한다(피벗 데이터·필드가 정해질 때 호출 측에서 지정).
undefined를 전달하면 컨텍스트를 해제한다.

ParameterType
contextstring (opens in a new tab)