2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita100万記事感謝祭!記事投稿キャンペーン開催のお知らせ

Cline を OpenAI APIで利用したら完璧なコードができる!!??

Last updated at Posted at 2025-01-13

ClineでOpenAI APIを利用した感想についてまとめました!

Clineを利用してGPTモデルを用いたコードを書いてみた際の感想をまとめます。本記事では、GPTをモデルとして活用した際の所感を中心に記述しています。(2025年1月13日時点の記事です。今後進化すると思います。)内容にはネガティブな部分も含まれますが、私の環境における結果である点にご注意ください。また、今後の進化に期待しています。

Clineについての基本的な説明も記載していますので、既にご存知の方は2. 利用した環境まで読み飛ばしていただいて構いません。

1. Clineについて

Clineは、AIを活用して開発者の生産性を向上させる次世代型の開発支援ツールです。主にVisual Studio Code(VSCode)などの統合開発環境(IDE)で利用でき、AIによる高度なコーディング支援を提供します。
注目を集めているため、フォーク版であるCool-ClineやRoo-Clineといった派生ツールも登場しており、情報がやや混乱している面もあります。

また、Terminal上でのコマンド実行も可能なため、npm run devなどのスクリプトを直接実行することもできるようです。

1.1. 主な特徴

  • 複数AIモデルに対応:
    • OpenAI(GPTシリーズ)、Anthropic(Claude)、Google Geminiなど複数のAIモデルを選択可能。プロジェクトの要件に応じて最適なモデルを利用できます。
  • 課金制度:
    • 各モデルのAPI仕様に基づく従量課金制。
  • 幅広い機能:
    • コード生成、エラー修正、リファクタリング、Git操作、自動タスク実行など、多岐にわたる開発支援機能を搭載。
  • カスタマイズ性:
    • Model Context Protocol(MCP)を活用し、自動化ツールやカスタムワークフローを柔軟に構築可能。
  • シンプルな使用感:
    • VSCodeにインストールするだけで利用開始可能。設定箇所が少なく、直感的な操作が可能です。

1.2. メリット

  • 柔軟な統合: 既存の開発環境にスムーズに組み込めるため、導入が容易。
  • 効率的な開発支援: 大規模プロジェクトでも長文の文脈を保持しつつ的確なサポートを提供。

2. 利用した環境

  • OS: Windows(WSL2)
  • IDE: VSCode
    • WSLへのリモート接続で利用
  • Cline: 標準版
    • モデル: OpenAI (gpt-4o)

記事執筆に際して、minorun365さん記事を参考にしました。特に設定の手順や使用感について、大いに助けられました。

3. 感想

結論として、「期待したほど実用的ではない」という印象を受けました。ただし、これはあくまで私の環境と設定に基づく感想です。

モデルの選択や使用状況に大きく依存するため、適切なモデルを選ぶことが重要だと感じました。

4. 利用した結果、わかったこと

4.1. 👎 gpt-4oモデルはコストが高い

以下の理由から、gpt-4oは不適切と感じました。

  1. コストが高すぎる
    • 2~4回のチャットで約$1.3を消費。これはGitHub Copilot(月額$10)と比較すると高コストです。
    • 利用時間は15~30分程度ですが、この間にトークン数制限にも頻繁に引っかかりました。
  2. トークン制限による処理中断
    • OpenAI APIの仕様により、処理途中で中断されることがありました。

4.2. 👎 簡単なコードでも誤りが発生

特にFastAPI(Python 3.10環境)を使用した際、以下のようなミスが目立ちました。

  • import文の誤り: 文法エラーが発生。
  • SQLModelの記述ミス: 不適切な型ヒントの指定。

importの誤り

非常に簡単な内容です。

  1. はじめのコード
    提供した正常なコードです。

    from app.models import (
        Item,
        Message,
        UpdatePassword,
        User,
        UserCreate,
        UserPublic,
        UserRegister,
        UsersPublic,
        UserUpdate,
        UserUpdateMe,
    )
    
  2. Clineが記述したコード
    Roleクラスをmodelsで作成したのでimportした際に記述を誤る。
    複数importするための "("がなくなっています。Roleは追加されていますが...
    なかなか間違いにくい内容だと思います。

    from app.models import Role
        Item,
        Message,
        UpdatePassword,
        User,
        UserCreate,
        UserPublic,
        UserRegister,
        UsersPublic,
        UserUpdate,
        UserUpdateMe,
    )
    
    

SQLModelの誤り例

以下の不適切なコードが生成されました。

  1. 出力された結果です。

    class UserBase(SQLModel):
        email: EmailStr = Field(unique=True, index=True, max_length=255)
        is_active: bool = True
        roles: List[Role] = Relationship(back_populates="users", link_model=user_roles) # 本来はこれと同じ定義になるはず。
        full_name: str | None = Field(default=None, max_length=255)
    
    
    class UserCreate(UserBase):
        password: str = Field(min_length=8, max_length=40)
        roles: List[uuid.UUID] = [] # NOTE:ここが誤り
    
    
  2. 正しくはこちら。
    Baseで正しく定義しているので間違えないような気がしますが、子クラスで誤っています。

    class UserBase(SQLModel):
        email: EmailStr = Field(unique=True, index=True, max_length=255)
        is_active: bool = True
        roles: list[Role] = Relationship(back_populates="users", link_model=user_roles)
        full_name: str | None = Field(default=None, max_length=255)
    
    
    class UserCreate(UserBase):
        password: str = Field(min_length=8, max_length=40)
        roles: list[Role] = [] # NOTE:ここが誤り
    
    

また、上記のコードもそうですが、実は元のコードをわざわざlistからListに書き換えてくれています。listのまま残っている箇所もあるので、少々不可解な挙動ではあります。
別箇所でも誤っていますが、python3.10の場合は、Listではなく listを利用します。元のコードはすべて listを利用しています。

4.3. 👍️利用準備は非常に楽

  1. 拡張機能のインストールとOpenAIのAPIのSecretKeyを準備するだけ。

ただ、それが利点とするならばGithub Copilotのほうが利用しやすいと感じました。Copilotも同じように設定は簡単ですからね。

5. 対策として

ここまでの経験を元にGPTを利用するならこれは必要だと思った対策です。

  1. gpt-4-miniモデルを利用: コストが抑えられ、実用性が高い。
  2. カスタムインストラクションの設定: プロジェクトの前提条件(例: Pythonバージョンなど)を明示的に指定する。
    1. これにより前提条件の指定ができますので、統一したコードを記述できると思います。(実際にはtypingの修正はできませんでしたが...)

5.1. 根本的な対策

根本的には、以下のような対策が必要だと思います。当面は私がGPTとClineの構成で利用することはないでしょう。

  1. GPTモデルを利用しない。
  2. Cursorを利用する
  3. GitHub Copilotを利用する
  4. GPTに直接コードを生成してもらう

現状聞いている限り、OpenRouterのclaude-3.5とかがいいんでしょうか?オール・インワンという意味では、Cursorを利用するのがいいような気がしますね。
「あなた使い方わかってないよ!」という意見があればぜひコメント下さい。もっと使いこなしたいです。

6. まとめ

GPT-4oの利用は現状ではコストパフォーマンスに課題があります。特にコード生成には他のツール(例: GitHub Copilot)の方が適していると感じました。なお、利用するモデルや設定次第で結果は大きく変わるため、引き続き検証を進めていく予定です。

また、生成AIの経験則についての話は、別記事(生成AIでコーディングをしてきた感想)にざっくりまとめていますので良かったら、読んでいただけると嬉しいです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?