API 레퍼런스
import { Agent } from "@schift-io/sdk";new Agent(options: AgentOptions)| 옵션 | 타입 | 기본값 | 필수 여부 |
|---|---|---|---|
name | string | — | 필수 |
instructions | string | — | 필수 |
model | ModelId | string | "gpt-4o-mini" | 선택 |
transport | Transport | — | transport 또는 baseUrl 중 하나 |
baseUrl | string | — | transport 또는 baseUrl 중 하나 |
apiKey | string | — | 선택 |
tools | AgentTool[] | [] | 선택 |
rag | RAG | — | 선택 |
memory | MemoryConfig | { maxMessages: 50 } | 선택 |
maxSteps | number | 10 | 선택 |
| 메서드 | 반환값 | 설명 |
|---|---|---|
run(input: string) | Promise<AgentRunResult> | 사용자 메시지로 에이전트를 실행합니다 |
toolCount | number | 등록된 도구 수 (getter) |
import { RAG } from "@schift-io/sdk";new RAG(config: RAGConfig, transport: Transport)| 옵션 | 타입 | 기본값 |
|---|---|---|
bucket | string | 필수 |
topK | number | 5 |
| 메서드 | 반환값 | 설명 |
|---|---|---|
search(query: string) | Promise<SearchResultItem[]> | 버킷에서 시맨틱 검색을 수행합니다 |
chat(query: string) | Promise<ChatResult> | 검색 후 LLM 답변을 생성합니다 |
asTool(name?: string) | AgentTool | 에이전트 도구로 변환합니다 |
WebSearch
Section titled “WebSearch”import { WebSearch } from "@schift-io/sdk";new WebSearch(config?: WebSearchConfig, transport?: Transport)| 옵션 | 타입 | 기본값 |
|---|---|---|
maxResults | number | 5 |
provider | WebSearchProvider | "schift" |
providerApiKey | string | — |
| 메서드 | 반환값 | 설명 |
|---|---|---|
search(query: string) | Promise<WebSearchResultItem[]> | 웹 검색을 수행합니다 |
asTool(name?: string) | AgentTool | 에이전트 도구로 변환합니다 |
DeepResearch
Section titled “DeepResearch”import { DeepResearch } from "@schift-io/sdk";new DeepResearch(config?: DeepResearchConfig, llm: LLMFn, transport?: Transport)| 옵션 | 타입 | 기본값 |
|---|---|---|
maxIterations | number | 3 |
resultsPerSearch | number | 5 |
queriesPerIteration | number | 2 |
queryModel | ModelId | string | "gpt-4o-mini" |
synthesisModel | ModelId | string | "gpt-4o-mini" |
webSearch | WebSearchConfig | — |
| 메서드 | 반환값 | 설명 |
|---|---|---|
run(question: string) | Promise<ResearchReport> | 심층 리서치를 실행합니다 |
asTool(name?: string) | AgentTool | 에이전트 도구로 변환합니다 |
ConversationMemory
Section titled “ConversationMemory”import { ConversationMemory } from "@schift-io/sdk";new ConversationMemory(config?: MemoryConfig)| 옵션 | 타입 | 기본값 |
|---|---|---|
maxMessages | number | 50 |
| 메서드 | 반환값 | 설명 |
|---|---|---|
add(message: ChatMessage) | void | 메시지를 히스토리에 추가합니다 |
getMessages() | ChatMessage[] | 전체 메시지 목록을 반환합니다 |
clear() | void | 시스템 메시지를 제외한 메시지를 초기화합니다 |
length | number | 메시지 수 (getter) |
Schift (클라이언트)
Section titled “Schift (클라이언트)”import { Schift } from "@schift-io/sdk";new Schift(config: SchiftConfig)| 옵션 | 타입 | 기본값 |
|---|---|---|
apiKey | string | 필수 |
baseUrl | string | "https://api.schift.io" |
timeout | number | 60000 |
| 속성 | 타입 | 설명 |
|---|---|---|
transport | Transport | Agent/RAG용 HTTP 트랜스포트 |
workflows | WorkflowClient | 워크플로우 서브 클라이언트 |
models | ModelsClient | 모델 카탈로그 |
db | DBClient | 버킷/문서 관리 |
tools | SchiftTools | 도구 정의 헬퍼 |
| 메서드 | 반환값 | 설명 |
|---|---|---|
embed(request) | Promise<EmbedResponse> | 임베딩을 생성합니다 |
embedBatch(request) | Promise<EmbedBatchResponse> | 배치 임베딩을 생성합니다 |
search(request) | Promise<SearchResult> | 벡터 검색을 수행합니다 |
chat(request) | Promise<ChatResponse> | RAG 채팅을 수행합니다 |
webSearch(query, options?) | Promise<WebSearchResultItem[]> | 웹 검색을 수행합니다 |
AgentTool
Section titled “AgentTool”interface AgentTool { name: string; // Must match /^[a-zA-Z_][a-zA-Z0-9_]*$/ description: string; parameters?: JSONSchema; handler: (args: Record<string, unknown>) => Promise<ToolResult>;}ToolResult
Section titled “ToolResult”interface ToolResult { success: boolean; data: unknown; error?: string;}AgentRunResult
Section titled “AgentRunResult”interface AgentRunResult { steps: AgentStep[]; output: string; totalDurationMs: number;}AgentStep
Section titled “AgentStep”interface AgentStep { id: string; type: "think" | "tool_call" | "tool_result" | "final_answer" | "error"; content?: string; toolName?: string; toolArgs?: Record<string, unknown>; toolResult?: ToolResult; durationMs: number;}ChatMessage
Section titled “ChatMessage”interface ChatMessage { role: "system" | "user" | "assistant" | "tool"; content: string; toolCallId?: string; toolName?: string;}모델 카탈로그
Section titled “모델 카탈로그”import { OpenAIModel, GeminiModel, ClaudeModel } from "@schift-io/sdk";
// OpenAIOpenAIModel.GPT_5_4 // "gpt-5.4"OpenAIModel.GPT_4O_MINI // "gpt-4o-mini"OpenAIModel.O3 // "o3"
// GoogleGeminiModel.GEMINI_3_1_PRO // "gemini-3.1-pro"GeminiModel.GEMINI_2_5_FLASH // "gemini-2.5-flash"
// AnthropicClaudeModel.OPUS_4_6 // "claude-opus-4-6"ClaudeModel.SONNET_4_6 // "claude-sonnet-4-6"ClaudeModel.HAIKU_4_5 // "claude-haiku-4-5-20251001"에러 클래스
Section titled “에러 클래스”import { SchiftError, // 기본 에러 (status, code) AuthError, // 401 - 잘못된 API 키 QuotaError, // 402 - 할당량 초과 AgentError, // 에이전트 실패 (stepId) ToolError, // 도구 실행 실패 (toolName) MaxStepsError, // 최대 ReAct 반복 횟수 초과} from "@schift-io/sdk";