OpenHands ワークフローにおける LLM_API_KEY 未検出問題の解決(開発日記 No.121)
関連リンク
はじめに
昨日は OpenHands ワークフローにおける LLM_API_KEY 未検出問題の調査を開始しました。今日は、その解決と、新たに発生した問題への対応に取り組みます。
背景と目的
OpenHands ワークフローで LLM_API_KEY が検出されないという問題は、自動記事変換ワークフローを正常に動作させる上で大きな障害となっていました。この問題を解決し、スムーズな開発フローを実現することが目的です。また、解決の過程で発生した新たな問題にも対応します。
検討内容
昨日の調査で、LLM_API_KEY の渡し方と定義に問題があることが判明しました。また、PAT_TOKEN の権限不足や openhands モジュールが見つからないという問題も浮上しました。これらの問題を一つずつ解決していく必要があります。
実装内容
まず、.github/workflows/openhands_resolver.yml を修正し、LLM_API_KEY を secrets ブロックに正しく設定し、env からの冗長な定義を削除しました。
次に、GitHub Actions の実行結果から、PAT_TOKEN の権限不足が原因でエラーが発生していることが判明しました。そこで、GitHub リポジトリの設定で PAT_TOKEN に必要な権限(contents: write、pull-requests: write、issues: write など)を付与しました。
しかし、PAT_TOKEN の権限修正後も、Process completed with exit code 1. というエラーが発生しました。これは、openhands モジュールが見つからないことが原因である可能性が高いと判断しました。
そこで、OPENHANDS_BASE_CONTAINER_IMAGE リポジトリ変数を使って、OpenHands モジュールがプリインストールされた公式の Docker イメージを使用する方向で解決策を検討することにしました。
また、GitHub Issue #11 に、サブモジュールクローン問題の解決、および「Username is required.」と「Output directory output does not exist.」エラーへの対応についてコメントを追加しました。
openhands_resolver.yml ファイルを編集し、output ディレクトリの作成と openhands.resolver.resolve_issue スクリプトへの --username 引数の追加を行いました。
技術的なポイント
- GitHub Actions の
secretsブロックで環境変数を安全に管理する方法 -
PAT_TOKENに必要な権限を付与することの重要性 -
OPENHANDS_BASE_CONTAINER_IMAGE変数を利用して、必要なモジュールがプリインストールされた Docker イメージを使用する方法
所感
LLM_API_KEY の問題は解決に向かいましたが、次々と新たな問題が発生し、解決には時間がかかりました。特に PAT_TOKEN の権限不足は、エラーメッセージから原因を特定するのが難しく、苦労しました。しかし、一つずつ問題を解決していくことで、着実に進歩していることを実感できました。
今後の課題
-
OPENHANDS_BASE_CONTAINER_IMAGE変数の設定によるopenhandsモジュールが見つからない問題の解決 - GitHub Issue #11 に関連する問題の完全な解決
- OpenHands ワークフロー全体の安定性と信頼性の向上
まとめ
本日の開発では、OpenHands ワークフローにおける LLM_API_KEY 未検出問題の解決に取り組みました。LLM_API_KEY の設定に関する直接的な問題は解決された可能性が高いですが、openhands モジュールが見つからないという新たな問題が浮上しました。今後は、この問題の解決に向けて取り組んでいきます。
Discussion