🔑

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_KEYsecrets ブロックに正しく設定し、env からの冗長な定義を削除しました。

次に、GitHub Actions の実行結果から、PAT_TOKEN の権限不足が原因でエラーが発生していることが判明しました。そこで、GitHub リポジトリの設定で PAT_TOKEN に必要な権限(contents: writepull-requests: writeissues: 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 モジュールが見つからないという新たな問題が浮上しました。今後は、この問題の解決に向けて取り組んでいきます。

GitHubで編集を提案

Discussion