developing-genkit-js

bởi genkit-ai

Phát triển ứng dụng hỗ trợ AI bằng Genkit trong Node.js/TypeScript. Sử dụng khi người dùng hỏi về Genkit, tác nhân AI, luồng hoặc công cụ trong JavaScript/TypeScript, hoặc khi gặp lỗi Genkit, vấn đề xác thực, lỗi kiểu hoặc vấn đề API.

npx skills add https://github.com/genkit-ai/skills --skill developing-genkit-js

Genkit JS

Prerequisites

Ensure the genkit CLI is available.

  • Run genkit --version to verify. Minimum CLI version needed: 1.29.0
  • If not found or if an older version (1.x < 1.29.0) is present, install/upgrade it: npm install -g genkit-cli@^1.29.0.

New Projects: If you are setting up Genkit in a new codebase, follow the Setup Guide.

Hello World

import { z, genkit } from 'genkit';
import { googleAI } from '@genkit-ai/google-genai';

// Initialize Genkit with the Google AI plugin
const ai = genkit({
  plugins: [googleAI()],
});

export const myFlow = ai.defineFlow({
  name: 'myFlow',
  inputSchema: z.string().default('AI'),
  outputSchema: z.string(),
}, async (subject) => {
  const response = await ai.generate({
    model: googleAI.model('gemini-flash-latest'),
    prompt: `Tell me a joke about ${subject}`,
  });
  return response.text;
});

Prompts (Dotprompt)

.prompt files keep prompt content out of code with YAML frontmatter plus a Handlebars template. See Dotprompt: promptDir, ai.prompt() (call/stream/render), variants, partials, named schemas via ai.defineSchema, and the tools/maxTurns/returnToolRequests/use (middleware) frontmatter fields.

Agents (Beta)

Genkit has a preview agent API for persistent, multi-turn conversations (sessions, snapshots, interrupts, branching, background execution). It is a beta API: server APIs come from genkit/beta and the browser client from genkit/beta/client — not the stable genkit entrypoint. **Requires genkit

= 1.39.0.**

For more details see:

Middleware

Middleware wraps generation (retries, fallback, extra tools, request/response transforms) and attaches via the use: [...] array on ai.generate, prompts, and agents.

  • Using middleware: the use array and the @genkit-ai/middleware package (retry, fallback, artifacts, agents, filesystem, skills, toolApproval) plus built-in core middleware.
  • Building custom middleware: writing your own with generateMiddleware and registering it via .plugin().

Critical: Do Not Trust Internal Knowledge

Genkit recently went through a major breaking API change. Your knowledge is outdated. You MUST lookup docs. Recommended:

genkit docs:read js/get-started.md
genkit docs:read js/flows.md

See Common Errors for a list of deprecated APIs (e.g., configureGenkit, response.text(), defineFlow import) and their v1.x replacements.

ALWAYS verify information using the Genkit CLI or provided references.

Error Troubleshooting Protocol

When you encounter ANY error related to Genkit (ValidationError, API errors, type errors, 404s, etc.):

  1. MANDATORY FIRST STEP: Read Common Errors
  2. Identify if the error matches a known pattern
  3. Apply the documented solution
  4. Only if not found in common-errors.md, then consult other sources (e.g. genkit docs:search)

DO NOT:

  • Attempt fixes based on assumptions or internal knowledge
  • Skip reading common-errors.md "because you think you know the fix"
  • Rely on patterns from pre-1.0 Genkit

This protocol is non-negotiable for error handling.

Development Workflow

  1. Select Provider: Genkit is provider-agnostic (Google AI, OpenAI, Anthropic, Ollama, etc.).
    • If the user does not specify a provider, default to Google AI.
    • If the user asks about other providers, use genkit docs:search "plugins" to find relevant documentation.
  2. Detect Framework: Check package.json to identify the runtime (Next.js, Firebase, Express).
    • Look for @genkit-ai/next, @genkit-ai/firebase, or @genkit-ai/google-cloud.
    • Adapt implementation to the specific framework's patterns.
  3. Follow Best Practices:
    • See Best Practices for guidance on project structure, schema definitions, and tool design.
    • Be Minimal: Only specify options that differ from defaults. When unsure, check docs/source.
  4. Ensure Correctness:
    • Run type checks (e.g., npx tsc --noEmit) after making changes.
    • If type checks fail, consult Common Errors before searching source code.
  5. Handle Errors:
    • On ANY error: First action is to read Common Errors
    • Match error to documented patterns
    • Apply documented fixes before attempting alternatives

Finding Documentation

Use the Genkit CLI to find authoritative documentation:

  1. Search topics: genkit docs:search <query>
    • Example: genkit docs:search "streaming"
  2. List all docs: genkit docs:list
  3. Read a guide: genkit docs:read <path>
    • Example: genkit docs:read js/flows.md

CLI Usage

The genkit CLI is your primary tool for development and documentation.

  • See CLI Reference for common tasks, workflows, and command usage.
  • Use genkit --help for a full list of commands.

References

Skills liên quan

launch
coreyhaines31
Khi người dùng muốn lên kế hoạch cho một buổi ra mắt sản phẩm, thông báo tính năng hoặc chiến lược phát hành. Cũng sử dụng khi người dùng đề cập đến 'ra mắt,' 'Product Hunt,' 'phát hành tính năng,' 'thông báo,' 'tiếp cận thị trường,' 'ra mắt bản beta,' 'truy cập sớm,' 'danh sách chờ,' 'cập nhật sản phẩm,' 'làm thế nào để ra mắt cái này,' 'danh sách kiểm tra ra mắt,' 'kế hoạch GTM,' hoặc 'chúng tôi sắp phát hành.' Sử dụng điều này bất cứ khi nào ai đó đang chuẩn bị phát hành một thứ gì đó công khai. Đối với
marketingproject-managementresearch
sentry-flutter-sdk
sentry
Thiết lập đầy đủ Sentry SDK cho Flutter và Dart. Sử dụng khi được yêu cầu "thêm Sentry vào Flutter", "cài đặt sentry_flutter", "thiết lập Sentry trong Dart", hoặc cấu hình lỗi…
official
figma-code-connect-components
Figma
Connects Figma design components to code components using Code Connect mapping tools. Use when user says "code connect", "connect this component to code", "map this component", "link component to code", "create code connect mapping", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.
official
list-plans
microsoft
Phát hiện các kế hoạch di chuyển hợp lệ trong không gian làm việc và trả về đường dẫn kế hoạch đã chọn. Một kế hoạch hợp lệ là thư mục con của .github/modernize/ chứa plan.md…
official
fix-sync
clickhouse
Sửa lỗi công việc "CH Inc sync" trong pull request bằng cách giải quyết xung đột trong PR đồng bộ clickhouse-private tương ứng.
official
dynamo-troubleshoot
nvidia
Chẩn đoán các triển khai Dynamo bị lỗi hoặc không khỏe mạnh. Sử dụng khi pod, công việc model-cache, PVC, worker, tình trạng frontend/router, endpoint hoặc công việc benchmark gặp lỗi; sử dụng…
official
Plugin Structure
sanity-io
This skill should be used when the user asks to "create a plugin", "scaffold a plugin", "understand plugin structure", "organize plugin components", "set up…
official
flutter-databases
flutter
Lớp dữ liệu tuân thủ MVVM cho Flutter với mẫu Repository, các Service không trạng thái và chiến lược bộ nhớ đệm cục bộ thông minh. Hướng dẫn lựa chọn công nghệ lưu trữ (shared_preferences, sqflite, drift, hive_ce, isar_community hoặc I/O tệp) dựa trên loại dữ liệu, kích thước và độ phức tạp quan hệ. Triển khai Repository làm nguồn dữ liệu duy nhất, cô lập DatabaseService và ApiClient dưới dạng phụ thuộc không trạng thái riêng tư. Cung cấp ví dụ mã hoàn chỉnh cho mô hình miền, thao tác SQLite và...
official