developing-genkit-js

作者: genkit-ai

使用Genkit在Node.js/TypeScript中开发AI驱动的应用程序。当用户询问关于Genkit、AI代理、流程或JavaScript/TypeScript中的工具,或遇到Genkit错误、验证问题、类型错误或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

相关技能

web-3d-asset-pipeline
openai
准备并优化浏览器游戏的3D资产。当用户要求GLB或glTF交付工作时使用,包括Blender清理和导出、碰撞或LOD…
official
dotnet-upgrade
github
针对多项目解决方案中.NET框架升级的分析、规划与执行的全面提示。涵盖完整升级生命周期:项目发现与分类、依赖项分析、框架目标设定、代码现代化及破坏性变更检测。包含24+个即用型提示,分为九大类别,涵盖策略、CI/CD流水线更新、测试验证及版本控制实践。提供.NET升级助手使用指南,...
official
ai-research-reproduction
lllllllama
RigorPilot 复现模式编排器,用于README优先的深度学习仓库复现。当用户需要端到端、最小可信流程时使用,该流程先读取仓库,选择最小的文档化推理或评估目标,协调输入、设置、可信执行、可选的可信训练、可选的仓库分析以及可选的论文差距解决,强制执行保守补丁规则,记录证据、假设偏差和人工决策点……
researchdevelopmentdocument
java-docs
github
Javadoc最佳实践,用于记录Java类型、方法和成员。公共和受保护成员需要Javadoc注释;包私有和私有成员也鼓励添加,尤其是复杂代码。使用标准标签:@param用于参数,@return用于返回值,@throws用于异常,@see用于交叉引用,@since用于版本追踪。第一句作为摘要描述,应以句号结尾;参数描述以小写字母开头,不加句号。使用...
official
review
microsoft
当被要求审查代码、审查分支或进行代码审查时使用。会生成Breaker(正确性)和API Analyst(兼容性/约定)子代理,同时…
official
flutter-testing
flutter
为Flutter应用生成单元测试、组件测试、集成测试和插件测试,具备架构感知能力。分析目标代码以确定合适的测试类型(逻辑层用单元测试、UI层用组件测试、端到端用集成测试、原生代码用插件测试)。提供每个测试类别的决策树和逐步实现模式,包括模拟/桩对象设置和断言策略。包含可直接使用的代码模板,涵盖ViewModel、Repository、组件以及完整应用流程,并带有适当的...
official
n8n:content-design
n8n-io
n8n:content-design — 一个可安装的AI代理技能,由n8n-io/n8n发布。
official
code-testing-agent
microsoft
为任何编程语言生成并编写新的单元测试——搭建.NET测试项目、pytest测试套件、Vitest/Jest测试套件、Go测试文件和JUnit……
official