Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

はじめに

最終更新 Markdown で表示Agent セットアップ

このガイドでは、埋め込み関数呼び出し(embedded function calling)を使う最初の Workers AI プロジェクトを設定し、デプロイします。Workers、Workers AI バインディング、ai-utils パッケージ、および大規模言語モデル(LLM)を使い、埋め込み関数呼び出し付きの AI アプリケーションを Cloudflare のグローバルネットワークにデプロイします。

1. Workers AI で Worker プロジェクトを作成する

Workers AI の開始ガイド のステップ 2 まで進めます。

2. 追加の npm パッケージをインストールする

次に、プロジェクトのリポジトリで次のコマンドを実行し、Workers AI のユーティリティパッケージをインストールします。

npm i @cloudflare/ai-utils

3. Workers AI の埋め込み関数呼び出しを追加する

アプリケーションディレクトリの index.ts を、次のコードで更新します。

index.jsjs
import { runWithTools } from "@cloudflare/ai-utils";

export default {
	async fetch(request, env, ctx) {
		// Define function
		const sum = (args) => {
			const { a, b } = args;
			return Promise.resolve((a + b).toString());
		};
		// Run AI inference with function calling
		const response = await runWithTools(
			env.AI,
			// Model with function calling support
			"@hf/nousresearch/hermes-2-pro-mistral-7b",
			{
				// Messages
				messages: [
					{
						role: "user",
						content: "What the result of 123123123 + 10343030?",
					},
				],
				// Definition of available tools the AI model can leverage
				tools: [
					{
						name: "sum",
						description: "Sum up two numbers and returns the result",
						parameters: {
							type: "object",
							properties: {
								a: { type: "number", description: "the first number" },
								b: { type: "number", description: "the second number" },
							},
							required: ["a", "b"],
						},
						// reference to previously defined function
						function: sum,
					},
				],
			},
		);
		return new Response(JSON.stringify(response));
	},
};
index.tsts
import { runWithTools } from "@cloudflare/ai-utils";

type Env = {
	AI: Ai;
};

export default {
	async fetch(request, env, ctx) {
		// Define function
		const sum = (args: { a: number; b: number }): Promise<string> => {
			const { a, b } = args;
			return Promise.resolve((a + b).toString());
		};
		// Run AI inference with function calling
		const response = await runWithTools(
			env.AI,
			// Model with function calling support
			"@hf/nousresearch/hermes-2-pro-mistral-7b",
			{
				// Messages
				messages: [
					{
						role: "user",
						content: "What the result of 123123123 + 10343030?",
					},
				],
				// Definition of available tools the AI model can leverage
				tools: [
					{
						name: "sum",
						description: "Sum up two numbers and returns the result",
						parameters: {
							type: "object",
							properties: {
								a: { type: "number", description: "the first number" },
								b: { type: "number", description: "the second number" },
							},
							required: ["a", "b"],
						},
						// reference to previously defined function
						function: sum,
					},
				],
			},
		);
		return new Response(JSON.stringify(response));
	},
} satisfies ExportedHandler<Env>;

この例では、import { runWithTools} from "@cloudflare/ai-utils" でユーティリティを取り込み、次の API リファレンスに沿って呼び出します。

さらに、ユーザーの問い合わせに答えるために LLM が使えるツールの一覧を定義し、説明しています。ここではツールは sum 関数の 1 つだけです。

runWithTools 関数の内部では、次の手順が抽象化されています。

sequenceDiagram
    participant Worker as Worker
    participant WorkersAI as Workers AI

    Worker->>+WorkersAI: メッセージ、関数呼び出しプロンプト、利用可能なツールを送信
    WorkersAI->>+Worker: 関数呼び出し用のツールと引数を選択
    Worker-->>-Worker: 関数を実行
    Worker-->>+WorkersAI: メッセージ、関数呼び出しプロンプト、関数の結果を送信
    WorkersAI-->>-Worker: 関数の出力を反映した応答を送信

ai-utils パッケージは GitHub でもオープンソースとして公開しています。

4. ローカル開発とデプロイ

ローカル開発とデプロイは、Workers AI の開始ガイド のステップ 4 と 5 を参照してください。

API リファレンス

詳細は API リファレンス を参照してください。

役に立ちましたか?