「Computer use」Claude 3.5 SonnetでPCを操作
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* 目次 [#ae8b0b60]
#contents
* 概要 [#e38ebfde]
AIでPCを操作できるということだ
通常のClaudeのチャットからは、メニューが見当たらない。
aiに、Computer useを使ってみたいと質問したところ以下のURL...
https://docs.anthropic.com/en/docs/build-with-claude/comp...
(英文)
まだ、beta版のようである。(この記事を書いているのは、202...
* 推奨スペック [#j5cc746f]
dockerでPC内に仮想PC入れる感じになるので、
本格的に使うのであれば、
32GBぐらいのRAMと、コア数の多めのPCを別途用意したほうが良...
そうしないと、スワップ処理で、もっさり動作になってしまい...
** デモのソースコード [#b81c330d]
https://github.com/anthropics/anthropic-quickstarts/tree/...
*** ご意見はこちら、、、だそうだ [#k997ddc5]
https://docs.google.com/forms/d/e/1FAIpQLSeD3IqITWsuepB19...
* セットアップ [#fe20dbe8]
** APIキーを用意 [#i6cde43e]
https://console.anthropic.com/dashboard
** Dockerを呼ぶ [#ud24ce95]
Docker本体のインストール手順は割愛する。他を見てほしい。
dockerが使える状態前提。
*** シェルの場合 [#jdaa2f50]
export ANTHROPIC_API_KEY=%your_api_key%
docker run \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $HOME/.anthropic:/home/computeruse/.anthropic \
-p 5900:5900 \
-p 8501:8501 \
-p 6080:6080 \
-p 8080:8080 \
-it ghcr.io/anthropics/anthropic-quickstarts:compute...
*** 実行結果 [#v78154d4]
Xvfb started successfully on display :1
Xvfb PID: 9
starting tint2 on display :1 ...
starting mutter
starting vnc
PORT=5900
starting noVNC
noVNC started successfully
✨ Computer Use Demo is ready!
➡️ Open http://localhost:8080 in your browser to begin
noVNCはオープンソースで開発されている、ブラウザ上で動作す...
ブラウザで、http://localhost:8080 を開いてみると、おそら...
dockerの中身を操作するだけならば、セキュリティは大丈夫そ...
&ref(claude_use_computer.png);
** 会話してみる [#s3bbefb7]
ブラウザで表示した上記の画面の左側のChat欄に、どのような...
アカウントの作成やログイン関連については、手伝えないとい...
OSは何ですか?と聞いたところ以下の回答だった。
Ubuntu 22.04.5 LTS
gitは、すでにインストール済みのようだ。
*** 言語のインストール状況 [#wb563b4a]
インストール済み:
- Python 3.11.6
pyenvを使用して管理されています
多数のPythonパッケージがインストールされています(numpy, ...
未インストール:
- Node.js
- Java
- Go
- Ruby
- PHP
** vi [#f19f6b45]
テキストエディタのVIはインストールされていないようだ。
「viをインストールしてみて」
とお願いしてみた。できた。
「viのカラースキームをmonokaiにして」
とお願いしてみた。できた。日本語に対応してなかったので、...
** CPUのプロセスが100%に! [#ke6eae66]
PCのメモリが16GBだと、ブラウザを立ち上げようとすると、固...
VmmemVSLというプロセスがめちゃめちゃ占有している。
dockerがフリーズしてしまった。メモリを食いすぎ
PCにメモリはたくさん積んでおいたほうがいいだろう。
*** VmmemVSLのメモリ対策の記事 [#o27c5f04]
暫定対応
https://zenn.dev/quantum/articles/b29722e8795335
power shell用のコマンド
# WSLに入るコマンド。すでにWSLに入っている場合は不要
wsl
# メモリをフラッシュするコマンド
sudo sh -c "/usr/bin/echo 3 > /proc/sys/vm/drop_caches"
* 懸念点 [#r6760159]
チャットが複数セッションに分かれていないので、上限に来た...
長文のチャットだと会話の継続はできなくなってくるが、docke...
自主的にどんどんファイルを更新してくれたりするのは頼もし...
処理が進むと重くなってくる、となると、これを使った開発は...
* 自分だったらこう使う。を考えてみた [#f8326c01]
AIとコラボ用にGitLabサーバを立てる
AI用に最低32GBのPCを用意する。
並列で作業させたい場合もあるから、もしかしたら複数台用意...
問題解決に近い環境をdockerのイメージを作る
- 日本語
- 言語の実行環境
- Git系の環境へのアクセス権
- gitのリポジトリをpullしてもらう
関連するファイルは自分で見に行ってもらうように指示する
Issue経由などで課題を与える
課題を手伝ってもらう
gitにコミットする
githabなどに pushする
不本意ながら、AIの処理できるトークン数に限界がくるので、...
再度行う
* ローカルファイルをマウントするようにしてみる [#xfa7a4e6]
dockerで作業するのではなく、ホストマシンでgit cloneしたフ...
サンプルとして、以下を持ってきた。これはanthropicの公式を...
git clone https://github.com/khayashi4337/courses.git
目標は、github上の英語の資料を、ローカルに用意して、Coupu...
ローカルファイルを使えるようにするには、Dockerfile形式で...
なので、上記のコードをローカルファイルに変換してみます。
** ローカルのgitの設定を環境変数に入れておくbash [#m9bb7c...
# Git設定を確認して環境変数に設定
export GIT_USER_NAME=$(git config --global user.name)
export GIT_USER_EMAIL=$(git config --global user.email)
# 設定された値を確認
echo "Git User Name: $GIT_USER_NAME"
echo "Git User Email: $GIT_USER_EMAIL"
** docker-compose.yml [#jffcd092]
version: '3'
services:
anthropic:
image: ghcr.io/anthropics/anthropic-quickstarts:comp...
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- GIT_USER_NAME=${GIT_USER_NAME}
- GIT_USER_EMAIL=${GIT_USER_EMAIL}
volumes:
- ${HOME}/.anthropic:/home/computeruse/.anthropic
- /c/Users/kh/prj/courses:/home/computeruse/course...
- /c/Users/kh/.ssh:/home/computeruse/.ssh:ro # 読...
ports:
- "5900:5900"
- "8501:8501"
- "6080:6080"
- "8080:8080"
tty: true # -it フラグの代わり
stdin_open: true # -it フラグの代わり
はいdocker-composeでも起動できました。.sshフォルダ丸ごと...
これができるということは、今までできなかった以下のことが...
- AIが修正したコードをGitで管理できるようになった。つまり...
*** start-demo.sh [#q172430a]
毎回ブラウザでlocalhost:8080を開くのが面倒になってきたの...
#!/bin/bash
docker-compose down
# コンテナを起動
docker-compose up &
# 20秒待機(コンテナの起動を待つ)
sleep 20
# OSタイプに応じてブラウザを起動
case "$OSTYPE" in
"msys"*|"cygwin"*|"win"*)
# Windows
if command -v start &> /dev/null; then
start chrome http://localhost:8080
else
cmd.exe /c start http://localhost:8080
fi
;;
"darwin"*)
# macOS
open -a "Google Chrome" http://localhost:8080
;;
"linux-gnu"*)
# Linux or WSL
if grep -q Microsoft /proc/version; then
# WSL環境
cmd.exe /c start http://localhost:8080
else
# 通常のLinux
if command -v google-chrome &> /dev/null; then
google-chrome http://localhost:8080
elif command -v chrome &> /dev/null; then
chrome http://localhost:8080
elif command -v chromium &> /dev/null; then
chromium http://localhost:8080
else
xdg-open http://localhost:8080
fi
fi
;;
esac
** 仮想PCの環境を改善できるかチャレンジしてみる [#t20a85d9]
Dockerファイルに、よくやる手順を追記する。
*** Dockerfile [#r96f55db]
以下をDockerfileとして保存する。手順を追加してある。
注意: 下記コード中のyou@example.comと、Your Nameは、各自...
以下のコマンドで確認できます。
echo $(git config --global user.name)
echo $(git config --global user.email)
FROM ghcr.io/anthropics/anthropic-quickstarts:computer-u...
# 最初にrootユーザーとして実行することを明示
USER root
# 日本語環境のセットアップ
RUN apt-get update && \
apt-get install -y \
language-pack-ja-base \
language-pack-ja \
locales \
xclip \
vim && \
locale-gen ja_JP.UTF-8 && \
rm -rf /var/lib/apt/lists/*
# デフォルトユーザー(computeruse)の.bashrcに日本語設定...
USER computeruse
RUN echo "export LANG=ja_JP.UTF-8" >> ~/.bashrc && \
git config --global --add safe.directory /home/compu...
git config --global user.email "you@example.com" && \
git config --global user.name "Your Name"
echo '# Gitブランチ表示の設定' >> ~/.bashrc && \
echo 'parse_git_branch() {' >> ~/.bashrc && \
echo ' git branch 2> /dev/null | sed -e "/^[^*]/d...
echo '}' >> ~/.bashrc && \
echo 'export PS1="\u@\h:\w\[\e[32m\]\$(parse_git_bra...
# システム全体のロケール設定
ENV LANG=ja_JP.UTF-8 \
LANGUAGE=ja_JP:ja \
LC_ALL=ja_JP.UTF-8
*** docker-compose.yml [#l92535b5]
以下の、volumes:の設定項目は、各自が連携させたいディレク...
version: '3'
services:
anthropic:
build:
context: .
dockerfile: Dockerfile
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- GIT_USER_NAME=${GIT_USER_NAME}
- GIT_USER_EMAIL=${GIT_USER_EMAIL}
volumes:
- ${HOME}/.anthropic:/home/computeruse/.anthropic
- /c/Users/kh/prj/courses:/home/computeruse/courses
- /c/Users/kh/.ssh:/home/computeruse/.ssh:ro
ports:
- "5900:5900"
- "8501:8501"
- "6080:6080"
- "8080:8080"
tty: true
stdin_open: true
** 使い方 [#me9dc882]
Dockerfileを修正後、初回のみ
docker-compose up --build
2回目以降は
docker-compose up
* gitでの管理を手伝ってもらう。 [#n27ad2e7]
最初のコミットぐらいは、手動でもいいかな。でもdockerで立...
git add . --all
git commit -m 'first commit'
できた、自分の認証情報を与えているのでできるようになって...
コンソールの日本語も適切に表示できている。
準備は整った。
今回は、練習として、英文のドキュメントがjupyter形式だった...
ただし以下の縛りを付ける。
修正前にgitでブランチを切ること
作業が終わったらコミットすること
** 見どころ [#p2466675]
- 長文のドキュメントの修正に対応しているのかどうか?
- gitの操作を行いながら作業ができるかどうか。
- AIの仕事っぷりをgitのdiffを使ってレビューできるのかどう...
** gitで管理しているブランチのドキュメントを翻訳してもら...
では、やってみよう。
以下のようにお願いしてみた。
以下のディレクトリ配下の
/home/computeruse/courses
拡張子
.ipynb
のファイルをmarkdown形式に変換しコミット、さらに日本語に...
作成するにあたって、gitのブランチを作成し、作業をお願い...
作業が完了したら、コミットをお願いします。
まずは作業指示の認識確認のため、1つのファイルのみで作業...
すると、claude sonnetは、こともあろうか、自分がforkしたリ...
タスクが複雑になると、ポンコツになってくるようなので、git...
* AIの処理が早すぎて、制限に引っかかる問題 [#ted4387a]
Tier1という契約レベルだと、1分間に50リクエスト超えると制...
いろいろやろうとすると、リクエストの頻度が高いせいか以下...
RateLimitError
You have been rate limited. Retry after 0:01:31 (HH:MM:S...
感覚的には、今のリミットの20倍ぐらい制限を緩和しないと...
翻訳の依頼対象が30ファイルぐらいになることがわかって、...
技術的にはできるけれども、サービスデザイン起因の制限によ...
** 急がば回れ的なやり方がよさそう [#d0a316f9]
今までうまくいかなかったので、方針を変えよう。
とりあえず、1つのファイルを丁寧にやって、小さな成功体験...
*** ipynbファイルをmdファイルに変換するツールを作ってもら...
人為的な制限のため、ある程度、自分でやるようにしないとい...
ツール作ってもらって、処理はツールでやるなどして、リクエ...
本当は、ipynbファイルを直接翻訳してもらおうとしたのだが、...
- ipynb_to_md.py
#!/usr/bin/env python3
import sys
import os
import nbformat
from nbconvert import MarkdownExporter
def convert_ipynb_to_md(input_path, output_path=None):
"""
Jupyter NotebookファイルをMarkdownファイルに変換する
Args:
input_path (str): 入力.ipynbファイルのパス
output_path (str, optional): 出力.mdファイルのパ...
"""
try:
# 出力パスが指定されていない場合、入力ファイルと...
if output_path is None:
output_path = os.path.splitext(input_path)[0...
# .ipynbファイルを読み込む
with open(input_path, 'r', encoding='utf-8') as f:
notebook = nbformat.read(f, as_version=4)
# MarkdownExporterを初期化
markdown_exporter = MarkdownExporter()
# notebookをMarkdownに変換
(body, resources) = markdown_exporter.from_noteb...
# Markdownファイルとして保存
with open(output_path, 'w', encoding='utf-8') as...
f.write(body)
print(f"変換が完了しました: {output_path}")
except Exception as e:
print(f"エラーが発生しました: {str(e)}")
sys.exit(1)
def main():
# コマンドライン引数をチェック
if len(sys.argv) < 2:
print("使用方法: python ipynb_to_md.py input.ipy...
sys.exit(1)
input_path = sys.argv[1]
output_path = sys.argv[2] if len(sys.argv) > 2 else ...
# 入力ファイルの存在確認
if not os.path.exists(input_path):
print(f"エラー: 入力ファイル '{input_path}' が見...
sys.exit(1)
# 変換を実行
convert_ipynb_to_md(input_path, output_path)
if __name__ == '__main__':
main()
** .ipynbファイル一覧を出すプログラムも作ってもらった [#k...
- find_ipynb.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import glob
import sys
def find_ipynb_files(directory="."):
"""
指定されたディレクトリ配下の.ipynbファイルを再帰的に...
Args:
directory (str): 検索を開始するディレクトリパス...
"""
try:
# 絶対パスに変換
abs_directory = os.path.abspath(directory)
# .ipynbファイルを再帰的に検索
pattern = os.path.join(abs_directory, "**", "*.i...
ipynb_files = glob.glob(pattern, recursive=True)
# 結果を標準出力に出力
for file_path in ipynb_files:
print(file_path)
except Exception as e:
print(f"エラーが発生しました: {str(e)}", file=sy...
sys.exit(1)
def main():
# コマンドライン引数からディレクトリを取得(指定がな...
directory = sys.argv[1] if len(sys.argv) > 1 else "."
# ディレクトリの存在確認
if not os.path.exists(directory):
print(f"エラー: ディレクトリ '{directory}' が見...
sys.exit(1)
if not os.path.isdir(directory):
print(f"エラー: '{directory}' はディレクトリでは...
sys.exit(1)
# 検索を実行
find_ipynb_files(directory)
if __name__ == '__main__':
main()
** 1つの修正が終わったら、dockerを再起動したほうがいいか...
おそらく、会話の履歴がたまってきたら、後半のリクエストっ...
いずれ、claude3.5のインターフェースのように新規チャット開...
終了行:
* 目次 [#ae8b0b60]
#contents
* 概要 [#e38ebfde]
AIでPCを操作できるということだ
通常のClaudeのチャットからは、メニューが見当たらない。
aiに、Computer useを使ってみたいと質問したところ以下のURL...
https://docs.anthropic.com/en/docs/build-with-claude/comp...
(英文)
まだ、beta版のようである。(この記事を書いているのは、202...
* 推奨スペック [#j5cc746f]
dockerでPC内に仮想PC入れる感じになるので、
本格的に使うのであれば、
32GBぐらいのRAMと、コア数の多めのPCを別途用意したほうが良...
そうしないと、スワップ処理で、もっさり動作になってしまい...
** デモのソースコード [#b81c330d]
https://github.com/anthropics/anthropic-quickstarts/tree/...
*** ご意見はこちら、、、だそうだ [#k997ddc5]
https://docs.google.com/forms/d/e/1FAIpQLSeD3IqITWsuepB19...
* セットアップ [#fe20dbe8]
** APIキーを用意 [#i6cde43e]
https://console.anthropic.com/dashboard
** Dockerを呼ぶ [#ud24ce95]
Docker本体のインストール手順は割愛する。他を見てほしい。
dockerが使える状態前提。
*** シェルの場合 [#jdaa2f50]
export ANTHROPIC_API_KEY=%your_api_key%
docker run \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $HOME/.anthropic:/home/computeruse/.anthropic \
-p 5900:5900 \
-p 8501:8501 \
-p 6080:6080 \
-p 8080:8080 \
-it ghcr.io/anthropics/anthropic-quickstarts:compute...
*** 実行結果 [#v78154d4]
Xvfb started successfully on display :1
Xvfb PID: 9
starting tint2 on display :1 ...
starting mutter
starting vnc
PORT=5900
starting noVNC
noVNC started successfully
✨ Computer Use Demo is ready!
➡️ Open http://localhost:8080 in your browser to begin
noVNCはオープンソースで開発されている、ブラウザ上で動作す...
ブラウザで、http://localhost:8080 を開いてみると、おそら...
dockerの中身を操作するだけならば、セキュリティは大丈夫そ...
&ref(claude_use_computer.png);
** 会話してみる [#s3bbefb7]
ブラウザで表示した上記の画面の左側のChat欄に、どのような...
アカウントの作成やログイン関連については、手伝えないとい...
OSは何ですか?と聞いたところ以下の回答だった。
Ubuntu 22.04.5 LTS
gitは、すでにインストール済みのようだ。
*** 言語のインストール状況 [#wb563b4a]
インストール済み:
- Python 3.11.6
pyenvを使用して管理されています
多数のPythonパッケージがインストールされています(numpy, ...
未インストール:
- Node.js
- Java
- Go
- Ruby
- PHP
** vi [#f19f6b45]
テキストエディタのVIはインストールされていないようだ。
「viをインストールしてみて」
とお願いしてみた。できた。
「viのカラースキームをmonokaiにして」
とお願いしてみた。できた。日本語に対応してなかったので、...
** CPUのプロセスが100%に! [#ke6eae66]
PCのメモリが16GBだと、ブラウザを立ち上げようとすると、固...
VmmemVSLというプロセスがめちゃめちゃ占有している。
dockerがフリーズしてしまった。メモリを食いすぎ
PCにメモリはたくさん積んでおいたほうがいいだろう。
*** VmmemVSLのメモリ対策の記事 [#o27c5f04]
暫定対応
https://zenn.dev/quantum/articles/b29722e8795335
power shell用のコマンド
# WSLに入るコマンド。すでにWSLに入っている場合は不要
wsl
# メモリをフラッシュするコマンド
sudo sh -c "/usr/bin/echo 3 > /proc/sys/vm/drop_caches"
* 懸念点 [#r6760159]
チャットが複数セッションに分かれていないので、上限に来た...
長文のチャットだと会話の継続はできなくなってくるが、docke...
自主的にどんどんファイルを更新してくれたりするのは頼もし...
処理が進むと重くなってくる、となると、これを使った開発は...
* 自分だったらこう使う。を考えてみた [#f8326c01]
AIとコラボ用にGitLabサーバを立てる
AI用に最低32GBのPCを用意する。
並列で作業させたい場合もあるから、もしかしたら複数台用意...
問題解決に近い環境をdockerのイメージを作る
- 日本語
- 言語の実行環境
- Git系の環境へのアクセス権
- gitのリポジトリをpullしてもらう
関連するファイルは自分で見に行ってもらうように指示する
Issue経由などで課題を与える
課題を手伝ってもらう
gitにコミットする
githabなどに pushする
不本意ながら、AIの処理できるトークン数に限界がくるので、...
再度行う
* ローカルファイルをマウントするようにしてみる [#xfa7a4e6]
dockerで作業するのではなく、ホストマシンでgit cloneしたフ...
サンプルとして、以下を持ってきた。これはanthropicの公式を...
git clone https://github.com/khayashi4337/courses.git
目標は、github上の英語の資料を、ローカルに用意して、Coupu...
ローカルファイルを使えるようにするには、Dockerfile形式で...
なので、上記のコードをローカルファイルに変換してみます。
** ローカルのgitの設定を環境変数に入れておくbash [#m9bb7c...
# Git設定を確認して環境変数に設定
export GIT_USER_NAME=$(git config --global user.name)
export GIT_USER_EMAIL=$(git config --global user.email)
# 設定された値を確認
echo "Git User Name: $GIT_USER_NAME"
echo "Git User Email: $GIT_USER_EMAIL"
** docker-compose.yml [#jffcd092]
version: '3'
services:
anthropic:
image: ghcr.io/anthropics/anthropic-quickstarts:comp...
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- GIT_USER_NAME=${GIT_USER_NAME}
- GIT_USER_EMAIL=${GIT_USER_EMAIL}
volumes:
- ${HOME}/.anthropic:/home/computeruse/.anthropic
- /c/Users/kh/prj/courses:/home/computeruse/course...
- /c/Users/kh/.ssh:/home/computeruse/.ssh:ro # 読...
ports:
- "5900:5900"
- "8501:8501"
- "6080:6080"
- "8080:8080"
tty: true # -it フラグの代わり
stdin_open: true # -it フラグの代わり
はいdocker-composeでも起動できました。.sshフォルダ丸ごと...
これができるということは、今までできなかった以下のことが...
- AIが修正したコードをGitで管理できるようになった。つまり...
*** start-demo.sh [#q172430a]
毎回ブラウザでlocalhost:8080を開くのが面倒になってきたの...
#!/bin/bash
docker-compose down
# コンテナを起動
docker-compose up &
# 20秒待機(コンテナの起動を待つ)
sleep 20
# OSタイプに応じてブラウザを起動
case "$OSTYPE" in
"msys"*|"cygwin"*|"win"*)
# Windows
if command -v start &> /dev/null; then
start chrome http://localhost:8080
else
cmd.exe /c start http://localhost:8080
fi
;;
"darwin"*)
# macOS
open -a "Google Chrome" http://localhost:8080
;;
"linux-gnu"*)
# Linux or WSL
if grep -q Microsoft /proc/version; then
# WSL環境
cmd.exe /c start http://localhost:8080
else
# 通常のLinux
if command -v google-chrome &> /dev/null; then
google-chrome http://localhost:8080
elif command -v chrome &> /dev/null; then
chrome http://localhost:8080
elif command -v chromium &> /dev/null; then
chromium http://localhost:8080
else
xdg-open http://localhost:8080
fi
fi
;;
esac
** 仮想PCの環境を改善できるかチャレンジしてみる [#t20a85d9]
Dockerファイルに、よくやる手順を追記する。
*** Dockerfile [#r96f55db]
以下をDockerfileとして保存する。手順を追加してある。
注意: 下記コード中のyou@example.comと、Your Nameは、各自...
以下のコマンドで確認できます。
echo $(git config --global user.name)
echo $(git config --global user.email)
FROM ghcr.io/anthropics/anthropic-quickstarts:computer-u...
# 最初にrootユーザーとして実行することを明示
USER root
# 日本語環境のセットアップ
RUN apt-get update && \
apt-get install -y \
language-pack-ja-base \
language-pack-ja \
locales \
xclip \
vim && \
locale-gen ja_JP.UTF-8 && \
rm -rf /var/lib/apt/lists/*
# デフォルトユーザー(computeruse)の.bashrcに日本語設定...
USER computeruse
RUN echo "export LANG=ja_JP.UTF-8" >> ~/.bashrc && \
git config --global --add safe.directory /home/compu...
git config --global user.email "you@example.com" && \
git config --global user.name "Your Name"
echo '# Gitブランチ表示の設定' >> ~/.bashrc && \
echo 'parse_git_branch() {' >> ~/.bashrc && \
echo ' git branch 2> /dev/null | sed -e "/^[^*]/d...
echo '}' >> ~/.bashrc && \
echo 'export PS1="\u@\h:\w\[\e[32m\]\$(parse_git_bra...
# システム全体のロケール設定
ENV LANG=ja_JP.UTF-8 \
LANGUAGE=ja_JP:ja \
LC_ALL=ja_JP.UTF-8
*** docker-compose.yml [#l92535b5]
以下の、volumes:の設定項目は、各自が連携させたいディレク...
version: '3'
services:
anthropic:
build:
context: .
dockerfile: Dockerfile
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- GIT_USER_NAME=${GIT_USER_NAME}
- GIT_USER_EMAIL=${GIT_USER_EMAIL}
volumes:
- ${HOME}/.anthropic:/home/computeruse/.anthropic
- /c/Users/kh/prj/courses:/home/computeruse/courses
- /c/Users/kh/.ssh:/home/computeruse/.ssh:ro
ports:
- "5900:5900"
- "8501:8501"
- "6080:6080"
- "8080:8080"
tty: true
stdin_open: true
** 使い方 [#me9dc882]
Dockerfileを修正後、初回のみ
docker-compose up --build
2回目以降は
docker-compose up
* gitでの管理を手伝ってもらう。 [#n27ad2e7]
最初のコミットぐらいは、手動でもいいかな。でもdockerで立...
git add . --all
git commit -m 'first commit'
できた、自分の認証情報を与えているのでできるようになって...
コンソールの日本語も適切に表示できている。
準備は整った。
今回は、練習として、英文のドキュメントがjupyter形式だった...
ただし以下の縛りを付ける。
修正前にgitでブランチを切ること
作業が終わったらコミットすること
** 見どころ [#p2466675]
- 長文のドキュメントの修正に対応しているのかどうか?
- gitの操作を行いながら作業ができるかどうか。
- AIの仕事っぷりをgitのdiffを使ってレビューできるのかどう...
** gitで管理しているブランチのドキュメントを翻訳してもら...
では、やってみよう。
以下のようにお願いしてみた。
以下のディレクトリ配下の
/home/computeruse/courses
拡張子
.ipynb
のファイルをmarkdown形式に変換しコミット、さらに日本語に...
作成するにあたって、gitのブランチを作成し、作業をお願い...
作業が完了したら、コミットをお願いします。
まずは作業指示の認識確認のため、1つのファイルのみで作業...
すると、claude sonnetは、こともあろうか、自分がforkしたリ...
タスクが複雑になると、ポンコツになってくるようなので、git...
* AIの処理が早すぎて、制限に引っかかる問題 [#ted4387a]
Tier1という契約レベルだと、1分間に50リクエスト超えると制...
いろいろやろうとすると、リクエストの頻度が高いせいか以下...
RateLimitError
You have been rate limited. Retry after 0:01:31 (HH:MM:S...
感覚的には、今のリミットの20倍ぐらい制限を緩和しないと...
翻訳の依頼対象が30ファイルぐらいになることがわかって、...
技術的にはできるけれども、サービスデザイン起因の制限によ...
** 急がば回れ的なやり方がよさそう [#d0a316f9]
今までうまくいかなかったので、方針を変えよう。
とりあえず、1つのファイルを丁寧にやって、小さな成功体験...
*** ipynbファイルをmdファイルに変換するツールを作ってもら...
人為的な制限のため、ある程度、自分でやるようにしないとい...
ツール作ってもらって、処理はツールでやるなどして、リクエ...
本当は、ipynbファイルを直接翻訳してもらおうとしたのだが、...
- ipynb_to_md.py
#!/usr/bin/env python3
import sys
import os
import nbformat
from nbconvert import MarkdownExporter
def convert_ipynb_to_md(input_path, output_path=None):
"""
Jupyter NotebookファイルをMarkdownファイルに変換する
Args:
input_path (str): 入力.ipynbファイルのパス
output_path (str, optional): 出力.mdファイルのパ...
"""
try:
# 出力パスが指定されていない場合、入力ファイルと...
if output_path is None:
output_path = os.path.splitext(input_path)[0...
# .ipynbファイルを読み込む
with open(input_path, 'r', encoding='utf-8') as f:
notebook = nbformat.read(f, as_version=4)
# MarkdownExporterを初期化
markdown_exporter = MarkdownExporter()
# notebookをMarkdownに変換
(body, resources) = markdown_exporter.from_noteb...
# Markdownファイルとして保存
with open(output_path, 'w', encoding='utf-8') as...
f.write(body)
print(f"変換が完了しました: {output_path}")
except Exception as e:
print(f"エラーが発生しました: {str(e)}")
sys.exit(1)
def main():
# コマンドライン引数をチェック
if len(sys.argv) < 2:
print("使用方法: python ipynb_to_md.py input.ipy...
sys.exit(1)
input_path = sys.argv[1]
output_path = sys.argv[2] if len(sys.argv) > 2 else ...
# 入力ファイルの存在確認
if not os.path.exists(input_path):
print(f"エラー: 入力ファイル '{input_path}' が見...
sys.exit(1)
# 変換を実行
convert_ipynb_to_md(input_path, output_path)
if __name__ == '__main__':
main()
** .ipynbファイル一覧を出すプログラムも作ってもらった [#k...
- find_ipynb.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import glob
import sys
def find_ipynb_files(directory="."):
"""
指定されたディレクトリ配下の.ipynbファイルを再帰的に...
Args:
directory (str): 検索を開始するディレクトリパス...
"""
try:
# 絶対パスに変換
abs_directory = os.path.abspath(directory)
# .ipynbファイルを再帰的に検索
pattern = os.path.join(abs_directory, "**", "*.i...
ipynb_files = glob.glob(pattern, recursive=True)
# 結果を標準出力に出力
for file_path in ipynb_files:
print(file_path)
except Exception as e:
print(f"エラーが発生しました: {str(e)}", file=sy...
sys.exit(1)
def main():
# コマンドライン引数からディレクトリを取得(指定がな...
directory = sys.argv[1] if len(sys.argv) > 1 else "."
# ディレクトリの存在確認
if not os.path.exists(directory):
print(f"エラー: ディレクトリ '{directory}' が見...
sys.exit(1)
if not os.path.isdir(directory):
print(f"エラー: '{directory}' はディレクトリでは...
sys.exit(1)
# 検索を実行
find_ipynb_files(directory)
if __name__ == '__main__':
main()
** 1つの修正が終わったら、dockerを再起動したほうがいいか...
おそらく、会話の履歴がたまってきたら、後半のリクエストっ...
いずれ、claude3.5のインターフェースのように新規チャット開...
ページ名: