Gemini CLIのインストールでインストールしましたGemini CLIに関数を追加予定のファイルを読み込んでみます。
下記のファイルを用意してみます。
~/calc.py
※calcはcalculation(計算)の略
def add(a, b): return a + b
このファイルは足し算の関数だけが書かれています。
$ cd $ gemini
でGemini CLIを起動します。
プロンプトで
calc.py
を実行してみます。
ReadFile calc.py
が出力された後、
This file currently only contains an add function. Do you want to add subtract, multiply, and divide functions as well?
という返答がありました。
これは、このファイルにはadd(足し算)のみだけれども、引き算(subtract)、掛け算(multiply)と割り算(divide)は必要ですか?という内容になります。
お願いします
と返答してみた後、Geminiを終了して、calc.pyを確認してみましたところ、
~/calc.py
def add(a, b): return a + b def subtract(a, b): return a - b def multiply(a, b): return a * b def divide(a, b): return a / b
に変更されていました。
再びGemini CLIを起動して、calc.pyを読み込んでみます。
プロンプトに
docstringをお願いします
を入力して実行しましたところ、
※docstring:ドキュメンテーション文字列 - Wikipedia
~/calc.py
def add(a: float, b: float) -> float: """2つの数値を加算します。 Args: a: 最初の数値。 b: 2番目の数値。 Returns: 2つの数値の和。 """ return a + b def subtract(a: float, b: float) -> float: """2つの数値を減算します。 Args: a: 最初の数値。 b: 2番目の数値。 Returns: 2つの数値の差。 """ return a - b def multiply(a: float, b: float) -> float: """2つの数値を乗算します。 Args: a: 最初の数値。 b: 2番目の数値。 Returns: 2つの数値の積。 """ return a * b def divide(a: float, b: float) -> float: """2つの数値を徐算します。 Args: a: 被除数 (分子)。 b: 除数 (分母)。 Returns: 2つの数値の商。 """ return a / b
のようにファイルが変更されていました。
プロンプトに
テストコードを作成してください
と入力して実行しましたところ、
はい、承知いたしました。calc.pyのテストコードを作成します。test_calc.pyというファイル名で、unittestを使用したテストを作成します。
という返答の後、test_calc.pyが生成されていました。
Gemini CLIを終了して、
$ less test_calc.py
でコードを確認してみます。
~/test_calc.py
import unittest from calc import add, subtract, multiply, divide class TestCalc(unittest.TestCase): def test_add(self): self.assertEqual(add(1, 2), 3) self.assertEqual(add(-1, 1), 0) self.assertEqual(add(-1, -1), -2) self.assertEqual(add(1.5, 2.5), 4.0) def test_subtract(self): self.assertEqual(subtract(10, 5), 5) self.assertEqual(subtract(-1, 1), -2) self.assertEqual(subtract(-1, -1), 0) self.assertEqual(subtract(5.5, 2.5), 3.0) def test_multiply(self): self.assertEqual(multiply(3, 4), 12) self.assertEqual(multiply(-1, 3), -3) self.assertEqual(multiply(-1, -1), 1) self.assertEqual(multiply(1.5, 2), 3.0) def test_divide(self): self.assertEqual(divide(10, 2), 5) self.assertEqual(divide(-6, 3), -2) self.assertEqual(divide(-6, -3), 2) self.assertEqual(divide(5, 2), 2.5) with self.assertRaises(ValueError): divide(10, 0) if __name__ == '__main__': unittest.main()
$ python3 test_calc.py
を実行してみましたところ、
.... ---------------------------------------------------------------------- Ran 4 tests in 0.000s OK
が出力されました。