3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[生成AI] Claude 3.7 Sonnet - tninkingを使ってみて

Posted at

1.状況

Agent作成にチャレンジしていますが、Claude 3.7 Sonnetで、試してみました。

最初、2/27頃に、AnthropicのChatで設計したものを、WindSurfで続きを実装していたのですが、どうも途中でWindSurfのAIのレスポンスの解析がおかしくなって、そのうち、「Not enough Premium Flow Action credits. Purchase more or switch to Cascade Base model.」となったので、ちょっと断念。数日前なので、WindSurfも改善されているかもしれません。

2.Cusor + Claude 3.7 Sonnet-tninking

2.1 試した条件

最初、プロジェクトルールなしで試したのですが、途中でおバカになったので、下記の条件で試してみました:sweat_smile:

・CuosorのYoloモード
・Claude 3.7 Sonnet-tninking  
・cursorのプロジェクトルールを設定
・cursorにドキュメントを作成させ、適宜参照させる
プロジェクトルール(.cursor/rules/project_rule.mdc)
(a)開発の進め方(★重要		
	1) ユーザの要件に対して要件分析を行う	
	 - 要件分析の過程で不足している条件がある場合ユーザにヒアリングを行う	
	 - 次工程の外部設計が実施可能となるだけの情報が分析整理できているかを確認する	
	 - 要求分析の結果をドキュメントとして出力する	
		
	2) 要件分析の結果に従い外部設計を行う	
	 - 開発すべきシステムが持つ機能を分析し整理する	
	 - 開発すべきシステムの境界面と外部との入出力を明確にする	
	 - 開発すべきシステムの構成モジュールを明確にする	
	 - 構成モジュールはシステムサブシステムプロセス等の観点やfile, class, functionなどの観点で階層的内包的に検討すべきである	
	 - システムが扱うべきデータを明確にする	
	 - データの内容や属性及びどのようなタイミングでデータのCRUDが発生するかを明確にする	
     - 外部設計の結果をドキュメントに出力する		
		
	3) 要件分析と外部設計の結果に基づき実装計画を立てる	
	 - 実際に必要な内容を整理し優先順を検討し計画を立てる	
	 - 適切に実装されているかを確認するテスト方法テスト内容も計画に含める	
	 - テストは可能な限り自動実行できることが望ましい	
		
	4) 要件分析外部設計実装計画に基づきユーザの要件を実現するシステムを作成する	
	5) 設計デバッグ中の方針	
	 - デバッグするときは考えられる原因を複数想定しロジカルに原因を分析しテストコードで確認した上で対策を実施する	
     - 必要なテスト実行コードを作成しテスト結果を集計できるようにする		
	 - システム作成中に不具合等が発生したときは不具合の現象調査結果対策内容等を整理したドキュメントを作成する	
	 - システム作成中に試行錯誤した内容は解決しようとした課題試行内容試行結果最終的な結論などを整理したドキュメントを作成する	
	 - 作成中にドキュメントは適宜最新状況に更新する	
		
(b)ユーザの要件		
    1)開発すべきシステムの概要		
	 - ユーザの要件をヒアリングしそれを実現するシステムの要求分析結果と外部設計結果を出力するアプリケーションを開発する	
	 - langchain v0.3,JavaScriptでReAct技術を使用したエージェントを活用する。 	
		
	2)基本機能	
	 - OpenAI, GeminiClaudeDeepSeekの複数のモデルをユーザが切り替えて使用できる	
	 - 使用できるモデルはgpt-4-turbogpt-4ogpt-4o-minigemini-2.0-flashgemini-1.5-flashgemini-1.5-proclaude-3-5-sonnet-20241022claude-3-5-haiku-20241022claude-3-opus-20240229とする	
	 - ユーザの入力に対してReActエージェントによりAIモデルを呼出し分析を行う	
	 - 分析に必要な情報が不足しているときはユーザ対してヒアリングを行う	
	 - 分析結果をユーザに提示しユーザからのフィードバックを行う	
     - ユーザとの対話の結果要求分析が完了したらReActエージェントにより外部設計を行う		
	 - 外部設計では下記を明確にする必要がある	
	   -- 開発すべきシステムが持つ機能を分析し整理する	
	   -- 開発すべきシステムの境界面と外部との入出力を明確にする	
	   -- 開発すべきシステムの構成モジュールを明確にする	
	   -- 構成モジュールはシステムサブシステムプロセス等の観点やfile, class, functionなどの観点で階層的内包的に検討すべきである	
	   -- システムが扱うべきデータを明確にする	
	   -- データの内容や属性及びどのようなタイミングでデータのCRUDが発生するかを明確にする	
	   -- 外部設計の結果は必要に応じてシステム構成図クラス図シーケンス図などをMARKDOWN記法で表現する	
     - 外部設計字に情報が不足している場合はユーザに対してヒアリングを行う		
	 - 要求分析の結果外部設計の結果ともファイルの保存する	
		
	3)保守機能	
	 - システムのログをファイルに記述するログレベルはINFO,WARN,ERRのレベル分けをする	
	 - システム内でエラーが発生したときに発生したエラーやスタックとレースが必ずログに残るようにする	
	 - AIとのエージェントレベルのやり取りをチャットログファイルに記録する	
	 - チャットログにはllm/start, llm/end, chain/start, chain/end等の情報も含める	
	 - アプリケーションログ通信ログチャットログとも同一日付の記録は同一ファイルとする	
		
	4)その他	
	 - langChain v0.2とv0.3では大きな非互換性があります参考にするソースコードがv0.3であることを常に注意すること	
	 - Langchainのモジュールを新たにインポートするときはWebサイトの公式情報や関連情報を検索し最新状況を確認すること	
	 - フォルダ構成は"SevenStudy/doc"が設計ドキュメント等"SevenStudy/src"がプログラムコード等"SevenStudy/test"がテストコード等の格納先です

2.2. 成果

(a)デバッグの能力の向上

これまで、Windurf/cursorで、Claude 3.5 Sonnetを使っていましたが、デバッグ時の進め方が、個人的には今一だと思っていました。どう思っていたかというと、「近い事象の原因の可能性が高い数パターンを試している感じ」がして、「ロジカルに考えてほしい」という印象でした。

Claude 3.7 Sonnet-tninkingだと、人間相手にしているのに近いくらい、考えてくれている印象です。

具体的には、langchainのバージョン間の非互換問題にはずっと苦労していたのですが、Claude 3.7 Sonnet-tninkingだとAIのみで解決でき、人間でも解決が簡単にはいかないのではないかというバグも解決してくれました。下記は、プロジェクトルールなし版のバグレポートです。

(b)進め方のノウハウ

下記のようにすると、だいぶ快調になりました。

・AIエディタのプロジェクト単位のプロンプトを活用する(Cursorのプロジェクトルール等)。ただ、それでも忘れているような時があるので、明示的に指示するときもあり。

・要件分析、設計、実装計画などをAIに検討させ、そのアウトプットのドキュメントを生成させる。そして、適宜、参照や最新状況への更新の指示する。チャットだけで会話していると、いつの間にか忘れるので、AIと人間が共有できるドキュメントは必要だと思います。

・デバッグの記録やノウハウなども、AIに整理させる。どちらかというと、人間側のスキルアップのために必要。

下記は、AIに作成させたドキュメントの例です。
要件定義

外部設計

実装計画

3.リポジトリ

2025.03.03 山崎作成

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?