ドキュメント
エージェントを作る
Schift エージェントは 3 つの層構造で定義されます。Knowledge(知識)、Rules(ルール)、Tasks(タスク)。
良く設計されたエージェントは、実行前に 3 つの質問に答えられる必要があります。各層はそれぞれ別の筏を担当します。
| 層 | 主な質問 | Schift プリミティブ |
|---|---|---|
| Knowledge | エージェントは何を知っているか? | バケット、RAG、ドキュメントアップロード、セマンティック検索 |
| Rules | エージェントはどう応答するか? | システムプロンプト、モデル選択、メモリ、最大ステップ数 |
| Tasks | エージェントは何をできるか? | ToolRegistry、WebSearch、DeepResearch、カスタム関数 |
Step 1 — Knowledge (知識)
ドキュメントをバケットにアップロードすると、Schift が OCR、チャンキング、埋め込みを自動で処理します。エージェントはその後、インデックスされたすべてのコンテンツを検索できます。
typescriptimport { Schift, RAG } from '@schift-io/sdk';
const schift = new Schift({ apiKey: process.env.SCHIFT_API_KEY });
// ドキュメントをアップロード — Schift が自動でインデックス
await schift.buckets.upload('your-bucket-id', './support-docs/');
// バケットを検索可能な知識ソースとしてラップ
const rag = new RAG(schift, { bucketId: 'your-bucket-id' });バケットを知識ベースとして
1 つのバケットに大量のドキュメントを格納できます。RAG 検索はそのバケット内に限定されるため、エージェントはあなたがアップロードしたコンテンツのみを検索します。
Step 2 — Rules (ルール)
エージェントがどのように推論し応答するかを設定します。システムプロンプトはエージェントの役割を定義し、モデルは性能とコストを調整し、メモリ設定は保持するコンテキスト長を決めます。
typescriptimport { Agent } from '@schift-io/sdk';
const agent = new Agent(schift, {
model: 'gpt-4.1',
systemPrompt: 'あなたは親切なカスタマーサポートエージェントです。提供されたドキュメントを元に質問に答えてください。回答が見つからない場合は明確にそう伝えてください。',
maxSteps: 5,
memory: { enabled: true, windowSize: 10 },
});| ルール | 制御対象 |
|---|---|
model | 各ステップを処理する LLM。品質、レイテンシ、コストに影響。 |
systemPrompt | エージェントのキャラクター、制約、ドメインフォーカスを定義。 |
maxSteps | 最終回答前の最大推論ステップ数。 |
memory.windowSize | マルチターン会話でコンテキストに保持する直近のターン数。 |
Step 3 — Tasks (タスク)
ツールを登録すると、エージェントは質問への回答以上の能力を持ちます。RAG ソースをツールとして登録したり、リアルタイム情報のための Web 検索を追加したり、外部システムと連携するカスタム関数を書いたりできます。
typescriptimport { WebSearch } from '@schift-io/sdk';
// エージェントに知識ベースへのアクセス権を付与
agent.addTool(rag.asTool());
// リアルタイム情報のための Web 検索を追加
agent.addTool(new WebSearch(schift).asTool());
// 外部連携のためのカスタムツール
agent.addTool({
name: 'createTicket',
description: '未解決の問題があるときにサポートチケットを作成',
parameters: { subject: 'string', priority: 'low | medium | high' },
run: async ({ subject, priority }) => {
// チケットシステムを呼び出す
return { ticketId: 'TKT-001' };
},
});まとめてコード例
3 層すべてを 1 つのファイルにまとめた完成例:
typescriptimport { Schift, Agent, RAG, WebSearch } from '@schift-io/sdk';
const schift = new Schift({ apiKey: process.env.SCHIFT_API_KEY });
// Layer 1 — Knowledge
const rag = new RAG(schift, { bucketId: 'your-bucket-id' });
// Layer 2 — Rules
const agent = new Agent(schift, {
model: 'gpt-4.1',
systemPrompt: 'あなたは親切なカスタマーサポートエージェントです...',
maxSteps: 5,
});
// Layer 3 — Tasks
agent.addTool(rag.asTool());
agent.addTool(new WebSearch(schift).asTool());
// 実行
const response = await agent.run('請求の設定方法を教えてください。');
console.log(response.text);小さく始める
3 層すべてを一度に構築する必要はありません。まず Knowledge と Rules だけでドキュメントグラウンディング Q&A エージェントを作り、必要になったときに Tasks を追加しましょう。