API
API
Classes
AILocalModelImpl

AILocalModelImpl extends AIModelImpl

subclasses OpenAIModel, GeminiModel

브라우저에서 직접 LLM API를 호출하는 로컬 모델의 공통 베이스.
provider·apiKey·modelName·endpoint 보관, 멀티턴 history 누적·접근, systemContext+history+query를 메시지 배열로 구성하는 call 흐름을 제공한다.
명령(도구)은 매 호출 시 tools로 inline 전달하므로 별도 등록(_doRegisterCommands)은 no-op이다.
실제 HTTP 호출과 네이티브 tool_calls/functionCall → AIResponse 파싱은 서브클래스가 _complete로 구현한다.

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)