Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions .env

This file was deleted.

6 changes: 6 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
OPENAI_API_KEY=your-openai-api-key
OPENAI_MODEL=gpt-4o-mini
ANTHROPIC_API_KEY=your-anthropic-api-key
ANTHROPIC_MODEL=claude-3.5-haiku
GOOGLE_API_KEY=your-google-api-key
GEMINI_MODEL=gemini-2.5-flash
38 changes: 38 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: CI

on:
push:
branches:
- main
- master
pull_request:

jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"

- name: Install dependencies
run: pip install -r requirements-dev.txt

- name: Lint
run: ruff check .

- name: Type check
run: mypy

- name: Validate syntax
run: python -m py_compile mogisystem.py tests/test_mogisystem.py

- name: Run tests
run: python -m unittest discover -s tests -v
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.env
.venv/
__pycache__/
.pytest_cache/
93 changes: 93 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# MOGI System

複数のLLMに順番に議論させ、最後に結論を生成するシンプルなCLIです。

## セットアップ

```bash
python -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
cp .env.example .env
```

前提 Python は `3.11.x` です。

`.env` に使いたいプロバイダのAPIキーを設定してください。未設定のプロバイダはスキップされ、設定済みのプロバイダだけで実行されます。

## 使い方

対話入力:

```bash
python mogisystem.py
```

引数指定:

```bash
python mogisystem.py "生成AIの教育利用" --rounds 2 --sleep-seconds 0
```

quiet 実行:

```bash
python mogisystem.py "生成AIの教育利用" --quiet
```

`--quiet` は text 出力時に ASCII アートとラウンド進捗を抑止し、最終結果だけを表示します。

provider 指定:

```bash
python mogisystem.py "生成AIの教育利用" --providers gpt,claude --rounds 2 --timeout-seconds 30 --retry-count 1
```

`--providers` を付けた場合は、指定した provider が利用できないとエラーで終了します。
`--timeout-seconds` で各 provider 呼び出しの上限時間を指定できます。`0` 以下なら無効化します。
`--retry-count` で timeout や一時的な API エラー時の再試行回数を指定できます。

JSON 出力:

```bash
python mogisystem.py "生成AIの教育利用" --providers gpt,claude --rounds 2 --sleep-seconds 0 --output json
```

Markdown 出力:

```bash
python mogisystem.py "生成AIの教育利用" --providers gpt,claude --rounds 2 --output markdown
```

`--output json` と `--output markdown` を使う場合は `topic` を引数で渡してください。

ファイル保存:

```bash
python mogisystem.py "生成AIの教育利用" --output markdown --output-file outputs/result.md
```

`--output-file` を使うと、標準出力と同じ内容を指定ファイルにも保存します。親ディレクトリがなければ自動で作成します。

ヘルプ:

```bash
python mogisystem.py --help
```

## テスト

```bash
python -m unittest discover -s tests -v
```

## 静的解析

```bash
ruff check .
mypy
```

## セキュリティ

このリポジトリでは `.env` を Git 管理しない前提です。既に `.env` が追跡対象になっている場合は、履歴や共有先にAPIキーが残っていないか確認し、必要ならキーをローテーションしてください。
Loading
Loading