2.0 KiB
2.0 KiB
タスクループ
openmcp-sdkはタスクループのメカニズムでagentを構築し、ユーザーがそれと対話できるようにしています。ユーザーがこのタスクループをリアルタイムで制御する必要がある場合、openmcp-sdkが提供するイベントを通じて対応するフック関数を登録することで実現できます。
クイックデプロイの例を挙げると、以下のコードでタスクループを制御するオブジェクトを取得できます:
import { OmAgent } from '../openmcp-sdk/service/sdk';
const agent = new OmAgent();
agent.loadMcpConfig('./mcpconfig.json');
const loop = await agent.getLoop();
:::warning
フックの登録とloopの取得はagent.ainvoke
を実行する前に完了させる必要があります!
:::
このloop
オブジェクトを通じて、以下のフックを登録できます:
registerOnChunk
: モデルがchunkを返した時にトリガーregisterOnDone
: タスク完了時にトリガーregisterOnError
: タスクエラー時にトリガーregisterOnEpoch
: 各タスクエポック開始時にトリガーregisterOnToolCall
: ツール関数呼び出し前にトリガーregisterOnToolCalled
: ツール関数呼び出し後にトリガー
これらのフック関数はコールバック関数を受け取り、対応するイベント発生時に呼び出されます。
loop.registerOnChunk((chunk) => {
console.log('⚙️ Agent Chunk', chunk);
});
loop.registerOnDone(() => {
console.log('⚙️ Agent Done');
});
loop.registerOnError((err) => {
console.log('⚙️ Agent Error', err);
});
loop.registerOnEpoch(() => {
console.log('⚙️ Agent Epoch');
});
loop.registerOnToolCall((toolCall) => {
console.log('⚙️ Agent Tool Call', toolCall);
return toolCall;
});
loop.registerOnToolCalled((toolCalled) => {
console.log('⚙️ Agent Tool Called', toolCalled);
return toolCalled;
});