目指すはクラウド職人

クラウド技術を学習するエンジニアのブログ

ChatGPT API を利用したシステムを作成する際に参考にできるもの

ChatGPTを利用したシステムを構築する際に参考になりそうなもの。それぞれのブログ主には感謝しかない。

ChatGPT (GPT-4) API と AWS Amplify で会話履歴と文脈を読んで回答する LINE ボット を作る

gpt-3.5-turboとgpt-4を実際に動作させて比較した記事がとても良かった。

技術スタック

  • Amplify (Wehookの受け口)
  • Lambda(処理)
  • DynamoDB
  • Amplify CLI(環境構築)
  • AWS Systems Manager Parameter Store(秘匿情報管理)
  • python

ローカルでのテストは、amplify mock コマンドを使用

非常に丁寧な説明で、ChatGPTに加えてamplifyでの開発も体験できる。 amplifyは、Amplify Studioでローコード開発(figmaからreactのコード生成)ができるため注目していた。

https://docs.amplify.aws/console/

ChatGPTとLineを連携は、Edge系のcloudflare workesで試したい。実行制限にひっかかるならLamadaをラップしているnetlifyのfunctionも検討できるが、この場合、DBはどうする?cloudflare workesは、dynamodbの代わりとしてKVを使えるが、netlifyはDB系のサービスは用意されてないのかな。

このようにAWSを好意的に受け止めきれない僕はすぐに代案を考えてしまう。

しかし、同じブログ主の下記の記事はこれこそAWSということでとてもいいのではなかろうか。

zenn.dev

ChatGPT風の画面を表示できるChatbot UIをFastAPIで作成した自作LangChainサーバに接続させる方法|mah_lab / 西見 公宏|note

技術スタック

  • Chatbot UI(nextjs)
  • LangChain
  • fastAPI(python)
  • Railway

Chatbot UIを使うことで、OpenAI以外のチャットボット実装も同じインタフェースで簡単に試せるらしい。 これからは、GooglePaLMAWSの「Amazon Bedrock」の「Titan Text」なども同時に試したくなるでしょう。

LangChainとFastAPIのストリーミングで一文字づつ入力されている感じで表示しているところがポイントなのだろうか。

fastAPIを使わずにtypescript版のLangChainでできないのだろうか?

pythonを触ったことがないでついつい代替案を考えてしまう。

しかし、下記の記事はこれこそpythonということでとてもいいのではなかろうか。

note.com

LlamaIndexの詳細は下記が詳しい。

ChatGPTで独自データを利用できるLlamaIndexはどんな仕組みで動いているのか?調べてみました | DevelopersIO

更に、LangChainやLlamaIndexとのインテグレーションがウリのベクトルDBのChromaについての記事が参考になる note.com

Streaming Real-Time Chat Messages into Scylla with Apache Pulsar

ChatGPTとは関係がないがチャットには関連があるものとしてメモしておく

scyllaはdynamodbを代替するOSS。dynamodbよりも高速

apache-pulsarは、kafkaと何が違うのだろうか。javaでの実装が好きじゃないのだが。

下記の記事によれば、KafkaとPulsarは出自が異なるようです。 qiita.com

Kafkaはメッセージングからストリーミング機能を取り入れたもの、Pulsarは、メッセージングとストリーミングの両方の機能のために設計されたもの

Kafka は高スループットを、Pulsarは低レイテンシーを指向しているとのこと。

有名なSplunkの内部では、Pulsarが利用されている。

apache-pulsar関連の記事を探していて出てきたApache Flinkというもの

連携したデータを随時集計することにしました。 データの連携にApache kafka, 集計にApache Flink を使用することで、大量に流れ込むデータを高速に分散処理することができ、 繁忙期であっても、常にほぼリアルタイムのデータが把握 https://www.aim.ac/pickUp6.html

ストリーミング系はどこかでまとめて学習しないとね。

AIに手足ができる!Zapier Natural Language Actions + LangChainがすごいので試してみた【LangChain・Zapier NLA・OpenAI】 | DevelopersIO

zapierの設定を自然言語でできるようにするもの。まだまだ開発中のような段階。しかし、未来を感じる。

よく似た日本製のサービス。なかなかすごい。 ascii.jp

UIをアプリにする場合

Lineやslackではなくて独自のチャットアプリをマルチプラットフォームかつwebのアプリ化で対応しようとした場合の選択肢

ionicframework.com

capacitorjs.jp