https://github.com/snakajima/SlashGPT

 

利用手順

以下のコマンドで、SlashGPTプロジェクトのコピーを作る
git clone [email protected]:snakajima/SlashGPT.git

OpenAIの開発者用ページでアカウントを作り、クレジットカードを登録してから、開発者用のキーを取得する。

必要なパッケージをインストールします。 pip install -r requirements.txt

.env ファイルを作成し、次のように OpenAI キーを指定します。OPENAI_API_KEY=…

README.mdに従って、必要なpythonライブラリをインストールし、.env ファイルにキーを登録する

./SlashGPT.pyを走らせる。最初は dispatcher エージェントが起動されます。

/jupyter コマンドで、jupyterエージェントに切り替える。

/sample コマンドで、テスト用のCVSファイルを読み込む。

/sample2 コマンドで、データ解析のデモを走らせる。

/sample3 コマンドで、解析結果をグラフにする

 

エラーが出た箇所

以下のコマンドで、SlashGPTプロジェクトのコピーを作る

git clone [email protected]:snakajima/SlashGPT.git

 

[email protected]: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

というエラーが出力されるため、下記サイトの手順で解決する。

GitHubへの登録が必要になる。

 

 

作業の途中で

【演算子 ‘<‘ は、今後の使用のために予約されています。 】

というエラーが出た場合は

 

WindowsのコマンドプロンプトやPowerShellで、< というリダイレクション演算子を使用すると、そのようなエラーメッセージが表示されることがあります。このエラーメッセージは、特定のコマンドやシナリオで<が正しく認識されなかったことを示しています。

WindowsでSSH公開キーをクリップボードにコピーする場合、Git Bashを使用していると仮定すると、次のコマンドを試してください:

cat ~/.ssh/id_rsa.pub | clip

 

 

GitエラーPermission denied (publickey).の解決方法 

 

WEBPILOT_UID: 「webpilot」エージェントを使用するために必要です (一意の UUID であれば問題ありません)

.envファイルに適当に「WEBPILOT_UID=・・・・」を記入すればよい!!

 

readme

# スラッシュGPT

SlashGPTは、LLMエージェント(または自然言語UIを持つアプリ)のプロトタイプを素早く作るための、開発者のための遊び場です。

設計目標は以下の通りです:

1. 新しいLLMエージェントの作成が非常に簡単であること。新しいマニフェストファイル(Json)を追加するだけです。
2. エージェントの切り替えは、”/{エージェント名}” とタイプするだけです。
3. コードを書くことなく、ほとんどのLLMエージェントを実装することが可能です。
4. コードを書かずに ChatGPT プラグインをエージェントとして統合できます。
5. ユーザーのメッセージを適切なエージェントにルーティングするブローカーエージェント(またはディスパッチャー)が可能です。
6. コードインタープリタ(jupyterエージェントを参照)のように、生成されたPythonコードを実行することができます。

## 初期化

1. 必要なパッケージをインストールする:

`pip install -r requirements.txt` を実行する。

2. .envファイルを作成し、OpenAIのキーを以下のように指定する:

openai_api_key=…`。

3. 以下の機能を使用するには、他の変数を指定する必要があります(オプション)。

– PINECONE_API_KEY, PINECONE_ENVIRONMENT: エンベッディングベクターdbを使用するために必要です。
– GOOGLE_PALM_KEY: /palmコマンドでPaLM LLCに切り替えるために必要。
– WOLFRAM_API_KEY: “walfram “エージェントを使用するために必要。
– OPENWEATHER_API_KEY: “weather” エージェントを使うために必要。
– NOTEABLE_API_KEY: “noteable” エージェントを使用するために必要です。
– ALCHEMY_API_KEY: “web3” エージェントを使用するために必要です。
– WEBPILOT_UID: “webpilot” エージェントを使用するために必要です (ユニークな UUID であれば何でもかまいません)。
– REPLICATE_API_TOKEN: “llama2” モデルを使う場合に必要です。
– CODEBOX_API_KEY: IPythonの代わりにCodeBoxのLocalBoxを使うために “local “に設定します。

## 実行

1. ./SlashGPT.py` とタイプする。

2. You({agent_name}):” と表示されたら、エージェントにメッセージを入力するか、”/” で始まるスラッシュコマンドを入力します。

3. 3. “ディスパッチャー “エージェントが最初に起動し、適切なエージェントにクエリをディスパッチします。

4. システムコマンドと利用可能なエージェントのリストを見るには、 “/help” をタイプする。

## 出力

1. 各会話は、「output/{context}」フォルダの下にjsonファイルとして格納される、
ここで、コンテキストは、一般的なチャットの場合は “GTP”、特殊なチャットの場合はアプリIDである。

2. output “フォルダはgitによって無視されることに注意してください。

3. Code Interpreterエージェントは “output/notebooks “フォルダにJupyterノートブックを生成します。

## コードインタープリターエージェント

いくつかのエージェントは、ChatGPTコードインテプリタ(またはNoteableプラグイン)の振る舞いを模倣するように作られています。
の動作を模倣するように作られています。

– jupyter: GPT3.5
– jupyterp: PaLM2 (GOOGLE_PALM_KEYキーが必要です)
– juypter2: LlaMA (REPLICATE_API_TOKENが必要)

jupyter (GPT3.5)はCode Interpreterと同じように動作します。生成されたコードの出力に適切に応答することができます。

jupyterp(PaLM2)とjupyter2(LlaMA)は生成されたコードの出力に応答することができません(しばしば無限ループに入ります)。そのため、出力後に会話を停止し、ユーザが明示的に結果の解析を依頼する必要がある。

ランタイムにはデフォルトでIPythonを使いますが、CODEBOX_API_KEYキーを指定するとCodeBoxを使います。IPythonは画像をポップアップとして表示しますが、ノートブックには書き込まれません。CodeBoxは画像をノートブックに書き込むことができます。

サンプルクエリ

– 正弦曲線を描く
– 最初の50個の素数をリストする
– 共通移動平均をグラフ化する
– ヒストグラムを描く
– yfinanceを使用して、アップルとテスラの4年間の株価をグラフ化する

## マニフェスト・ファイル

manifests」フォルダに、以下のプロパティを持つ新しいマニフェストファイル{agent_name}.jsonを作成します:

– タイトル* (文字列, **必須**): *title* (string, **必須**): ユーザーが見るためのタイトル
– *source* (文字列、オプション): source*(文字列、オプション):プロンプトのソース(URL、Eメール、github ID、またはtwitter ID
– *promt* (文字列の配列、**必須**): エージェントを定義するシステムプロンプト (必須)
– *form* (string): ユーザのクエリを拡張するためのフォーマット文字列 (例: “Write python code to {question}”).
– *result_form* (string): 関数呼び出し結果を拡張するフォーマット文字列。
– *skip_function_result* (boolean): 関数呼び出し直後のチャット補完をスキップします。
– *notepad* (boolean): セッションの最初に新しいノートブックを作成する(jupyter2用)
– *bot* (文字列、オプション): エージェント名
– you* (文字列、オプション): ユーザー名。デフォルトはYou({エージェント名})。
– sample* (文字列、オプション): サンプル質問 (送信するには “/sample” と入力してください)
– intro* (文字列の配列、オプション): 導入文 (ランダムに選択されます)
– model*(文字列、オプション): LLMモデル(”gpt-4-613 “など、デフォルトは “gpt-3-turbo”)。
– temperature*(文字列、オプション): 温度(デフォルトは0.7)
– data*(文字列の配列、オプション): {random}はプロンプトにランダムで1つ入れる。
– embeddings*(オブジェクト、オプション):
– name* (string, optional): 埋め込みベクトルデータベースのインデックス名。
– *resource* (string, optional): リソースファイルの場所。resource}でプロンプトに貼り付けます。
– *functions* (string, optional): 関数定義の場所。
– *module* (string, optional): 関数呼び出しのためにロードされる pytoh スクリプトの場所です。
– actions* (object, optional): (object, optional): テンプレートベースの関数処理系 (詳細は後述)

そのファイル名がスラッシュ・コマンドになる。(「foo.json」のスラッシュ・コマンドは「/foo」)

## アクション

モジュール “プロパティを使ってPythonコードを書く代わりに、テンプレートベースの関数実装(モックアップを含む)を定義します。

3つの異なるメソッドをサポートしています。

### 1. フォーマットされた文字列。

バックエンドの準備が整う前にシステムのフロントエンドを開発するには、このメソッドを使用します。

– message* (フォーマット文字列、必須): 追加するチャットメッセージ。
– metafile* (フォーマット文字列、オプション): 連鎖アクションに読み込まれるメタファイル名

以下はその例です(home2)。

“`
“actions”: {
“fill_bath”: {“message”: “Success. 風呂タブを満たし始めました。” },
“set_temperature”: {“message”: “Success. 場所}の温度を{温度}に設定した。},
“start_sprinkler”: {メッセージ”: “成功。場所}のスプリンクラーを開始しました。},
“take_picture”: {メッセージ”: “成功。場所}の写真を撮りました。},
“play_music”: {メッセージ”: “成功。場所}で{音楽}の再生を開始しました。},
“control_light”: {メッセージ”: “成功。場所}の照明スイッチが{スイッチ}になりました。” }
}
“`

### 2. RESTコール

REST API (ChatGPT のプラグインシステムに相当) を呼び出すには、このメソッドを使います。

– *url* (文字列、必須): 関数の引数を参照する Python スタイルのフォーマット文字列。
– method* (文字列、オプション): HTTP-POSTを使用する必要がある場合は、”POST “を指定します。ボディには、関数パラメータのJSON表現が含まれます。

以下はその例です(通貨)。

“`
“actions”: {
“convert”: {
“url”: “https://today-currency-converter.oiconma.repl.co/currency-converter?from={from}&to={to}&amount={amount}”
}
}
“`

### 3. データURL

このメソッドにより、開発者はテキストデータ(通常はJSONですが、これに限定されません)を生成し、データURLに変換することができます。

– *template* (文字列、必須): テンプレートファイルの場所。
– mime_type*(文字列、必須): データのMIMEタイプ。
– *message* (string, 必須): message*(文字列、必須): Pythonスタイルのフォーマット文字列。

以下は “make_event “関数(cal)の例です。

“`
“actions”: {
“make_event”: {
“テンプレート”: “./resources/calendar.ics”、
“mime_type”: “text/calendar”、
“message”: “イベントが予定されました。招待リンクはこちらです: ‘{url}'”
}
}
“`

calendar.icsファイルの内容です。
“`
開始:vcalendar
バージョン:2.0
PRODID:-//My Calendar//NONSGML v1.0//EN
BEGIN:VEVENT
DTSTART:{DTSTART}
DTEND:{DTEND}
summary:{概要}
説明:{説明}
location:{location}
END:イベント
END:VCALENDAR
“`

make_event “関数の定義。
“`
{
“name”: “make_event”、
“description”: “iCalendar形式のカレンダーイベントを作成する”、
「パラメータ”: {
“type”: “object”: “オブジェクト”、
“properties”: {
“SUMMARY”: {
“type”: “string”: “文字列”、
“説明”: “イベントの短い一行説明”
},
“DESCRIPTION”: {
“type”: string”: “文字列”、
“description”: “カレンダーのより完全な説明”、
“maxLength”: 400
},
“DTSTART”: {
“type”: “string”: “文字列”、
“format”: “date-time”: “日付-時刻”、
“説明”: “19980119T020000Z “のように、イベントが開始する UTC での日時。
},
“DTEND”: {
“type”: “文字列”: string”: “文字列”、
“format”: “date-time”: “日付-時刻”、
“説明”: “19980119T030000Z “のように、イベントが終了する UTC での日時。
},
「LOCATION”: {
“type”: string”: “文字列”、
“説明”: “イベントのために意図された会場の住所。”
}
},
“required”: [“summary”、”dtstart”、”dtend”、”description”、”location”]。

“`

## 標準テストスケンス

これは標準的なテストスケンスである。

“`
# REST API のテスト
を入力します: /サンプル通貨
期待される出力 1 USD は 146.31 JPY に相当します。
入力 /root

# appkey ヘッダでREST APIをテストする(.envのWEBPILOT_UIDが必要)。
入力: /sample /サンプルwebpilot
期待される出力 タイトル タイトル: France riorts …概要: 第四夜 …
入力:/root /ルート

# GraphQLをテストする
あなた /sample spacex
期待される出力 SpaceXのCEOはイーロン・マスクである。
入力 /ルート

# テストデータURL
あなた /sample cal
期待される出力 7月4日午後8時(UTC)から30分間、ティム・クックとのミーティングを予定しています。ミーティングはティム・クックのオフィスで行われます。招待状をティム・クックに [email protected] で送りました。
入力 /ルート

# テストコードインタープリター
あなた: /jupyter
あなた /サンプルストック
期待される出力 <アップルとテスラの時価総額履歴
“`