← Cloudflare Workers AI / workers-ai / features / function-calling / embedded
Начало работы
Это руководство проведёт вас через настройку и развёртывание первого проекта Workers AI с embedded function calling. Вы будете использовать Workers, привязку Workers AI, ai-utils package ↗, и большую языковую модель (LLM) для развёртывания вашего первого приложения на базе ИИ со встроенным вызовом функций в глобальной сети Cloudflare.
1. Создайте проект Worker с Workers AI
Следуйте Руководство по началу работы с Workers AI до шага 2.
2. Установите дополнительный пакет npm
Затем выполните следующую команду в репозитории вашего проекта, чтобы установить пакет утилит Worker AI.
npm i @cloudflare/ai-utils3. Добавьте Workers AI Embedded function calling
Обновите index.ts файл в каталоге приложения со следующим кодом:
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));
},
};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 функцию.
Абстрагировано с помощью runWithTools функции происходят следующие действия:
sequenceDiagram
participant Worker as Worker
participant WorkersAI as Workers AI
Worker->>+WorkersAI: Send messages, function calling prompt, and available tools
WorkersAI->>+Worker: Select tools and arguments for function calling
Worker-->>-Worker: Execute function
Worker-->>+WorkersAI: Send messages, function calling prompt and function result
WorkersAI-->>-Worker: Send response incorporating function output
ai-utils package также доступна с открытым исходным кодом на Github ↗.
4. Локальная разработка и развёртывание
Выполните шаги 4 и 5 из Руководство по началу работы с Workers AI для локальной разработки и развёртывания.
Справочник по API
Подробнее см. в Справочник по API.