HN 日本語サマリー

← 一覧へ戻る
プログラミング

ストリーミング、ツール呼び出しAIバックエンド(およびフロントエンドReactライブラリ)のためのGo LLM SDK

Go LLM SDK for streaming, tool-calling AI backends (plus frontend React lib) (github.com)

49 pointsby matryer13 コメント

要約

この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に記録されています。