見出し画像

Claudeを使った投資分析システムの設計方針

こんにちは。
生成AI(Claude)を使って投資分析システムを作るぞ!と意気込んでみてもまずcode作成を行うpromptsを作成する必要があります。


1. 開発環境と前提条件

  • 有料版のClaude projectsを使用して開発を進めます。

  • システムのバージョンはClaude 3.5 Sonnetを前提とします。

こんなマニアックな記事を読みにくる読者の皆さまは、すでに生成AIに一定の知識をお持ちと思われるので、Claudeのprojectsに関する詳しい説明は割愛させていただきます。

2. Promptの設定

Promptは、Claudeのprojectsの"Set project instructions"に設定します。
この"Set project instructions"にどんな内容でどんな型式で入れるか?、によって出力される内容がかなり変わるので悩みどころです。

Set project instructionsの設定

3. Promptの型式比較

まずはClaudeでサポートされるPromptの型式について、Claudeに聞いてみましょう。

(質問)
ClaudeのSet project instructionsに設定できるテキストの型式について、リスト化して説明してください

(回答)
【基本テキスト形式】

$$
\begin{array}{|l|l|l|l|l|} \hline \textbf{テキスト型式} & \textbf{説明} & \textbf{処理の容易さ} & \textbf{主な用途} & \textbf{特徴} \\ \hline \text{プレーンテキスト} & \text{装飾や書式設定の} & \text{非常に容易} & \bullet \text{ 基本的な指示} & \bullet \text{ 最もシンプルな形式} \\ \text{(.txt)} & \text{ない純粋なテキスト} & & \bullet \text{ シンプルなルール設定} & \bullet \text{ どのシステムでも読み書き可能} \\ & & & \bullet \text{ 一般的なメモ} & \bullet \text{ 検索が容易} \\ & & & & \bullet \text{ サイズが小さい} \\ \hline \text{マークダウン} & \text{軽量マークアップ} & \text{容易} & \bullet \text{ 技術文書} & \bullet \text{ 読みやすい構文} \\ \text{(.md)} & \text{言語} & & \bullet \text{ README} & \bullet \text{ HTMLへの変換が容易} \\ & & & \bullet \text{ ドキュメント} & \bullet \text{ 画像や表の挿入が可能} \\ & & & \bullet \text{ ブログ記事} & \bullet \text{ コードブロックのサポート} \\ \hline \text{HTML} & \text{タグベースの} & \text{やや複雑} & \bullet \text{ Webページ} & \bullet \text{ 詳細な書式設定が可能} \\ & \text{マークアップ言語} & & \bullet \text{ メールテンプレート} & \bullet \text{ マルチメディア対応} \\ & & & \bullet \text{ 構造化文書} & \bullet \text{ インタラクティブ要素} \\ & & & & \bullet \text{ スタイル適用が可能} \\ \hline \end{array}
$$


【データ構造形式】

$$
\begin{array}{|l|l|l|l|l|} \hline \textbf{テキスト型式} & \textbf{説明} & \textbf{処理の容易さ} & \textbf{主な用途} & \textbf{特徴} \\ \hline \text{XML} & \text{拡張可能な} & \text{やや複雑} & \bullet \text{ 構造化データ} & \bullet \text{ 厳密なデータ構造} \\ & \text{マークアップ言語} & & \bullet \text{ システム間連携} & \bullet \text{ スキーマ検証可能} \\ & & & \bullet \text{ 設定ファイル} & \bullet \text{ 豊富なツールサポート} \\ & & & & \bullet \text{ 国際標準規格} \\ \hline \text{JSON} & \text{JavaScript Object} & \text{容易} & \bullet \text{ APIレスポンス} & \bullet \text{ 軽量で可読性が高い} \\ & \text{Notation} & & \bullet \text{ 設定ファイル} & \bullet \text{ 多くの言語でサポート} \\ & & & \bullet \text{ データ交換} & \bullet \text{ Webでの標準形式} \\ & & & & \bullet \text{ パース処理が容易} \\ \hline \text{YAML} & \text{YAMLエイントワース} & \text{容易} & \bullet \text{ 設定ファイル} & \bullet \text{ 人間が読み書きしやすい} \\ & \text{マークアップ言語} & & \bullet \text{ データシリアル化} & \bullet \text{ 階層構造が表現しやすい} \\ & & & \bullet \text{ ドキュメント} & \bullet \text{ コメント記述が可能} \\ & & & & \bullet \text{ JSONのスーパーセット} \\ \hline \end{array}
$$

【特殊形式】

$$
\begin{array}{|l|l|l|l|l|} \hline \textbf{テキスト型式} & \textbf{説明} & \textbf{処理の容易さ} & \textbf{主な用途} & \textbf{特徴} \\ \hline \text{CSV} & \text{カンマ区切り値} & \text{容易} & \bullet \text{ データセット} & \bullet \text{ シンプルな表構造} \\ & & & \bullet \text{ 表形式データ} & \bullet \text{ スプレッドシートとの互換性} \\ & & & \bullet \text{ エクスポートデータ} & \bullet \text{ テキストエディタで編集可能} \\ & & & & \bullet \text{ 大量データの処理に適する} \\ \hline \text{PDF} & \text{Portable Document} & \text{複雑} & \bullet \text{ 文書配布} & \bullet \text{ プラットフォーム非依存} \\ & \text{Format} & & \bullet \text{ 印刷用文書} & \bullet \text{ レイアウト保持} \\ & & & \bullet \text{ 電子書籍} & \bullet \text{ セキュリティ機能} \\ & & & & \bullet \text{ 電子署名対応} \\ \hline \end{array}
$$

プレーンテキスト(.txt)やマークダウン(.md)で記述するのが一般的な使い方かなと思いますが、AIに確認するといろいろな型式に対応していることがわかります。

個人的な感想としては、文章作成をClaudeに依頼する際はプレーンテキスト(.txt)かマークダウン(.md)でPromptを設定する方が、自然な日本語の文章が出力される印象です。他の型式だと、Promptによる指示が固く、出力される文章も機械的な雰囲気になりますね。

4.バージョンによる比較

また、Claudeは使用するシステムのバージョンによって出力内容が大きく変化するので、ChatGPTと比べるとマニアックな印象があります。
例えば、以下の指示をChatでClaudeに与えた場合の出力の違いを見てみましょう。
*同じ文章作成promptを設定し、同じ指示を与えています。
 また、回答styleはnormalです。

<chatでのClaudeへの指示>
以下の内容を参考に、500文字程度の記事を作成してください。
ChatGPTとの主な機能的な違いを5つご説明します
・Claude 3.5 Sonnetは最大100,000トークン(約75,000語)の長文を処理できます。これはChatGPTの32,000トークンと比べてかなり長い文章を一度に扱えることを意味します。たとえば、長い論文や報告書、小説全体などの分析が可能です。
・Claudeはより高度な画像理解能力を持っており、画像内の細かいテキストの読み取りや、複雑な図表・グラフの分析が可能です。また、画像内の物体や状況をより正確に説明することができ、医療画像や技術図面なども理解できます。
・Claudeは数学的・科学的な問題において、より体系的な思考プロセスを示します。複雑な計算や推論を行う際に、段階的な説明を提供し、なぜその結論に至ったのかを明確に示すことができます。
・Claudeは倫理的な判断においてより慎重なアプローチを取ります。特に機密情報や個人情報の扱い、セキュリティに関連する質問に対して、より明確な境界線を設定し、適切なガイドラインを提供します。
・Claudeはより自然な会話スタイルを持ち、人間との対話においてより柔軟に対応できます。質問の文脈をより深く理解し、必要に応じて確認や明確化を求めることで、より正確で有用な回答を提供することができます。

<Claude 3.5 Sonnetでの出力>
「最新AI対決:Claude 3.5 SonnetとChatGPTの機能比較」
 人工知能の進化は日々加速を続けており、その最前線で注目を集めているのが、AnthropicのClaude 3.5 SonnetとOpenAIのChatGPTです。両者の機能的な違いを理解することは、業務やプロジェクトに最適なAIを選択する上で重要な指針となります。
 Claude 3.5 Sonnetの最も顕著な特徴は、その卓越したテキスト処理能力です。最大100,000トークンという処理容量は、ChatGPTの約3倍に相当し、長文の学術論文や詳細な技術文書の分析を一度に行うことができます。
 画像理解の面では、Claude 3.5 Sonnetは特筆すべき進化を遂げています。医療画像や技術図面に含まれる微細な情報まで正確に読み取り、複雑な図表やグラフの詳細な分析が可能です。この能力は、専門的な視覚情報を扱う現場での活用可能性を大きく広げています。
 また、数理的思考においても、Claude 3.5 Sonnetは体系的なアプローチを示します。複雑な問題に直面した際、段階的な思考プロセスを明示しながら解決策を導き出す手法は、教育現場や研究開発での活用に大きな価値をもたらします。
 さらに、Claude 3.5 Sonnetは倫理的判断と自然な対話能力において、より洗練されたアプローチを実現しています。機密情報の取り扱いに関する明確な境界設定や、文脈を考慮した柔軟な対話は、ビジネス環境での実践的な活用を支える重要な特徴となっています。
 これらの特徴を総合的に見ると、Claude 3.5 Sonnetは、より高度な知的作業や専門的なタスクにおいて、優れた支援ツールとなる可能性を秘めていると言えるでしょう。

<Claude 3 Opusでの出力>
はじめに:AI言語モデルの進化と可能性
 近年、AI言語モデルの発展は目覚ましく、人間とのコミュニケーションにおいてより高度な能力を示すようになってきました。特にChatGPTの登場以降、AIとの対話が身近なものになりつつあります。そんな中、新たなAI言語モデル「Claude 3.5 Sonnet」が注目を集めています。
Claudeの特長:ChatGPTとの比較
1.長文処理能力の向上 Claudeは最大10万トークンの長文を一度に処理できます。これにより、論文や報告書、小説全体の分析が可能になり、より深い文脈理解が期待できます。
2.高度な画像理解能力 Claudeは画像内の細かいテキストや複雑な図表・グラフの分析が可能です。医療画像や技術図面なども理解できるため、専門分野での活用が期待されます。
3.体系的な思考プロセスの提示 数学的・科学的な問題において、Claudeは段階的な説明を提供し、結論に至るまでの思考プロセスを明確に示します。これにより、AIの判断の透明性が高まります。
4.倫理的判断におけるアプローチ Claudeは機密情報や個人情報の扱い、セキュリティに関連する質問に対して慎重なアプローチを取ります。適切なガイドラインを提供することで、AIの倫理的な活用を促進します。
5.自然な会話スタイル Claudeは質問の文脈をより深く理解し、必要に応じて確認や明確化を求めることで、より正確で有用な回答を提供します。人間との自然なコミュニケーションを実現します。
●AIとの対話の未来に向けて
 Claudeに代表される新世代のAI言語モデルは、人間とAIのコミュニケーションにおける可能性を大きく広げるものです。
 より高度な能力と倫理的な配慮を兼ね備えたAIとの対話は、私たちの知的活動を大きく支援することでしょう。同時に、AIの判断の透明性を確保し、適切な活用を進めていくことが重要です。
 Claudeの登場は、AIとの対話の未来に向けた重要な一歩となるでしょう。

同じClaudeでもバージョンの違いで、出力内容がかなり変化することがわかります。バージョンによる処理能力の違いがあり、長文の記事作成といった作業はOpusが適しており、Code作成といった出力は3.5 Sonnetが適している印象です。

同じ内容のCodeを実行した場合でも、OpusとSonnetではArtifactの内容が異なります。数値分析と結果の表示というタスクではSonnetの出力内容の方がグラフ表示の内容も分析の説明も充実しています。

個人的にはClaudeは特化型AIサービスといった雰囲気で、万能型のchatgptのように一般化はしなさそうな気配がします。
ただ、長文処理能力に長けていてバックエンドでのcode実行のような作業はClaudeでしか稼働できないでしょう。

5. Code作成に適したPromptの型式

まだ、promptを作成するところまで進んでもいませんが、続けてCode作成する際に、"Set project instructions"に適した型式は何か?、とClaudeに質問してみましょう。
【形式比較表】

$$
\begin{array}{|l|l|l|l|} \hline \textbf{テキスト型式} & \textbf{メリット} & \textbf{デメリット} & \textbf{ポートフォリオ分析での有用性} \\ \hline \text{マークダウン} & \bullet \text{ コードブロックとドキュメントの統合が可能} & \bullet \text{ 実行環境との直接的な連携ができない} & \text{◎ 最適} \\ \text{(.md)} & \bullet \text{ 構造化された説明が書きやすい} & \bullet \text{ インタラクティブな要素が限定的} & \text{(コードとドキュメントの統合)} \\ & \bullet \text{ バージョン管理が容易} & \bullet \text{ 複雑なフォーマットには不向き} & \\ & \bullet \text{ コードのシンタックスハイライトが可能} & \bullet \text{ 表現力に制限がある} & \\ & \bullet \text{ GitHubなどでの表示が優れている} & & \\ \hline \text{XML} & \bullet \text{ 厳密なコード構造の定義が可能} & \bullet \text{ 記述が冗長になりがち} & \text{○ 適している} \\ & \bullet \text{ 要素間の関係を明確に表現} & \bullet \text{ 可読性が低くなる場合がある} & \text{(構造化されたコード管理)} \\ & \bullet \text{ 自動検証が可能} & \bullet \text{ 学習曲線が急} & \\ & \bullet \text{ 多言語対応が容易} & \bullet \text{ エディタのサポートが必要} & \\ & \bullet \text{ スキーマによる型チェックが可能} & & \\ \hline \text{JSON} & \bullet \text{ コードの設定や変数定義が簡潔} & \bullet \text{ ドキュメント機能が限定的} & \text{○ 適している} \\ & \bullet \text{ プログラムでの処理が容易} & \bullet \text{ 複雑な階層構造は見づらい} & \text{(設定ファイル管理)} \\ & \bullet \text{ データ構造が明確} & \bullet \text{ コメントが書けない} & \\ & \bullet \text{ 軽量で扱いやすい} & \bullet \text{ スキーマ定義が別途必要} & \\ & \bullet \text{ 多くの言語でサポート} & & \\ \hline \end{array}
$$

推奨する組み合わせ方:
1.プロジェクト全体の構造と説明:
●マークダウンを使用
●コードの説明とサンプルを含む
●実装手順やガイドラインを記載

2.コードの構造定義:
●XMLを使用
●関数や類の構造を定義
●コードの依存関係を明確化

3.設定とパラメータ:
●JSONを使用
●分析パラメータの定義
●環境設定の管理

この組み合わせにより:
●コードの構造が明確になる
●ドキュメントが充実する
●メンテナンス性が向上する
●再利用性が高まる

Claudeはマークダウン(md)、XML、JSONを推奨すると回答しました。さらに、プログラミング初心者に扱いやすい言語はどれか、とClaudeに質問し得られた回答は以下の通りです。

プログラミング初心者の観点から、XMLとJSONを比較して説明します。
**JSONの方が初心者に扱いやすい理由:**
1. シンプルな構文
2. 主な利点:
- 直感的な構造(キーと値の関係が明確)
- 少ない記号で記述可能
- データの入れ子構造が見やすい
- プログラミング言語との親和性が高い
- エラーの発見が比較的容易

**XMLの特徴と初心者にとっての課題:**
1. より複雑な構文
2. 初心者にとっての課題:
- 開始タグと終了タグの対応が必要
- 構文がより冗長
- エラーが発生しやすい
- 属性とエレメントの使い分けが必要
- スキーマ定義の理解が必要

**結論:JSONがおすすめ**
初心者の方には、以下の理由でJSONをおすすめします:
1. 学習の容易さ:
- より少ないルールで記述可能
- 直感的な構造
- エラーが少ない
2. 実用性:
- 多くのプログラミング言語でサポート
- WebAPIで広く使用
- データの読み書きが簡単
3. 発展性:
- より複雑な構造への段階的な移行が可能
- プログラミングスキルの向上に合わせて活用範囲を広げやすい

プロジェクト開始時は、まずJSONで基本的な構造を作り、必要に応じて徐々に複雑な機能を追加していくアプローチをお勧めします。

まとめ

以上の検討結果から、ワタクシのようなド素人はJSONでPromptを作成することにしました。
ですが、ただpromptを作成するだけでも検討作業が長い・・

とりあえず、今後、このアプローチでPromptを作成し、投資分析システムの設計を進めていきたいと思います。
皆さまの知見もぜひコメントでお聞かせください。

#Claude #投資分析 #プロンプト設計 #JSON #プログラミング初心者

いいなと思ったら応援しよう!

遊々楽々
この記事が皆様のお役に立てたなら、嬉しく思います。いただいたチップは、より良い記事作成のため、検証作業のデータ収集などに活用させていただきます。温かいご支援をいただける方は、ぜひチップをお願いいたします。