🙄

ローカルAI(Llama)でエラー文を自動で解説させてみた

2024/10/12に公開

はじめに

エラー文を毎回chatGPTにコピペするのが面倒なので、コマンド一発で解説してもらえるようにした。
chatGPTのAPIを使うと有料になるらしいので、ローカルかつ無料で動かせるLlamaを使った。

実際のコード↓
GitHub - LlamaErrorExplainer

動作 (2倍速)

以下のようにシェルにeeと打つことで直前に出たエラーの解説をさせた。

※ GPU使えばもうちょい早くなるかも?

環境

  • OS: Windows 10
  • Dockerコンテナ: Ubuntu 20.04
  • Ollamaモデル: elyza:jp8b
  • CPU: 12th Generation Intel® Core™ i7 Processors

実装したもの

  • explain_error.bash: Llamaにエラー時のログを解説させるためのファイル
  • .bashrc: シェルの設定ファイル。ここに「エラー時にログを残すコマンド」と「explain_error.bashを呼び出すコマンド」を書き加える

コードは以下

~/explain_error.bash
ollama run elyza:jp8b <<EOF
以下のエラーが出ています。原因と改善案を出力して。
$(cat ~/log.txt)
EOF
    <<EOF
/bye
EOF
~/.bashrc
# エラー時に log.txt を残し Python を実行
function pythonl(){
        python3 "$@" 2> >(tee ~/log.txt)
}

# log.txt を参照して explain_error.bash を実行
function ee(){
        bash ~/explain_error.bash
}

導入手順

GitHub - LlamaErrorExplainer
で解説しているため省略

Extend

以下に書き換えることでエラー文だけでなく、ファイルの読み込みも可能。(精度は未知数)

~/explain_error.bash
if [ "$#" -eq 0 ]; then
    ollama run elyza:jp8b <<EOF
以下のエラーが出ています。解説と改善案を出して。
$(cat ~/log.txt)
EOF
    <<EOF
/bye
EOF
    exit 1
fi

# コードファイルの内容を連結
code_content=""
for code_file in "$@"; do
    if [ -f "$code_file" ]; then
        # ファイル名と内容を連結
        code_content+="ファイル名:${code_file}\n"
        code_content+="コード:\n$(cat "$code_file")\n"
    else
        echo "警告: '$code_file' は存在しないファイルです。"
    fi
done

# エラー文を解説して改善案を出力
ollama run elyza:jp8b <<EOF
以下のエラーが出ています。解説と改善案を出して。
$(cat ~/log.txt)
${code_content}
EOF
    <<EOF
/bye
EOF
~/.bashrc
# エラー時に log.txt を残し Python を実行
function pythonl(){
        python3 "$@" 2> >(tee ~/log.txt)
}

# log.txt と 0 以上のファイルを参照して explain_error.bash を実行
function ee(){
        bash ~/explain_error.bash "$@"
}

参考

Discussion