Skip to content

Commit

Permalink
Merge pull request #136 from dai-motoki/release/v0.1.29
Browse files Browse the repository at this point in the history
Release/v0.1.29
  • Loading branch information
dai-motoki authored May 8, 2024
2 parents baeb1ff + 36bea90 commit dbf40e1
Show file tree
Hide file tree
Showing 10 changed files with 413 additions and 4 deletions.
86 changes: 86 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@


name: PyPI Package CI/CD # PyPIパッケージのCI/CDワークフロー名

on: # トリガーの設定
push: # - プッシュイベントの場合
branches: # -- 対象ブランチ
- main # --- mainブランチ
- "release/**" # --- releaseで始まるブランチ
pull_request: # - プルリクエストイベントの場合
branches: # -- 対象ブランチ
- main # --- mainブランチ
- "release/**" # --- releaseで始まるブランチ

jobs: # ジョブの定義
test: # テストジョブ
runs-on: ubuntu-latest # - Ubuntu最新版で実行
strategy:
matrix:
python-version: [3.7, 3.8, 3.9, "3.10", "3.11"] # 複数のPythonバージョン(3.7〜3.11)でテストを実行
steps: # - ステップの定義
- uses: actions/checkout@v2 # -- リポジトリのチェックアウト(v2)
- name: Set up Python ${{ matrix.python-version }} # -- 指定したバージョンのPythonをセットアップ
uses: actions/setup-python@v2 # --- Python環境のセットアップ(v2)
with: # --- オプション
python-version: ${{ matrix.python-version }} # ---- マトリクスで指定したPythonバージョンを使用
- name: Install dependencies # -- 依存関係のインストール
run: | # --- 以下のコマンドを実行
python -m pip install --upgrade pip # ---- pipのアップグレード
pip install -e . # ---- 現在のディレクトリを編集可能モードでインストール
- name: Run tests # -- テストの実行
run: | # --- 以下のコマンドを実行
pip install pytest # ---- pytestをインストール
- name: Run test_sample.py # -- test_sample.pyの実行
run: | # --- 以下のコマンドを実行
pytest tests/test_sample.py # ---- test_sample.pyをpytestで実行
- name: Run test_llms.py # -- test_llms.pyの実行
env: # --- 環境変数の設定
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} # ---- AnthropicのAPIキー(シークレットから取得)
run: | # --- 以下のコマンドを実行
pytest tests/test_llms.py -s # ---- test_llms.pyをpytestで実行
- name: Run test_minimal.py # -- test_minimal.pyの実行
run: | # --- 以下のコマンドを実行
pytest tests/test_minimal.py -s # ---- test_minimal.pyをpytestで実行し、print内容を出力
# - name: Run test_sample.py # -- test_sample.pyの実行
# if: matrix.python-version == '3.11' # --- Python 3.11の場合のみ実行
# run: | # --- 以下のコマンドを実行
# pytest tests/test_sample.py # ---- test_sample.pyをpytestで実行
# - name: Run test_cli.py # -- test_cli.pyの実行
# if: matrix.python-version == '3.11' # --- Python 3.11の場合のみ実行
# run: | # --- 以下のコマンドを実行
# pytest tests/test_cli.py # ---- test_cli.pyをpytestで実行
# - name: Run test_converter.py # -- test_converter.pyの実行
# if: matrix.python-version == '3.11' # --- Python 3.11の場合のみ実行
# run: | # --- 以下のコマンドを実行
# pytest tests/test_converter.py # ---- test_converter.pyをpytestで実行
deploy: # デプロイジョブ
needs: test # - テストジョブが成功した後に実行
runs-on: ubuntu-latest # - Ubuntu最新版で実行
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release/') # - releaseブランチへのプッシュ時のみ実行
steps: # - ステップの定義
- uses: actions/checkout@v2 # -- リポジトリのチェックアウト(v2)
- name: Set up Python # -- Pythonのセットアップ
uses: actions/setup-python@v2 # --- Python環境のセットアップ(v2)
with: # --- オプション
python-version: 3.10 # ---- Python 3.8を使用
- name: Install dependencies # -- 依存関係のインストール
run: | # --- 以下のコマンドを実行
python -m pip install --upgrade pip # ---- pipのアップグレード
pip install -e . # ---- 現在のディレクトリを編集可能モードでインストール
- name: Update version and upload to PyPI # -- バージョンの更新とPyPIへのアップロード
env: # --- 環境変数の設定
PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }} # ---- PyPIユーザー名(シークレットから取得)
PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} # ---- PyPIパスワード(シークレットから取得)
run: | # --- 以下のコマンドを実行
chmod +x update_and_upload.sh # ---- update_and_upload.shに実行権限を付与
./update_and_upload.sh # ---- update_and_upload.shを実行
- name: Merge release branch to main # -- リリースブランチをmainブランチにマージ
uses: devmasx/merge-branch@v1.3.1 # --- merge-branchアクションを使用(v1.3.1)
with: # --- オプション
type: now # ---- 即時マージ
from_branch: ${{ github.ref }} # ---- マージ元ブランチ(現在のブランチ)
target_branch: main # ---- マージ先ブランチ(mainブランチ)
github_token: ${{ secrets.GITHUB_TOKEN }} # ---- GitHubトークン(シークレットから取得)
19 changes: 19 additions & 0 deletions tests/test_llms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import zoltraak.llms.claude as claude

def test_generate_response():
"""
generate_response関数のテスト
"""
model = "claude-3-haiku-20240307"
prompt = "今日の晩御飯を提案して"
max_tokens = 100
temperature = 0.8

response = claude.generate_response(model, prompt, max_tokens, temperature)

# レスポンスが文字列であることを確認
assert isinstance(response, str)


# レスポンスが空でないことを確認
assert response.strip() != ""
31 changes: 31 additions & 0 deletions tests/test_minimal.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import unittest
import subprocess

class MinimumTestCase(unittest.TestCase):
def test_zoltraak_only(self):
"""
zoltraakコマンドをmdファイルの引数なしで実行した場合、正しいエラーメッセージが表示されることを確認します。
実行例: `zoltraak` コマンドを引数なしで実行した場合、"エラー: 入力ファイルまたはテキストが指定されていません。"というエラーメッセージが表示されるべきです。
"""
result = subprocess.run(['zoltraak'], capture_output=True, text=True) # zoltraakコマンドを引数なしで実行し、その結果をresultに格納します。
print("STDOUT:", result.stdout) # 標準出力の内容を出力
print("STDERR:", result.stderr) # 標準エラーの内容を出力
self.assertIn("エラー: 入力ファイルまたはテキストが指定されていません。", result.stdout) # エラーメッセージは標準エラー出力に含まれているはずなので、result.stderrをチェックするように修正

# def test_zoltraak_with_compiler(self):
# """zoltraak "〜したい" -cコマンドのテスト"""
# result = subprocess.run(["zoltraak", "テストしたい", "-c", "コンパイラ"], capture_output=True, text=True)
# self.assertEqual(result.returncode, 0)
# self.assertIn("コンパイル結果", result.stdout)

# def test_zoltraak_without_compiler(self):
# """zoltraak "〜したい" -cコマンド(コンパイラなし)のテスト"""
# result = subprocess.run(["zoltraak", "テストしたい", "-c"], capture_output=True, text=True)
# self.assertNotEqual(result.returncode, 0)
# self.assertIn("エラー: 入力ファイルまたはテキストが指定されていません。", result.stderr)

# def test_zoltraak_with_custom_compiler(self):
# """zoltraak "〜したい" -cc自作コンパイラのテスト"""
# result = subprocess.run(["zoltraak", "テストしたい", "-cc", "自作コンパイラ"], capture_output=True, text=True)
# self.assertEqual(result.returncode, 0)
# self.assertIn("自作コンパイラの結果", result.stdout)
2 changes: 2 additions & 0 deletions tests/test_sample.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
def test_example():
assert True
1 change: 1 addition & 0 deletions zoltraak/converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ def handle_new_target_file(self):
self.target_file_path,
developer="anthropic",
model_name="claude-3-haiku-20240307",
# model_name="claude-3-opus-20240229",
compiler_path=self.compiler_path,
formatter_path=self.formatter_path,
language=self.language,
Expand Down
1 change: 1 addition & 0 deletions zoltraak/gencode.py
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ def try_execute_generated_code(self, code):
"""
code = generate_response(
model="claude-3-haiku-20240307",
# model="claude-3-opus-20240229",
prompt=prompt,
max_tokens=4000,
temperature=0.3
Expand Down
9 changes: 5 additions & 4 deletions zoltraak/grimoires/architect/architect_claude.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,21 @@ from zoltraak.utils.process_text import `normal`
```
全てのpromptに`要件定義ファイル`を読み込みモードで取得した内容を入れて、ファイル名と必要なプロンプトを記載
要件定義ファイルの内容を変数 readme_content に格納
- プログレスバーを利用
2.5 ルートディレクトリにREADME.mdファイルを書き込みモードで開く
- `要件定義ファイル`の内容を読み込みモードで開く
-- `要件定義ファイル`の内容をREADME.mdに書き込む
- tqdmのプログレスバーを利用
プログレスバーを初期化。合計処理ファイル数: len(files)、単位: "files"
filesリストの要素を順にループ。各要素は (ディレクトリ名, ファイル名, プロンプト) のタプル
モジュール記載忘れないように
全てのファイルは`generate_response(model, prompt, max_tokens, temperature)`をもちいてfor文で然るべき内容を記載
- モデル名を指定: "claude-3-haiku-20240307"
<!-- - モデル名を指定: "claude-3-opus-20240229" -->
- プロンプト: readme_content + 改行 + "上記の内容をもとにして" + prompt
- 最大トークン数を指定: 1000
- 温度パラメータを指定: 0.7
出力結果は normal(response, "python") にて加工して
フォーマットしたレスポンスをファイルに書き込む
2.5 ルートディレクトリにREADME.mdファイルを書き込みモードで開く
- `要件定義ファイル`の内容を読み込みモードで開く
-- `要件定義ファイル`の内容をREADME.mdに書き込む
3. ディレクトリを新しく開く
pythonのsubprocessを使って code `ルートディレクトリ`
pythonのsubprocessを使って code `ルートディレクトリ`/README.md
Expand Down
Loading

0 comments on commit dbf40e1

Please sign in to comment.