MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
OpenCodeの設定 - 環境変数のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
OpenCodeの設定 - 環境変数
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == OpenCodeは、設定のカスタマイズに多数の環境変数をサポートしている。<br> 認証、モデル選択、設定ファイルパス、ネットワーク、LSP設定等、動作の細部にわたる制御が環境変数を通じて可能である。<br> <br> OpenCodeは、75以上のLLMプロバイダをサポートしており、環境変数によってプロバイダごとのAPIキーや接続設定を柔軟に管理できる。<br> <br> 主要カテゴリは以下の通りである。<br> * 認証関連 *: APIキー、対話的認証、サーバ認証 * モデル設定 *: デフォルトモデル、プロバイダ固有オプション、モデル変種 * 設定ファイル関連 *: カスタム設定パス、インライン設定 * ネットワーク・プロキシ *: カスタムエンドポイント、プロキシ設定 * LSP関連 *: LSPサーバの制御、実験的機能 <br><br> == 環境変数の設定方法 == ==== シェル環境変数 ==== <code>export</code> コマンドを使用して、現在のシェルセッションに環境変数を一時的に設定できる。<br> Fishシェルでは、<code>set -x</code> コマンド または <code>set -Ux</code> コマンドを使用することもできる。<br> <br> 永続化する場合は、<code>~/.profile</code>、<code>~/.zprofile</code> 等に設定する。<br> <br> <syntaxhighlight lang="sh"> # 一時的な設定 (現在のセッションのみ有効) export ANTHROPIC_API_KEY="sk-ant-xxxx" # Bash / Zsh での永続化 (~/.profile または ~/.zprofile 等に設定) echo 'export ANTHROPIC_API_KEY="sk-ant-xxxx"' >> ~/.bashrc # Fishでの設定 set -x ANTHROPIC_API_KEY "sk-ant-xxxx" # Fishでの永続化 set -Ux ANTHROPIC_API_KEY "sk-ant-xxxx" </syntaxhighlight> <br> ==== opencode.jsonによる参照 ==== <u>opencode.json</u> では、<code>{env:変数名}</code> 形式を使用して環境変数を参照することができる。<br> APIキー等の機密情報をJSONファイルに直接記載することなく、環境変数から読み込める。<br> <br> 使用例を以下に示す。<br> <br> <syntaxhighlight lang="json"> { "providers": { "anthropic": { "apiKey": "{env:ANTHROPIC_API_KEY}" }, "openai": { "apiKey": "{env:OPENAI_API_KEY}" } } } </syntaxhighlight> <br> また、プロジェクトルートの <u>.envファイル</u> は、OpenCode起動時に自動的にロードされる。<br> プロジェクト固有のAPIキーや設定を <u>.envファイル</u> で管理する場合に有用である。<br> <br> ==== 設定の優先度 ==== OpenCodeの設定は階層的に管理されており、複数の場所で同じ設定が定義された場合は、より高い優先度の設定が適用される。<br> <br> <center> {| class="wikitable" |+ 設定の優先度 ! 優先度 !! 設定場所 !! 説明 |- | 1 (最高) || リモート設定 || .well-known/opencode による設定 |- | 2 || グローバル設定 || ~/.config/opencode/opencode.json |- | 3 || カスタム設定 || 環境変数 <code>OPENCODE_CONFIG</code> で指定したファイル |- | 4 || プロジェクト設定 || プロジェクトルートのopencode.json |- | 5 || .opencodeディレクトリ || .opencode/ディレクトリ内の設定 |- | 6 (最低) || インライン設定 || 環境変数 <code>OPENCODE_CONFIG_CONTENT</code> |} </center> <br><br> == 認証関連 == ==== APIキーの設定 ==== OpenCodeは75以上のLLMプロバイダをサポートしており、各プロバイダに対応するAPIキーを環境変数で設定する。<br> <br> 下表に、主要なプロバイダのAPIキー環境変数を示す。<br> <br> <center> {| class="wikitable" ! 環境変数 !! 説明 |- | <code>ANTHROPIC_API_KEY</code> || Anthropic Claudeモデルの認証に使用する。 |- | <code>OPENAI_API_KEY</code> || OpenAI GPTモデルの認証に使用する。 |- | <code>GEMINI_API_KEY</code> || Google Geminiモデルの認証に使用する。 |- | <code>GROQ_API_KEY</code> || Groqのモデルの認証に使用する。 |- | <code>XAI_API_KEY</code> || X AI (Grok) モデルの認証に使用する。 |- | <code>GITHUB_TOKEN</code> || GitHub Copilotモデルの認証に使用する。 |- | <code>OPENROUTER_API_KEY</code> || OpenRouter経由のモデルの認証に使用する。 |- | <code>AWS_ACCESS_KEY_ID</code> / <code>AWS_SECRET_ACCESS_KEY</code> / <code>AWS_REGION</code> || AWS Bedrockモデルの認証に使用する。 |- | <code>AZURE_API_KEY</code> / <code>AZURE_ENDPOINT</code> || Azure OpenAIモデルの認証に使用する。 |} </center> <br> 設定例を以下に示す。<br> <syntaxhighlight lang="sh"> # Anthropic Claude export ANTHROPIC_API_KEY="sk-ant-api03-xxxxxxxxxxxx" # OpenAI export OPENAI_API_KEY="sk-xxxxxxxxxxxx" # Google Gemini export GEMINI_API_KEY="AIzaXXXXXXXXXXXX" # AWS Bedrock export AWS_ACCESS_KEY_ID="AKIAXXXXXXXXXXXXXXXX" export AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" export AWS_REGION="us-east-1" </syntaxhighlight> <br> ==== opencode auth loginコマンド ==== 環境変数によるAPIキーの手動設定に加え、対話的な認証フローを提供する <code>opencode auth login</code> コマンドも利用できる。<br> <br> # コマンドラインから実行 opencode auth login <br> # OpenCodeセッション内から実行 /connect <br> コマンドを実行すると、Webブラウザが起動して認証フローが開始される。<br> 認証が完了すると、認証情報は以下のパスに保存される。<br> * 保存先 *: <u>~/.local/share/opencode/auth.json</u> <br> このファイルのパーミッション管理に注意すること。<br> 機密情報が含まれるため、適切なアクセス権限を設定することを推奨する。<br> <br> また、環境変数 <code>OPENCODE_SERVER_PASSWORD</code> を設定することにより、OpenCodeのHTTPサーバに基本認証を設定することができる。<br> <br> <u>本番環境では必ず設定することを推奨する。</u><br> <br><br> == モデル設定 == ==== デフォルトモデルの指定 ==== <u>opencode.jsonファイル</u> の <code>model</code> フィールドを使用して、デフォルトのLLMモデルを指定する。<br> モデルの指定形式は、<code><プロバイダID>/<モデルID></code> である。<br> <br> 設定例を以下に示す。<br> <syntaxhighlight lang="json"> { "model": "anthropic/claude-sonnet-4-5", "small_model": "anthropic/claude-haiku-4-5" } </syntaxhighlight> <br> <code>small_model</code> フィールドは、軽量タスク向けの小型モデルを指定する。<br> コスト効率を高めるために、重い処理には <code>model</code> を、軽い処理には <code>small_model</code> を使い分けることができる。<br> <br> モデルの設定優先度は以下の通りである。<br> <br> <center> {| class="wikitable" |+ モデル設定の優先度 ! 優先度 !! 方法 !! 説明 |- | 1 (最高) || --model <CLIフラグ> || 起動時にコマンドラインで直接指定 |- | 2 || opencode.jsonファイルの <code>model</code> フィールド || 設定ファイルで指定 |- | 3 (最低) || 前回使用したモデル || 自動引き継ぎ |} </center> <br> ==== プロバイダ固有オプション ==== <u>opencode.jsonファイル</u> の <code>providers</code> セクションを使用して、プロバイダごとの接続設定を記述することができる。<br> <br> 設定例を以下に示す。<br> <syntaxhighlight lang="json"> { "providers": { "anthropic": { "apiKey": "{env:ANTHROPIC_API_KEY}" }, "openai": { "apiKey": "{env:OPENAI_API_KEY}", "baseURL": "https://api.openai.com/v1" }, "ollama": { "baseURL": "http://localhost:11434" } } } </syntaxhighlight> <br> <u><code>baseURL</code> フィールドを使用することにより、カスタムエンドポイントを指定できる。</u><br> <u>OllamaやLiteLLM等のローカルLLMサーバを使用する場合に有用である。</u><br> <br> ==== モデル変種 (Variants) ==== OpenCodeでは、モデル変種 (Variants) を定義することにより、プロンプトパラメータをカスタマイズしたモデル設定を作成できる。<br> <br> Variants設定の例を以下に示す。<br> <syntaxhighlight lang="json"> { "model": "anthropic/claude-sonnet-4-5", "modelVariants": { "fast": { "model": "anthropic/claude-haiku-4-5", "temperature": 0.3 }, "creative": { "model": "anthropic/claude-opus-4-5", "temperature": 0.9 } } } </syntaxhighlight> <br> 定義したVariantsはセッション内でモデルを切り替える際に選択できる。<br> 用途に応じて最適なモデルと設定を素早く切り替えることが可能になる。<br> <br><br> == 設定ファイル関連 == ==== 環境変数 OPENCODE_CONFIG ==== 環境変数 <code>OPENCODE_CONFIG</code> は、カスタム設定ファイルのパスを指定する環境変数である。<br> デフォルトの設定ファイルパスではなく、任意のパスの設定ファイルを使用する場合に設定する。<br> <br> <syntaxhighlight lang="sh"> # カスタム設定ファイルを指定する export OPENCODE_CONFIG="/path/to/custom/opencode.json" # 指定した設定ファイルでOpenCodeを起動する opencode </syntaxhighlight> <br> <u>CI/CD環境や複数の設定プロファイルを切り替えて使用する場合に有用である。</u><br> <br> ==== 環境変数 OPENCODE_CONFIG_DIR ==== 環境変数 <code>OPENCODE_CONFIG_DIR</code> は、OpenCodeの設定ディレクトリのパスを指定する環境変数である。<br> デフォルト値は <u>~/.config/opencodeディレクトリ</u> である。<br> <br> <syntaxhighlight lang="sh"> # カスタム設定ディレクトリを指定する export OPENCODE_CONFIG_DIR="/path/to/custom/config" opencode </syntaxhighlight> <br> <u>複数のOpenCode環境を並行して使用する場合や、設定ディレクトリを標準的な場所以外に配置する場合に使用する。</u><br> <br> ==== 環境変数 OPENCODE_CONFIG_CONTENT ==== 環境変数 <code>OPENCODE_CONFIG_CONTENT</code> は、JSON文字列として設定内容を直接指定する環境変数である。<br> 設定ファイルを配置できない環境や、CI/CDパイプラインで動的に設定を生成する場合に有用である。<br> <br> <syntaxhighlight lang="sh"> # JSON文字列で設定を直接指定する export OPENCODE_CONFIG_CONTENT='{"model": "anthropic/claude-sonnet-4-5"}' opencode </syntaxhighlight> <br> <u>この環境変数は設定の優先度において最も低い位置に位置するため、他の設定方法で上書きされることに注意する。</u><br> <br><br> == ネットワーク・プロキシ == OpenCodeをプロキシ環境下やカスタムエンドポイントで使用する場合は、以下の設定を行う。<br> <br> <syntaxhighlight lang="sh"> # HTTPSプロキシの設定 export HTTPS_PROXY="http://proxy.example.com:8080" export HTTP_PROXY="http://proxy.example.com:8080" # プロキシを経由しないホストの設定 export NO_PROXY="localhost,127.0.0.1,.internal.example.com" # 自己署名証明書を使用するプロキシ環境 export NODE_EXTRA_CA_CERTS="/path/to/ca-bundle.crt" </syntaxhighlight> <br> カスタムエンドポイントの設定は、<u>opencode.jsonファイル</u> の <code>providers</code> セクションの <code>baseURL</code> フィールドで行う。<br> <br> <syntaxhighlight lang="json"> { "providers": { "openai": { "apiKey": "{env:OPENAI_API_KEY}", "baseURL": "https://custom-endpoint.example.com/v1" } } } </syntaxhighlight> <br><br> == LSP関連 == OpenCodeは言語サーバプロトコル (LSP) との統合をサポートしており、LSPサーバの動作を環境変数で制御できる。<br> <br> <center> {| class="wikitable" ! 環境変数 !! 説明 |- | <code>OPENCODE_DISABLE_LSP_DOWNLOAD</code> || 値を <u>true</u> に設定して、LSPサーバの自動ダウンロードを無効化する。<br>オフライン環境や、手動でLSPサーバを管理する場合に使用する。 |- | <code>OPENCODE_EXPERIMENTAL_LSP_TOOL</code> || 値を <u>true</u> に設定して、実験的なLSPツールを有効化する。<br>この機能は実験的であり、予告なく変更または削除される可能性がある。 |} </center> <br> LSPサーバの個別設定は、<u>opencode.jsonファイル</u> の <code>lsp</code> セクションで行うこともできる。<br> <br> <syntaxhighlight lang="json"> { "lsp": { "typescript": { "command": "typescript-language-server", "args": ["--stdio"], "env": { "NODE_PATH": "/usr/local/lib/node_modules" } }, "python": { "command": "pylsp", "args": [] } } } </syntaxhighlight> <br> <u><code>lsp</code> セクションの <code>env</code> フィールドを使用することにより、LSPサーバごとに個別の環境変数を設定できる。</u><br> <br><br> == 環境変数一覧 == 下表に、主要な環境変数のクイックリファレンスを示す。<br> <br> <center> {| class="wikitable" |+ OpenCode 環境変数一覧 ! 環境変数 !! カテゴリ !! 説明 !! デフォルト値 |- | <code>ANTHROPIC_API_KEY</code> || 認証 || Anthropic Claude APIキー || - |- | <code>OPENAI_API_KEY</code> || 認証 || OpenAI APIキー || - |- | <code>GEMINI_API_KEY</code> || 認証 || Google Gemini APIキー || - |- | <code>GROQ_API_KEY</code> || 認証 || Groq APIキー || - |- | <code>XAI_API_KEY</code> || 認証 || X AI (Grok) APIキー || - |- | <code>GITHUB_TOKEN</code> || 認証 || GitHub Copilot トークン || - |- | <code>OPENROUTER_API_KEY</code> || 認証 || OpenRouter APIキー || - |- | <code>AWS_ACCESS_KEY_ID</code> || 認証 || AWS アクセスキーID || - |- | <code>AWS_SECRET_ACCESS_KEY</code> || 認証 || AWS シークレットアクセスキー || - |- | <code>AWS_REGION</code> || 認証 || AWS リージョン || - |- | <code>AZURE_API_KEY</code> || 認証 || Azure OpenAI APIキー || - |- | <code>AZURE_ENDPOINT</code> || 認証 || Azure OpenAI エンドポイント || - |- | <code>OPENCODE_SERVER_PASSWORD</code> || 認証 || HTTPサーバ基本認証パスワード || - |- | <code>OPENCODE_CONFIG</code> || 設定ファイル || カスタム設定ファイルパス || - |- | <code>OPENCODE_CONFIG_DIR</code> || 設定ファイル || カスタム設定ディレクトリパス || ~/.config/opencode |- | <code>OPENCODE_CONFIG_CONTENT</code> || 設定ファイル || JSON文字列による直接設定 || - |- | <code>HTTPS_PROXY</code> || ネットワーク || HTTPSプロキシ || - |- | <code>HTTP_PROXY</code> || ネットワーク || HTTPプロキシ || - |- | <code>NO_PROXY</code> || ネットワーク || プロキシ除外ホスト || - |- | <code>NODE_EXTRA_CA_CERTS</code> || ネットワーク || CA証明書パス || - |- | <code>OPENCODE_DISABLE_LSP_DOWNLOAD</code> || LSP || LSPサーバ自動ダウンロード無効化 || - |- | <code>OPENCODE_EXPERIMENTAL_LSP_TOOL</code> || LSP || 実験的LSPツール有効化 || - |} </center> <br><br> == ユースケース == ==== 複数プロバイダの併用 ==== 用途に応じて複数のLLMプロバイダを使い分けるための設定例を以下に示す。<br> <br> <syntaxhighlight lang="sh"> # 複数プロバイダのAPIキーを設定する export ANTHROPIC_API_KEY="sk-ant-api03-xxxxxxxxxxxx" export OPENAI_API_KEY="sk-xxxxxxxxxxxx" export GEMINI_API_KEY="AIzaXXXXXXXXXXXX" </syntaxhighlight> <br> <syntaxhighlight lang="json"> { "model": "anthropic/claude-sonnet-4-5", "providers": { "anthropic": { "apiKey": "{env:ANTHROPIC_API_KEY}" }, "openai": { "apiKey": "{env:OPENAI_API_KEY}" }, "google": { "apiKey": "{env:GEMINI_API_KEY}" } } } </syntaxhighlight> <br> ==== CI/CD環境での設定 ==== CI/CDパイプラインにおいて、OpenCodeを使用するための設定例を以下に示す。<br> <br> <syntaxhighlight lang="sh"> # CI/CD環境変数として設定する # (GitHub Actionsの場合は、secretsとして管理) export ANTHROPIC_API_KEY="${{ secrets.ANTHROPIC_API_KEY }}" # インライン設定でモデルを指定する export OPENCODE_CONFIG_CONTENT='{"model": "anthropic/claude-haiku-4-5"}' opencode --headless --prompt "コードをレビューしてください" </syntaxhighlight> <br> ==== ローカルLLMの使用 ==== Ollama等のローカルで動作するLLMサーバをOpenCodeから使用するための設定例を以下に示す。<br> <br> <syntaxhighlight lang="json"> { "model": "ollama/llama3.2", "providers": { "ollama": { "baseURL": "http://localhost:11434" } } } </syntaxhighlight> <br> <u>ローカルLLMを使用する場合はAPIキーの設定は不要であり、<code>baseURL</code> フィールドでローカルサーバのエンドポイントを指定する。</u><br> <br> ==== 企業環境でのプロキシ設定 ==== 企業ネットワークでプロキシサーバを経由してOpenCodeを使用する場合の設定例を以下に示す。<br> <br> <syntaxhighlight lang="sh"> # 企業プロキシ設定 export HTTPS_PROXY="http://proxy.corporate.com:8080" export HTTP_PROXY="http://proxy.corporate.com:8080" export NO_PROXY="localhost,127.0.0.1,.internal.corporate.com" # 企業内の自己署名CA証明書の設定 export NODE_EXTRA_CA_CERTS="/etc/ssl/certs/corporate-ca-bundle.crt" </syntaxhighlight> <br><br> == セキュリティ上の注意事項 == * APIキーをシェルの履歴に記録されないよう注意する。 *: <code>export</code> コマンドで設定する場合、シェル履歴にAPIキーが記録される可能性がある。 *: <u>.envファイル</u> を使用するか、シェルのヒストリ機能を一時的に無効化することを検討する。 *: <br> * <u>~/.local/share/opencode/auth.jsonファイル</u> のパーミッション管理を行う。 *: このファイルには認証情報が含まれるため、適切なファイルパーミッション (600) を設定する。 *: <br> * ソース管理 (Git) にAPIキーを含めない。 *: <u>.envファイル</u> は必ず <u>.gitignoreファイル</u> に追加する。 *: <u>opencode.jsonファイル</u> には <code>{env:変数名}</code> 形式を使用してAPIキーを直接記載しない。 *: <br> * リモートURLは信頼できるもののみ使用する。 *: <u>opencode.jsonファイル</u> の <code>instructions</code> フィールドで指定するリモートURLは、組織が管理するリポジトリのURLのみを使用する。 *: <br> * 本番環境では、環境変数 <code>OPENCODE_SERVER_PASSWORD</code> を必ず設定する。 *: OpenCodeをHTTPサーバモードで運用する場合は、基本認証を設定して不正アクセスを防ぐ。 <br><br> == 参考リンク == * [https://opencode.ai/docs OpenCode公式ドキュメント] * [https://github.com/sst/opencode OpenCode GitHubリポジトリ] <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:設定]]
OpenCodeの設定 - 環境変数
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse