プログラミング
ストリーミング、ツール呼び出しAIバックエンド(およびフロントエンドReactライブラリ)のためのGo LLM SDK
Go LLM SDK for streaming, tool-calling AI backends (plus frontend React lib) (github.com)
要約
このGo SDKは、複数のプロバイダー(Anthropic, Amazon Bedrock, OpenAIなど)に対応し、モデル呼び出し、ストリーミング応答、ツール実行、構造化出力、マルチステップエージェントなどを単一のAPIで提供します。VercelのAI SDKに倣った設計で、TypeScriptフロントエンドとの互換性も備えています。GoバックエンドとReactフロントエンドを連携させ、リアルタイムなAIアプリケーションを構築できます。
全文翻訳
Goでモデルを呼び出し、応答をストリーミングし、ツールを実行し、AI搭載のエンドポイントを提供します。SDKを単独で使用するか、AI SDK Reactフロントエンドと組み合わせて使用します。
クイックスタート · ドキュメント · 例 · APIリファレンス
なぜこのSDKなのか
このSDKは、Goアプリケーションにモデル呼び出し、ストリーミング、ツール、構造化出力、およびサポートされているプロバイダー間のマルチステップエージェントのための単一APIを提供します。VercelのAI SDKのデザインに従っており、そのTypeScriptフロントエンドのフックとワイヤー互換性を維持しています。Goエンドポイントは、useChatなどのフックにServer-Sent Events(SSE)を直接ストリーミングできます。
Goバックエンド Reactフロントエンド
aisdk.StreamText(...) ── SSE ──▶ useChat({ transport })
aisdk.WriteUIMessageStream(w, …) // 同じプロトコル
生成、ツール、ストリーミングのフローについては、リクエストの実行方法をご覧ください。
既存のAI SDK Reactフロントエンドを再利用するか、プロトコルアダプターを追加せずにTypeScriptバックエンドをGoに置き換えます。
機能
StreamText / GenerateText — リトライとマルチステップツール実行により、応答をストリーミングするか、完了結果を待機します。
React互換性 — useChat, useCompletion, useObjectを提供します。
コンポーザブルツール — モデルからプレーンなGo関数を呼び出し、結果として生じるアクションの承認を要求します。
構造化出力 — スキーマ検証済みのオブジェクト、配列、選択肢を生成します。
複数プロバイダー — Anthropic, Amazon Bedrock, OpenAI, OpenAI互換API、およびGrafanaのホストエンドポイントを呼び出します。
本番環境コントロール — タイムアウト、フォールバック、ロギング、Prometheusメトリクス、およびエージェントオブザーバビリティを設定します。
インストール
Goプロジェクトを作成し、コアモジュールと1つのプロバイダーをインストールします。
mkdir ai-sdk-quickstart
cd ai-sdk-quickstart
go mod init example.com/ai-sdk-quickstart
go get github.com/grafana/ai-sdk
go get github.com/grafana/ai-sdk/providers/anthropic
Amazon Bedrock, OpenAI, OpenAI互換API、および内部的にプロビジョニングされたGrafanaホストエンドポイントについては、プロバイダーの選択をご覧ください。
クイックスタート
この完全なプログラムをmain.goとして保存します。モデルを1回呼び出し、応答を印刷します。
package main
import (
"context"
"fmt"
"log"
"os"
aisdk "github.com/grafana/ai-sdk"
"github.com/grafana/ai-sdk/provider"
"github.com/grafana/ai-sdk/providers/anthropic"
)
func main() {
apiKey := os.Getenv("ANTHROPIC_API_KEY")
if apiKey == "" {
log.Fatal("ANTHROPIC_API_KEY is required")
}
model := anthropic.New(apiKey, "claude-sonnet-5")
result, err := aisdk.GenerateText(
context.Background(),
model,
aisdk.WithModelMessages(provider.UserText("Explain goroutines in one sentence.")),
)
if err != nil {
log.Fatal(err)
}
fmt.Println(result.Text)
}
Anthropic APIキーで実行します。
ANTHROPIC_API_KEY=sk-... go run .
プロジェクトの初期化と認証情報のガイダンスについては、インストールをご覧ください。
この応答をReactクライアントにストリーミングするには、フルスタックチャットの構築に進んでください。
次に進むべきこと
ゴール
ここから始める
Goからモデル呼び出しを行う
Goからテキストを生成する
Reactチャットを構築する
フルスタックチャット
型指定されたデータを返す
構造化出力
モデルにGoコードを呼び出させる
ツール
再利用可能なエージェントを構築する
エージェントループ
モデルプロバイダーを選択する
プロバイダーの概要
ロギングやオブザーバビリティを追加する
ミドルウェアの概要
本番環境への準備
本番環境チェックリスト
フルインデックス: ドキュメント · 実行可能なコード: 例 · 正確なAPI: pkg.go.dev
貢献
貢献を歓迎します。CONTRIBUTING.mdには、開発セットアップ、このリポジトリをユニークにする2つの規約(Vercel AI SDKとのアップストリームパリティ、およびOpenSpecによる仕様駆動開発)、およびプルリクエストチェックリストが含まれています。すべての参加者は、私たちの行動規範に従います。
ライセンス
Apache License 2.0。このSDKはVercel AI SDKのデザインに従っており、こちらもApache-2.0ライセンスです。帰属表示はNOTICEに記録されています。