V1.0 2023/7/24

抜粋

はじめてのchatGPT開発キット
RaspberryPiでchatGPTの基礎から関連APIで応用まで習得、体験

応用編

スペクトラム・テクノロジー株式会社
https://spectrum-tech.co.jp
sales1@spectrum-tech.co.jp
all rights reserved 2023 spectrum technology co.

1

開発キット 目次

456• 開発キット 全体像• ハード概要• ソフト概要
1. Chatgpt連携①

ChatGPTと関連api

7

2. Langchain
①
②
③

ページ

Langchain概要
Langchain機能一覧
事例

8
9

A)

Autonomous (long-running) agents

10

B)
C)
D)
E)
F)
G)
H)

Agent simulations
Agent
Chatbot
Code Understanding
multi modal
Question answering
Evaluation

18
26
33
34
36
37
38
all rights reserved 2023 spectrum technology co.

2

開発キット 目次
3. LlamaIndex① LlamaIndex概要② LlamaIndex機能一覧
③ 事例

46

47

A) Agent

48

B)
C)
D)
E)
F)
G)
H)
I)
J)
K)

51
52
54
56
60
65
67
70
71
75

Customization
chat engine
data_connectors
Index
Query Engine
Analysis
output_parsing
Evaluation
Integrations
Callbacks

4. AI detector
5. Stable Diffusion

抜粋版のためページと一
致しません

78
81
all rights reserved 2023 spectrum technology co.

3

開発キット 全体像(Pi版）
ＯＳ
ハードウエア
物品追加

Raspberry Pi4B

Ｒasbian OS

+

API関系
電源アダプタ（オプション）

画像系

プログラム言語

HDMIケーブル（オプション）AI detector

Stable diffusion（オプション）

Triton(オプション)
all rights reserved 2023 spectrum technology co.

4ハード概要
本体

品名

項目

内容

Raspberry Pi 4model BＣＰＵ

1.5GHz 64bit クアッドコアCoretex-A72

ＧＰＵ

デュアルコア VideoCore VI® 500MHz

メモリ

4GB RAMＯＳ

Raspbian buｌｌseye(Debianベース）

インターフェース

2.4/5GHz WiFi(802.11 bgnac), Bluetooth 5.0, BLE,
1G ether, USB 2.0x2, USB 3.0x2, micro HDMIx2,
microSDカード, 40 GPIO pin

電源／消費電力

Micro USB Type C 3.0A

サイズ

85ｘ56ｘ18mm

付属品

内容

ケース

透明、白、黒、銀から選択できます。

microSD 32GB

Raspbian OS, 必要なモジュールをインストールして提供します。お客様が設定するものは必要最低限のパスワード設定、ＷｉＦｉ設定になります。

プログラム

Chatgpt,langchain,llamaindex, 関連pip インストール済,
Pythonサンプルプログラム多数

マニュアル

開発キット 基本編、応用編

ＵＳＢ電源ケーブル、ＨＤＭＩケーブルは付属しておりません。
all rights reserved 2023 spectrum technology co.
別途オプション品を購入ください

備考

備考

5

ソフト概要
提供するソフトウエアの概要です。
区分

ソフト名

バージョン

OS

Raspbian

Buｌｌseye 64bit

プログラム言語

python3.9.2

APIプログラム

openai0.27.8langchain

0.0.201

llamaindex

0.6.28

その他

備考

Jupyter notebook、
matplotlibなど多数のpipラ
イブラリ

all rights reserved 2023 spectrum technology co.

61. ChatGPT連携①．ChatGPTと関連api• langchain• Chatgptは、2021年9月までのデータを学習している。それ以降のデータを使用するためlangchainを使用。
Webのgoogle検索データを出力します。
• https://langchain.com/• 用途：chatbot, 質疑応答
• 主な特徴••••2021年10月以降のデータを出力
最大の入出力合計が4096トークンであるため、長い情報を持たせる
ExcelやCSV、PDF等を直接読み込ませる
会話の履歴管理• LlamaIndex(旧gpt index)• LlamaIndexは大規模言語モデル(LLM)と外部データ(あなた自身のデータ)を接続するためのインターフェースを提供• https://gpt-index.readthedocs.io/en/latest/• 用途：・質疑応答・要約・テキスト生成• 主な特徴• LLMに外部情報を受け渡すための構造化データを作成する• 作成した構造化データを踏まえて質問に回答するようLLMに要求する処理を実現する• Ai detector• コンテンツが生成AIからの出力によるものかの判定。クラウドベースのサービス。ほとんどが有料。
• 各クラウドサービスを紹介• Stable Diffusion• 画像生成AI, openaiのDALL·E2と競合、オープンソースのため無料で利用可能。但し、gpu搭載の高ス
ペックpcが必要（RTX3080でもメモリ不足で動かない）• 別途インストールサービスを提供
all rights reserved 2023 spectrum technology co.

72. Langchain①． Langchain概要• Langchainとは• LangChain は、言語モデルを利用してアプリケーションを開発するためのフレームワークです。 これにより、次のようなアプリケーションが可能になります。
• データ認識: chatgptのような言語モデルを他のデータソースに接続する• エージェントティック: 言語モデルがその環境と対話できるようにします。

• 特にchatgptの欠点を補完します。
1.
2.
3.

最新情報に対応していない。
長文を入力できない。
複雑な計算問題に回答できない。

• https://langchain.com/• 機能• Model I/O:複数のモデルと連携。Chatgpt, seapapi,hugging face
• Prompts:プロンプトのテンプレート化やプロンプトの構築と操作を容易にするいくつかのクラスと関数を提供します。
• Chains：複数のプロンプト入力を実行する機能• Agents:• アクション エージェント: 各タイムステップで、以前のすべてのアクションの出力を使用して次のアクションを決定します。
• エージェントの計画と実行: 一連のアクションを事前に決定し、計画を更新せずにすべてを実行します。

• Memory: ChainsやAgentsの内部における状態保持をする機能• Evaluation:出力結果を複数の評価指標で真偽を評価します。

all rights reserved 2023 spectrum technology co.

82. Langchain②． Langchain機能一覧

項番

項目
1
2
3 Autonomous (longrunning) agents
45
6
7 Agent simulations
8
9
10
11
12
13
14
15 Agent
16
17
18
19
20
21
22 chatbot
23 Code Understanding
24
25 multi modal
26 Question answering
27 evaluation
28
29
30
31
32
33
34

api名等
baby_agi
baby_agi_with_agent

内容
方式
BabyAGI を LLM チェーンとして実装するノートブック
ipynb
BabyAGI を LLM チェーンとして実装するノートブック,serpapi使用
ipynb
BabyAGI を LLM チェーンとして実装するノートブック,google cutom
ipynb
baby_agi_with_agent2
search使用の場合
AutoGPT
２者間での自動的に会話
ipynb
MetaPrompt
同じような質問を繰り返す
ipynb
marathon_times
2018年から2022年のボストンマラソンの優勝者とタイム問い合わせ
ipynb
自律型の会話モデル,プログラマとトレーダで株取引の開発システムを
ipynb
camel_role_playing
構築する手順Characters
人物設定をして、キャラクタと会話
ipynb
Gymnasium
agentの環境を設定できる
ipynb
multi_player_dnd
複数のagent設定し、会話、Harry Potter、Dungeon Masterとの会話
ipynb
複数のagent設定し、会話、特に会話前に考え、会話も終了させる。４名
ipynb
multiagent_authoritarianのタレントの会話
複数のagent, topic設定し会話、debate形式。bidして発言、["Donald
multiagent_bidding
ipynb
Trump", "Kanye West", "Elizabeth Warren"]petting_zoo
ジャンケン、カードゲームを行うagent
ipynb
two_player_dnd
二人のagentによる会話,Harry Potter、Dungeon Masterとの会話
ipynb
baby_agi
FAISS（facebook ai research)のモデルを使った会話
ipynb
baby_agi_with_agent
FAISS（facebook ai research)のモデルを使った会話
ipynb
2名によるロールプレイ,プログラマとトレーダで株取引の開発システムを
camel_role_playing
ipynb
構築する手順custom_agent_with_plugin_retrieval
pluginを伴ったagentの会話
ipynb
multi_modal_output_agent
マルチモーダル（textから画像生成）のagent、有料なので中断
ipynb
sales_agent_with_context
sales agentとの会話
ipynb
wikibase_agent
wikiとの会話
ipynb
voice_assistant
音声認識による入力と会話
ipynb
code-analysis-deeplake
Langchain + Activeloop‘s Deep Lake with GPTの分析
ipynb
twitter-the-algorithm-analysis-deeplake Langchain + Activeloop‘s Deep Lake with GPTを使ってtwitterを分析 ipynb
image_agent
テキストからstemship経由でdall-eを使って画像生成
ipynb
semantic-search-over-chatLangchain + Activeloop‘s Deep Lake with GPTを使って検索
ipynb
agent_benchmarking
Serpapiなどを使って予測の評価を実施
ipynb
data_augmented_question_answering
Serpapiなどを使って予測の評価を実施
ipynb
huggingface_datasets
huggingface_datasets使って予測の評価を実施
ipynb
llm_math
llm_math使って数字の期待値と予測を実施
ipynb
openapi_eval
openapi使って予測と評価を実施
ipynb
qa_benchmarking_pg
Paul Graham Essay使って評価を実施
ipynb
qa_generation
qa_generation_chain使って回答
ipynb
all rights reserved 2023 spectrum technology co.
question_answering
複数ある評価方法を比較
ipynb

備考
SFの今日の天気
SFの今日の天気
SFの今日の天気
SFの今日の天気

SFの今日の天気
SFの今日の天気

有料
デフォルトは、gpt-4
piではメモリ不足
エラー中不明有料

9

2. Langchain③事例A）．Autonomous (long-running) agents

コマンド入力$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd/home/pi/Documents/openai/langchain/docs/u
se_cases/$ jupyter notebook• トップページ https://python.langchain.com/docs/get_started/introduction• Github https://github.com/hwchase17/langchain• Autonomous (long-running) agents• 自律エージェントは、より長時間実行されるように設計されたエージェントです。 彼らに 1 つまたは複数の長期目標を与えると、彼らはその目標に向かって自主的に実行します。 アプリケー
Pipのインストール部
ションは、ツールの使用と長期記憶を組み合わせます。
分はskipして進んでく• baby_agi
ださい。インストール• BabyAGI を LLM チェーンとして実装するノートブック
済。
$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd /home/pi/Documents/openai/langchain/docs/use_cases/$ jupyter notebook
Autonomous_Agents>baby_agi.ipynb

今日のSanfranciscoの天気？

all rights reserved 2023 spectrum technology co.

10

コマンド入力$ export SERPAPI_API_KEY=‘ｘｘｘ'$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd/home/pi/Documents/openai/langchain/docs/u
se_cases/$ jupyter notebook

2. Langchain③事例

A)．Autonomous (long-running) agents• トップページ https://python.langchain.com/docs/get_started/introduction• Github https://github.com/hwchase17/langchain• Autonomous (long-running) agents• 自律エージェントは、より長時間実行されるように設計されたエージェントです。 彼らに 1 つまたは複数の長期目標を与えると、彼らはその目標に向かって自主的に実行します。 アプリケー
ションは、ツールの使用と長期記憶を組み合わせます。
• MetaPrompt• 同じような質問を繰り返す$ export SERPAPI_API_KEY=‘ｘｘｘ'$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd /home/pi/Documents/openai/langchain/docs/use_cases/$ jupyter notebook
Autonomous_Agents>meta_prompt.ipynb

all rights reserved 2023 spectrum technology co.

11

コマンド入力$ export STEAMSHIP_API_KEY=‘xxx’$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd/home/pi/Documents/openai/langchain/docs/u
se_cases/$ jupyter notebook

2. Langchain③事例

C)．Agent• トップページ https://python.langchain.com/docs/get_started/introduction• Github https://github.com/hwchase17/langchain• Agent• エージェントはさまざまなタスクに使用できます。 エージェントは、言語モデルの意思決定能力とツールを組み合わせて、ユーザーに代わってソリューションを実行および実装できるシステム
を作成します。
• multi_modal_output_agent• マルチモーダル（textから画像生成）のagent、有料なので中断。
$ export STEAMSHIP_API_KEY=‘xxx’$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd /home/pi/Documents/openai/langchain/docs/use_cases/$ jupyter notebook
Agent>multi_modal_output_agent.ipynb

Steamshipのapiを使用。月額＄１０かかる
ので中断

all rights reserved 2023 spectrum technology co.

12

3. LlamaIndex①． LlamaIndex概要• LlamaIndexとは• LlamaIndexは大規模言語モデル(LLM)と外部データ(あなた自身のデータ)を接続するためのインターフェースを提供• https://gpt-index.readthedocs.io/en/latest/• 用途：・質疑応答・要約・テキスト生成• 主な特徴• LLMに外部情報を受け渡すための構造化データを作成する• 作成した構造化データを踏まえて質問に回答するようLLMに要求する処理を実現する• 機能• agent : 自動化された推論および意思決定エンジンです。
• Customization:chatgptに自社データ取り込み• chat engine：チャット用のエンジン• data_connectors： LlamaHubを使って接続• Index：インデックスは、ユーザー クエリに関連するコンテキストを迅速に取得できるようにするデータ構造です。
• Query Engine：自社データへの質問を可能にするエンジン

all rights reserved 2023 spectrum technology co.

13

3. LlamaIndex②． LlamaIndex機能一覧

項番

項目
1 agent

api名等

内容

方式

openai_agent

gpt-3.5のopenaiモデルのagent,掛け算の例

ipynb

2

openai_agent_with_query_engine

3

openai_agent_retrieval

4 customization

SimpleIndexDemo-ChatGPT

5 chat engine

chat_engine_condense_question

6

chat_engine_repl

7 data_connectors

DeepLakeReader

8

WebPageDem

9 index

DocSummary

10

PandasIndexDemo

11

SQLIndexDemo

12
13 Query Engine

KnowledgeGraphDemo
json_query_engine

14

sub_question_query_engine

15

SQLRouterQueryEngine

16

citation_query_engine

17
18 Analysis
19
20 output_parsing
21
22
23 Evaluation
24 Integrations
25
26
27
28 callbacks
29
30

CustomRetrievers
PlaygroundDemo
TokenPredictor
GuardrailsDemo
LangchainOutputParserDemo
guidance_pydantic_program
RetryQuery
SimpleIndexDemo
QdrantIndexDemo
DeepLakeIndexDemo
ChromaIndexDemo
TokenCountingHandler
LlamaDebugHandler
AimCallback

query_engine toolを使って、uber, lyftの会社情報にも続いて回答。元は、
ipynb
決算情報のpdfからindex作成
掛け算などの関数を定義して、その関数を呼び出して、openaiが回答 ipynb
paul_grahamのドキュメントを読み込んで、LLM Predictor (gpt-3.5-turbo)
ipynb：default とChatGPTLLMPredictorとの差分比較
その後どうなったなどの前の質問をフォローする。paul_grahamのエッセ
ipynb
イに対する複数回答
davinci, gpt-3.5の比較
ipynb
Activeloopのエッセイに接続し質問。paul_grahamのエッセイに対する回
ipynb
答
http://paulgraham.com/worked.html のサイトに接続して質問
ipynb
wikiのwiki_titles = ["Toronto", "Seattle", "Chicago", "Boston",ipynb"Houston"]の都市データを読み込み、概要を表示["Toronto", “Tokyo", “Berlin"]の都市データを読み込み、概要を表示 ipynb[“Toronto”, “Tokyo”, “Berlin”]の都市データをsqlデータで読み込み、
ipynb
概要を表示
データをグラフ化して、可視化
ipynb
json形式のデータを読み込み、そのクエリー
ipynb
複数のデータに対する回答。複数からの回答を合成.paul_grahamのエッ
ipynb
セイに対する表示
都市データをsqlで読み込み設定し、wikiの情報も取り込み回答する
ipynb
引用データの大きさ変更することもできる.paul_grahamのエッセイに対す
ipynb
る表示
and, orを使ってdataを使用
ipynb
wikiのberlinのデータを読み込んでplaygroundによる会話
ipynb
indexの違いによる、tokens数算出
ipynb
Guardrails形式の出力例
ipynb
json形式の出力例
ipynb
json形式の出力例
ipynb
Retryqueryによる評価
ipynb
簡単なベクトル保存場所のデモ
ipynb
Qdrantのベクトル保存場所のデモ
ipynb
DeepLakeのベクトル保存場所のデモ
ipynb
ChromaDBのベクトル保存場所のデモ
ipynb
トークン数算出
ipynb
ipynb
all rightsレスポンスタイムなどのデバッグ機能
reserved 2023 spectrum technology co.
インプットとアウトプットのトレース機能
ipynb

備考

14

コマンド入力$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd/home/pi/Documents/openai/llama_index/doc
s/examples/$ jupyter notebook

3. LlamaIndex③事例A)． agent• トップページ
https://gpt-index.readthedocs.io/en/latest/• Github https://github.com/jerryjliu/llama_index• Agent• 「エージェント」は、自動化された推論および意思決定エンジンです。 ユーザー入力/
クエリを受け取り、正しい結果を返すためにそのクエリを実行するための内部決定を行うことができます。
Pipのインストール部• openai_agent
分はskipして進んでください。インストール• gpt-3.5のopenaiモデルのagent。
済。
$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd /home/pi/Documents/openai/llama_index/docs/examples/$ jupyter notebook
agent>openai_agent.ipynb

掛け算の例

all rights reserved 2023 spectrum technology co.

15

3. LlamaIndex③事例D)． data_connectors

コマンド入力$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd/home/pi/Documents/openai/llama_index/doc
s/examples/$ jupyter notebook• トップページ
https://gpt-index.readthedocs.io/en/latest/• Github https://github.com/jerryjliu/llama_index• data_connectors• LlamaHub は、任意の LlamaIndex アプリケーションに簡単にプラグアンドプレイできるデータ ローダーを含むオープンソース リポジトリです。。
• DeepLakeReader• Activeloopのエッセイに接続し質問。
$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd /home/pi/Documents/openai/llama_index/docs/examples/$ jupyter notebook
data_connectors>DeepLakeReader.ipynb

paul_grahamのエッセイに対する回答

all rights reserved 2023 spectrum technology co.

16

コマンド入力$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd/home/pi/Documents/openai/llama_index/doc
s/examples/$ jupyter notebook

3. LlamaIndex③事例

G)． Analysis• トップページ
https://gpt-index.readthedocs.io/en/latest/• Github https://github.com/jerryjliu/llama_index• Analysis• tokens数によるコスト分析など。
• PlaygroundDemo• wikiのberlinのデータを読み込んでplaygroundによる会話。
$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd /home/pi/Documents/openai/llama_index/docs/examples/$ jupyter notebook
Analysis>PlaygroundDemo.ipynb

all rights reserved 2023 spectrum technology co.

17

コマンド入力$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd/home/pi/Documents/openai/llama_index/doc
s/examples/$ jupyter notebook

3. LlamaIndex③事例K)． callbacks• トップページ
https://gpt-index.readthedocs.io/en/latest/• Github https://github.com/jerryjliu/llama_index• callbacks• ライブラリの内部動作のデバッグ、追跡、トレースに役立つコールバックを提供します。
• AimCallback• インプットとアウトプットのトレース機能。
$ export OPENAI_API_KEY=‘sk-xxxxx’$ cd /home/pi/Documents/openai/llama_index/docs/examples/$ jupyter notebook
callbacks>AimCallback.ipynb

all rights reserved 2023 spectrum technology co.

18

4. AI detector②． AI detector比較• AI detectorの例文

4.Openai事例⑪．Python to natural languageの出力This code removes a common prefix from a dataframe column
containing strings. It takes in the dataframe, the prefix to be
removed, and a boolean value indicating whether to keep asingle whitespace as a prefix. It then removes the prefix fromthe dataframe column and, if the boolean value is true, adds asingle whitespace as a prefix. Finally, it returns the modified
dataframe.

• 基礎編4.Openai事例⑪．Python to natural languageの出力（右の囲い）を判
定• 判定例② crossplag③ copyleaks

AI生成

all rights reserved 2023 spectrum technology co.

AI生成

19

5. Stable Diffusion①． Stable Diffusion概要• Stable Diffusionとは• テキストから自動で画像を生成するAIです。
• https://stablediffusionweb.com/• openaiのDALL·E2と競合、オープンソースのためapiをサーバにインストール
すれば無料で使用できます。但し、サーバは、高性能gpuを搭載したものが必要になります。
• インストールサービスなどを提供• 事例① tet2image• 「a professional photograph of an astronaut riding a horse」のテキストから画像生成• サーバスペック
Rtx3080, i9, 32GB
Ubuntu18.04
なお、web版はokだが通常のpythonは動作しない。メ
モリ不足：12GB（GPU)必要？

all rights reserved 2023 spectrum technology co.

20