yanachuwan9sm / til

Today's I Learned for me.
0 stars 0 forks source link

ChatGPT/LangChainによるチャットシステム構築[実践]入門 をやる #8

Closed yanachuwan9sm closed 8 months ago

yanachuwan9sm commented 9 months ago

とりあえず全章やって雰囲気がわかったら、replicate 使った画像生成アプリでも作ってみる。 https://replicate.com/docs 参考にするやつ : https://github.com/Pondorasti/emojis

yanachuwan9sm commented 8 months ago

2章 : プロンプトエンジニアリング

https://www.promptingguide.ai/jp

プロンプト設計戦略  |  Google AI for Developers

Prompt engineering - OpenAI API

トークン数

https://github.com/openai/tiktoken

https://platform.openai.com/tokenizer

LLMアプリケーションにおける脆弱性

大きく3つ。

Prompt Injection

チャットボットやバーチャル・アシスタントなどの会話型AIシステムを操作または悪用するために使用されるテクニック。隠された、または予期しない指示を含む入力を作成することによって行われます。 このテクニックは、意図しない方法でAIの動作を変更したり、アクセスできないはずの情報を引き出したりするために使用できます。

GTPs における一文でできる Prompt Injection (Prompt Leaking) 対策|さいぴ

Prompt経由のSQL Injection攻撃について | 調査研究/ブログ | 三井物産セキュアディレクション株式会社 👉 P2SQL Injection(LLM経由で不正なDBアクセス)って言うのもあるのか〜。

↓ こんなゲームもあるらしい。(Level3 がクリアできなかった) https://prptinj.net/

Prompt Leaking

チャットボットや言語モデルのような会話AIが、内部プロンプト、学習データ、または操作指示の一部を、その応答内で不注意に公開してしまう状況を指します。これは、AIの設計に欠陥がある場合や、騙されて想定以上の情報を漏らしてしまった場合に起こります。

P2SQL Injection

LLMとDBMSを統合したチャットボットやバーチャルアシスタントなどのLLMアプリケーションに悪意のあるプロンプトを入力し、DBMSを操作する攻撃です。LLMアプリケーションがP2SQLインジェクションを受けると、データの窃取、改ざん、DBMSからの削除など、甚大な被害が発生します。

yanachuwan9sm commented 8 months ago

LLMアプリケーションにおける脆弱性のdemoやる。 https://github.com/13o-bbr-bbq/Broken_LLM_Integration_App


M1マックで docker compose する時は気をつけないとね。 【備忘録】Mac m1 チップ搭載機にてdocker runが失敗する #Docker - Qiita

これ毎回忘れるんだよな。 docker-composeで立ち上げたDockerコンテナのMySQLにログインする

Pythonほぼほぼ初めまして。SQLAlchemyと言うORMあるのか。 SQLAlchemyでテーブル設計とORMの操作

yanachuwan9sm commented 8 months ago

3章 : ChatGPTをAPIから利用するために

Python学びながらやる。

Chat Completions API (書籍と若干現時点Verだと記述が異なりそう) https://platform.openai.com/docs/guides/text-generation/chat-completions-api

yanachuwan9sm commented 8 months ago

Chat Completions API

https://platform.openai.com/docs/guides/text-generation

https://platform.openai.com/docs/api-reference/chat/object

テキスト生成モデルは、JSONモードと 再現可能な出力が可能になりました。また、テキスト生成モデルの上にエージェントのような体験を構築できるAssistants APIも発表しました

このアップデート以前は、Chat Completions API の Function Calling機能でJSON形式の文字列を出力していた。

Function Calling

利用可能な関数をLLMに伝えておいて、LLMに「関数を使いたい」と言う判断をさせる機能のこと。

  1. 利用可能な関数の一覧と共に質問などのテキストを送信する
  2. LLMが「この関数を使いたい」と言う応答をする
  3. アプリケーション側で指定された関数を実行し、実行結果を含めたリクエストをLLMに投げる
  4. LLMは実行結果を踏まえた応答をする。

👉 LLMはどんな関数をどう使いたいかを応答をするのみであり、関数の実行などはアプリケーション側で管理する必要がある。

Assistants API における関数呼び出しとの違いは?あんまり言語化できるほど理解してない。