# Goa-AI：設計からエージェントへ

Goで型付きツールとエージェントの契約を設計。接続コードを生成し、明確な実行モデルで動かします。

Source: https://goa.design/ja/docs/2-goa-ai/

Relative links resolve against the source URL above.


## 概要

Goa-AIはGoaの設計言語とジェネレーターをAIアプリケーションに拡張します。エージェント、ツールの入力と結果、構造化出力、ポリシー、評価シナリオを定義し、型、スキーマ、コーデック、接続コードを生成します。プランナーとアプリケーションの動作は開発者が実装します。

**[最初のエージェントをつくる](quickstart/)**、または**[コーディングエージェントとの開発手順](../ai-development/)**へ。別のGoaサービスを先にデプロイする必要はありません。

## コーディングエージェントと開発する

ツールスキーマとGoのコーデックは同じ設計から生成されます。`BindTo`を使うと、サービスの型と実装をツールから再利用できます。生成される**`AGENTS_QUICKSTART.md`**は、そのアプリケーションの設計に基づく実装ガイドです。設計ファイルと一緒にコーディングエージェントへ渡し、`gen/`の外でプランナーと実行処理を実装します。設計の変更に合わせて再生成、コンパイル、評価を行います。

この仕組みは、反復的なスキーマや接続コードをモデルに書かせる作業を減らします。一定の削減率を保証するものではありません。コンテキスト、再試行、レビューを含めたタスク全体で測定してください。

## プロダクトにエージェントを組み込む

### ツールの契約 {#design-first-agents}

Goaの型、説明、例、検証で入力と結果を定義します。JSONスキーマと型付きコーデックが生成され、モデルの引数は実行前に検証されます。[ツールセット](toolsets/)を参照してください。

### 構造化出力 {#typed-direct-completions}

`Completion(...)`で型付きの回答を宣言します。生成された通常・ストリーミング用ヘルパーが完成した結果を検証します。[DSL](dsl-reference/)と[ランタイム](runtime/)を参照してください。

### 評価 {#generated-evaluations}

スイートとシナリオを宣言し、型付きフックを生成して、成果を確認する検査を実装します。意味の評価には評価モデルの較正が必要です。[生成される評価](evaluations/)を参照してください。

### エージェントの連携 {#run-trees-composition}

エージェントを別のエージェントのツールとして公開できます。子の実行には独自の識別子、親へのリンク、履歴があります。[連携ガイド](agent-composition/)を参照してください。

### ストリーミング {#structured-streaming}

ランタイムは回答、ツールの進捗、人からの入力、実行状態を型付きイベントとして出力します。公開範囲と通信方法はアプリケーションが決めます。[ストリーミング](production/#ui-ストリーミング)を参照してください。

### 永続的な実行 {#temporal-durability}

ローカル開発にはインメモリエンジンを使います。永続化、復旧、アクティビティの再試行にはTemporalを設定します。外部への副作用にはアプリケーション側の冪等性と適切な再試行ポリシーが必要です。[本番運用](production/)を参照してください。

### MCPサーバーと自分で運用するツールレジストリ {#tool-registries}

**MCPサーバーを構築。** 生成されたプロトコル処理とアダプターを使い、メソッドをツールとして公開し、リソースやプロンプトテンプレートを提供します。外部MCPツールも利用できます。[MCP統合](mcp-integration/)を参照してください。

**ツールレジストリを運用。** 付属サーバーをRedisとPulseに支えられた共有カタログ兼呼び出しゲートウェイとして実行します。プロバイダーがツールセットとスキーマを公開し、利用側はツールを検索して正常なプロバイダーを呼び出します。接続用のヘルパーも生成されます。[レジストリの運用](registry/)を参照してください。

### モデルと状態 {#model-providers}

OpenAI、Anthropic、AWS Bedrock、Google Vertex AIのアダプターを用意しています。機能の違いは[ランタイム](runtime/)で確認してください。保存領域、セッション、認可、メモリはアプリケーションが管理します。[メモリとセッション](memory-sessions/)を参照してください。

## アーキテクチャ

設計が静的な契約を定義し、生成コードが型付きパッケージに変換します。ランタイムが実行を調整し、エンジンがローカルまたは永続的なワークフローを提供します。意味の判断はプランナー、ビジネス上の動作はアプリケーションサービスが担います。

## ガイド

ローカルのクイックスタートから始め、ツール、モデル、状態、デプロイを追加します。正確な契約にはDSLとランタイムのリファレンスを参照してください。

