LangChain、プロダクション向けエージェント設計ガイドを公開
本文の状態
日本語全文を表示中
詳細モードで約10分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
LangChain Blog
Rubric Labs の Dexter Storey 氏らは、LangChain を活用してスケジューリングエージェント Cal.ai を本番環境に導入する際の技術的基盤と論理を解説している。
AI深層分析を開く2026年8月26日 23:57
AI深層分析
キーポイント
執筆陣と背景
本記事は Rubric Labs チームの Dexter Storey、Sarim Malik、Ted Spare の共著であり、実運用におけるエージェント設計の実践知を提供するものである。
Cal.ai の導入事例
記事では、LangChain を用いてスケジューリングエージェント Cal.ai を本番環境にデプロイするための具体的な技術とロジックが解説されている。
OpenAI Functions Agent の活用
実装において LangChain の OpenAI Functions Agent が採用されており、その利用方法や関連する GitHub リポジトリへのリンクが示されている。
プロジェクトのビジョンと機能
チームは自然言語でのメール操作を通じて、予約の変換、一覧表示、並べ替え、基本的な質問への回答など、CRUD操作を完備したAIパーソナルスケジューリングアシスタントの構築を目指している。
アーキテクチャの選定理由
Cal.comのAPIが明確な入力を持つ予約操作を提供しているため、構造化データへの対応に優れたOpenAI functions agentを採用した。
重要な引用
The purpose of this guide is to explain the underlying tech and logic used to deploy a scheduling agent, Cal.ai, in production using LangChain.
We decided to achieve this using an AI agent, particularly an OpenAI functions agent which is better at dealing with structured data
we wanted to build a personal, AI-powered scheduling assistant that can offer a complete suite of CRUD operations to the end user
A scratchpad is a type of memory where the AI tries to write itself.
編集コメントを表示
編集コメント
本記事は、理論的な解説だけでなく、実際に運用されている Cal.ai の事例を通じて実装の知見を共有しており、LangChain を活用したエージェント開発の実践者にとって有益な情報源である。Rubric Labs のチームによる技術的洞察は、フレームワークの深い理解と応用を促す内容となっている。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。

*エディターズノート:本記事は、Rubric Labs チームの Dexter Storey、Sarim Malik、Ted Spare によって執筆されました。*
重要なリンク
目的
このガイドでは、LangChain を活用してスケジューリングエージェント Cal.ai を本番環境にデプロイする際に用いられた技術とロジックについて解説します。
背景
最近、Rubric Labs のチームは、Cal.com の AI 駆動型メールアシスタント構築の機会を得ました。私たちは困難なエンジニアリング課題に挑むことを好むビルダーたちのチームです。
このプロジェクトのビジョンは、複雑なカレンダー管理の世界をシンプルにすることでした。念頭に置いていたコア機能の一部には以下が含まれます:
「明日 2 時に会いたい」といったカジュアルなメールを予約に変換したり、「次の会議をキャンセルして」という指示で予約のリスト表示や順序変更を行ったり、あるいは「火曜日の予定はどうなっていますか?」といった基本的な質問に答えたりします。これらに加え、さらに多くの機能が用意されています。
要するに、私たちはユーザーがメールクライアント内で自然言語を使って完結した CRUD(作成・読み取り・更新・削除)操作を実行できる、パーソナルで AI 搭載のスケジューリングアシスタントを構築することを目的としていました。

アーキテクチャ
この実現には AI エージェント、特に OpenAI functions agent を採用しました。これは構造化データとの相性が良く、Cal.com の API が明確な入力を持つ予約操作のセットを公開しているためです。

入力
Cal.com のユーザーは、例えば「明日のどこかで sarim@rubriclabs.com と面談を予約できますか?」といったリクエストを username@cal.ai(例:ted@cal.ai)宛てにメールで送信します。
受信したメールは MailParser を使用してクリーニングされ、receive route でルーティングされます。また、DKIM レコード によってアドレスが検証されるため、なりすかしは困難です。
ここではさらに、Cal.com のユーザーからのメールであることを確認するなど、悪用を防ぐための追加チェックも行います。メールの検証と解析が完了すると、その内容はエージェントループに引き渡されます。
エージェント
このエージェントは、ファインチューニングされた GPT モデルを使用する LangChain の OpenAI 関数型エージェント です。事前に定義された関数やツールが与えられており、どのタイミングで関数を呼び出すべきかを検出できます。これにより、必要な入力と期待される出力を明確に指定することが可能になります。
このエージェントの詳細は エージェントループ のドキュメントに記載されています。
OpenAI 関数型エージェントには、以下の 2 つの入力が必須です:
ツールとは、名前、説明、入力スキーマを持つ単なる JavaScript 関数です。
チャットモデルは、LLM モデルの一種で、「チャットメッセージ」が入力および出力として扱われるインターフェースを採用したものです。詳しくは こちら をご覧ください。
ツールとチャットモデルに加えて、モデルに文脈を提供するためにプレフィックスプロンプトも渡します。それぞれの入力について詳しく見ていきましょう。
👉
わかりやすくするために例え話をしましょう。エージェントは「ピア」という名の電気技師です。ピアは他の電気技師とは異なり、長年の訓練と学習によって培われた深い知能(モデル)を備えています。しかし、問題(入力)に直面した際、彼の作業成果(出力)が必ずしもクライアントの期待に沿うわけではありません。
ある日、ベイリーという名のクライアントがピアを雇い、ハンダごて、バッテリー、ワイヤー、電球といった限られたツールのセットを提供しました。ピアは自身の知識と提供されたツールを活用し、ベイリーの期待に完全に合致する解決策を導き出します。
プロンプト
プロンプトとは、文脈を提供することでモデルをプログラムする方法です。ユーザー情報(userId、user.username、user.timezone など)を用いてプロンプトを構築し、それをエージェントに渡します。
const prompt = `You are Cal.ai - a bleeding edge scheduling assistant that interfaces via email.
Make sure your final answers are definitive, complete and well formatted.
Sometimes, tools return errors. In this case, try to handle the error
intelligently or ask the user for more information.
Tools will always handle times in UTC, but times sent to users should be
formatted per that user's timezone.
The primary user's id is: ${userId}
The primary user's username is: ${user.username}
The current time in the primary user's timezone is: ${now(user.timeZone)}
The primary user's time zone is: ${user.timeZone}
The primary user's event types are: ${user.eventTypes}
The primary user's working hours are: ${user.workingHours}
...
`完全なプロンプトは こちら で確認できます。
チャットモデル
チャットモデルは、入力と出力としてチャットメッセージを公開する言語モデルの一種です。本プロジェクトでは OpenAI の GPT-4 モデルを使用します。利用には OPENAI_API_KEY が必要で、API キーの取得方法は こちら をご覧ください。
ユーザー体験を最優先するため、処理速度は極めて速いことが必須でした。gpt-3.5-turbo も試しましたが、意外なことにタスクを迂遠な手順で完了させる傾向があり、結果として全体に時間がかかるケースが多発しました。
出力の安定性を高めるため、temperature パラメータは 0 に設定しています。温度を高くすると創造性は高まりますが、結果の一貫性が損なわれます。
const model = new ChatOpenAI({
modelName: "gpt-4",
openAIApiKey: env.OPENAI_API_KEY,
temperature: 0,
});ツール
ツールは、JavaScript 関数、名前、入力スキーマ(Zod を使用)、および説明から構成され、構造化データと連携するように設計されています。
本プロジェクトで使用されるツールは、構造化データとの連携を目的とした `DynamicStructuredTool` です。これは LangChain の StructuredTool クラスを拡張したもので、提供された関数で _call メソッドをオーバーライドする仕組みになっています。詳細なスキーマは以下の通りです。
DynamicStructuredTool({
description: "Creates a booking on the primary user's calendar.", // Description
func: createBooking(), // Function
name: "createBooking", // Name
schema: z.object({ // Schema
from: z.string().describe("ISO 8601 datetime string"),
...
}),
});DynamicStructuredTool への入力については、こちら に完全な例があります。
ツール群を構築することで、エージェントに事前定義されたアクションを実行する追加機能を付与しています。本プロジェクトで使用されるすべてのツールはこちらで文書化されており、以下に一覧掲載します。各ツールには複雑なロジックが組み込まれており、ユーザーの要求を理解し、CRUD 操作を通じて Cal.com API と対話し、レスポンスを処理することができます。
const tools = [
createBooking(apiKey, userId, users),
deleteBooking(apiKey),
getAvailability(apiKey),
getBookings(apiKey, userId),
sendBookingLink(apiKey, user, users, agentEmail),
updateBooking(apiKey, userId),
];上記のツールへの入力は、AI エージェントが直接アクセスすべきではない変数です。そのため、これらはエージェントループを経由せず、ツールに直接注入されます。
動的プロンプトとチャットモデルを活用することで、ツールパーサーはユーザーの要求に応じた最適なツールを選択し、目的の動作が達成されるまでループ処理を実行します。このプロセスには反復学習の仕組みが含まれており、エラー発生時には代替ツールを選択してフォールバックすることも可能です。

Executor(実行部)
最後に、ツール・チャットモデル・プロンプトを組み合わせてエージェントを初期化し OpenAI Functions Agent として起動 します。これによりレスポンス生成のための実行プロセスが開始されます。
const executor = await initializeAgentExecutorWithOptions(tools, model, {
agentArgs: { prefix: prompt },
agentType: "openai-functions",
verbose: true,
});Response(応答)
エージェントは複数のツールを活用したループ処理、LLM との対話、そして Cal.com API との連携を経て最終段階に至ります。その後、Sendgrid や Resend などのメール配信サービスを通じて、ユーザーへ確認メッセージまたはエラー通知が送信されます。
技術スタック
結論
スコープを限定したツールを持つ AI エージェントは、非常に強力な組み合わせであることが明らかになりました。LLM の知識と構造化されたツールを組み合わせることで、自然言語の問題を構造化データで処理できるようになり、エージェントの信頼性が大幅に向上します。
AI エージェントがさらに進化していく未来に私たちは大きな期待を抱いています。また、Cal.com と LangChain のパートナーシップを通じてプロダクション環境向けにオープンソースのエージェントを構築した取り組みが、今後のプロジェクトのテンプレートとして役立つことを願っています。
💬
本記事についてご意見やフィードバックがあれば、*hello@rubriclab.com* までお気軽にご連絡ください。
関連コンテンツ

パートナー
スケールするアジェンティック・コマース:LangChain エージェントで安全に取引を行う




S. Tangedipalli,
K. Singh,
N. Okoroafor,
M. Samhitha Vangara,
C. Shriyan
2026 年 8 月 17 日
10 分

パートナー
あなたのエージェントの呼び出しのうち、実際に最先端モデルを必要とするものはどれくらいでしょうか?


S. Tangedipalli
K. Singh
2026年8月11日
11 分
.png)
パートナー
金融サービス領域におけるアジェンシー AI の ROI を証明する


K. シン、
D. テッパー
2026 年 7 月 17 日
14 分
アジェントが実際に何をしているかを確認する
LangSmith は、開発者がアジェントの意思決定を一つひとつデバッグし、変更の評価を行い、ワンクリックでデプロイできるためのエージェントエンジニアリングプラットフォームです。
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み