Go言語でLLMの出力を構造化データとして扱う際、手動でのJSONスキーマ定義やエラーハンドリングが煩雑になりがちだという課題に対し、オープンソースライブラリ「instructor-go」(github.com/jxnl/instructor-go)を紹介する記事です。Go 1.24以上に対応し、OpenAI、Anthropic、Google Gemini、Cohere、Ollamaといった複数のプロバイダーで使えます。
ModeToolCall、ModeJSON、ModeJSONSchema、ModeToolCallStrictといった主要モードを備え、go-playground/validatorによるバリデーションを行います。記事内の実測ではGPT-4o-miniでinstructor-go経由の実行に平均2.2秒・312トークン(入力277、出力35)を要し、生API呼び出しの約1.1秒・152トークンより遅いものの、自動リトライ機能がある点を利点として挙げています。
出典が伝えている要点
- 紹介されているライブラリは github.com/jxnl/instructor-go である
- instructor-goはGo 1.24以上に対応している
- instructor-goはOpenAI、Anthropic、Google Gemini、Cohere、Ollamaのプロバイダーに対応している
- instructor-goの主要モードとしてModeToolCall、ModeJSON、ModeJSONSchema、ModeToolCallStrictがある
- instructor-goはgo-playground/validatorを使ってバリデーションを行う
- 記事内の実測では、GPT-4o-miniでinstructor-go経由の実行に平均2.2秒かかり、312トークン(入力277、出力35)を使用したとされている
- 同記事内の比較では、生API呼び出しは約1.1秒、152トークンで処理が完了したとされている
- 記事は生API呼び出しの方が高速だが、instructor-goには自動リトライ機能がある点を利点として挙げている
原文より
Get reliable structured data from any LLM. Built on jsonschema for validation, type safety, and compile-time guarantees.
出典: zenn.dev