🙄
ローカルAI(Llama)でエラー文を自動で解説させてみた
はじめに
エラー文を毎回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