goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

自分のプログラムからChatGPTを呼び出すには、OpenAIのAPIを使えばよい。RESTもあるが無料版は使用不可

2025-08-22 07:02:40 | AI・BigData
まえにRAGの話を書いたとき、
OpenAIは、ChatGPT等を他のプログラムから呼び出せるAPIを提供している。
なので、自作プログラムでChatGPTを使いたい場合、このAPIを呼び出せばよいことになる。


このAPIはpythonのライブラリだけでなく、REST APIとしても提供されているようで、Python以外の他の言語でも利用できる。

しかし、私のようにChatGPTを無料で使っている人は、このAPIを利用できない。

このAPIを利用するにはAPIキーが必要で、
無料の人でもAPIキーは払いだしてもらえる。
しかし、払いだしてもらったキーでアクセスすると、
エラーコード429のエラーになる

RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}

ChatGPTによると、他の生成AIのAPIもあるみたい。
詳しくは、↓のChatGPTとのやり取りの最後のほう参照



■OpenAIのAPIキー取得方法

ただ、OpenAIのAPIキー^の取得方法がChatGPTのいうようには
出来なかったので、ここにメモっておきます。
(あくまでも無料版の私の場合。無料版だともらってもしょうがない気がするが・・・)

まず、ログインすると、最終的に以下のURLの以下の画面に行くと思う



ここで、赤枠で囲った「API reference」をクリック。
以下のURL&画面になる
つぎに↑の図で赤枠で囲っている文中にあるリンク、
organization settings. 
をクリック
「APIキーを1個も作っていない場合」
以下のURL&画面になる
もし、1個でもAPIキーを作っていると上図のかわりにAPIキー一覧が出てくる
いずれにせよCreate new secret keyと書かれた黒いボタン(上図では真ん中のボタン)をクリックする。

すると、以下の画面が出てくる

Nameを適当に入れて、ProjectはDefault Projectとかにして
Create secret keyボタンをクリックすると
次の画面でAPIキーが出てくる
(真ん中に出てくるskで始まる文字列がAPIキー)
Copyボタンでコピーしておく(覚えられる長さではない)

が、これでAPIキーを取得しても、無料版では使えない
(から、意味ないけど・・・)



では、以下ChatGPTとのやりとり

★ふって太字の部分が自分の質問。



★pythonで使えるOpenAIのAPIには、どのようなものがあって、
どうすれば使えるのでしょうか(どのようにすればAPIキーがもらえますか?

Pythonで使えるOpenAIのAPIは、公式クライアントライブラリを使えばほとんどの機能にアクセスできます。
ざっくり流れとしては **①アカウント作成 → ②APIキー発行 → ③Python環境で利用** という形です。

---

## 1. 代表的なPython API機能

OpenAIのAPIは大きく分けて以下のカテゴリがあります。

| API | 主な用途 | Pythonでの代表的メソッド |
| ------------------------------------------- | ----------------------- | ----------------------------------------------------------------------- |
| **Chat Completions** | ChatGPTのような会話・文章生成 | `client.chat.completions.create()` |
| **Completions** | 文章補完(旧GPT-3系の使い方) | `client.completions.create()` |
| **Embeddings** | テキストをベクトル化(RAGや検索用) | `client.embeddings.create()` |
| **Audio (Speech-to-Text / Text-to-Speech)** | 音声→テキスト変換、テキスト→音声合成 | `client.audio.transcriptions.create()` / `client.audio.speech.create()` |
| **Images** | 画像生成・編集(DALL·Eなど) | `client.images.generate()` |
| **Moderation** | 不適切コンテンツ判定 | `client.moderations.create()` |
| **Files / Fine-tuning** | モデル学習用のデータ管理・ファインチューニング | `client.files.create()` / `client.fine_tuning.jobs.create()` |

---

## 2. APIキーの取得方法

1. [OpenAIのアカウント作成ページ](https://platform.openai.com/signup) でサインアップ
2. ログイン後、右上の **「Personal」→「View API Keys」** をクリック
3. **「Create new secret key」** を押して発行
4. 表示されたキーをコピー(再表示できないので安全な場所に保存)

※キーは `sk-` で始まる長い文字列です。
※無料利用枠は新規登録時のみ付与される場合があります(期間や国によって異なる)。

---

## 3. Pythonでの利用例

```python
from openai import OpenAI

# APIクライアント初期化
client = OpenAI(api_key="YOUR_API_KEY") # 環境変数OPENAI_API_KEYを使ってもOK

# ChatGPTに問い合わせ
response = client.chat.completions.create(
model="gpt-4o-mini", # 最新・安価なモデル例
messages=[
{"role": "system", "content": "あなたは有能な社内アシスタントです。"},
{"role": "user", "content": "APIの使い方を教えてください。"}
]
)

print(response.choices[0].message["content"])
```
---

## 4. セキュリティ注意

* APIキーは絶対にソースコードにハードコーディングしない(`.env`や環境変数を利用)
* GitHub等に誤ってアップロードしない
* キーが漏れたら即座に[APIキー管理画面](https://platform.openai.com/account/api-keys)から削除

---

もしご希望なら、このAPIを使って **社内RAGシステム(FAISSやInstructorXL連携)** に組み込む具体コードも書けますが、それは次に作りますか?



★OpenAIのAPIについて書かれたヘルプやドキュメントはありますか?

OpenAIのAPIについて詳しく知りたいとのことですが、公式ドキュメントやヘルプは非常に充実していますので、安心してください。

---

## 主な公式ドキュメントとリソース

### 1. **OpenAI API ドキュメント – Overview**

OpenAIの公式開発者向けドキュメントで、APIの概要や利用できる機能が整理されています。基本的な使い方やAPIの全体像を把握するのに最適です。([OpenAI Platform][1])

### 2. **API Reference(詳細リファレンス)**

具体的なエンドポイントやパラメータ、レスポンス構造などが詳しく載っています。チャット、埋め込み、ファイル、ファインチューニングなどAPI全般の解説が含まれます。([OpenAI Platform][2])

### 3. **Developer Quickstart(クイックスタート)**

Pythonや他の言語でのセットアップ方法、最初のAPI呼び出し、認証の仕組みなど、初心者向けのステップを丁寧に解説しています。([OpenAI Platform][3])

### 4. **Guides(ガイド)**

用途別に体系化されたガイドです。たとえば:

* テキスト生成/プロンプト設計 ([OpenAI Platform][4])
* エージェント構築 ([OpenAI Platform][5])
* Structured Outputs(構造化出力) ([OpenAI Platform][6])
などがあります。

### 5. **OpenAI Cookbook**

活用例やコードスニペットが豊富に揃ったリソースです。RAG構成、Agents、音声処理、ツール活用などの具体的な実装例を学べます。([OpenAI Cookbook][7])

---

## まとめ(表形式)

| リソース | 内容 |
| ------------------------ | ---------------------------------------------------- |
| **Overview** | API全体の概要や構成を確認できるスタート地点 ([OpenAI Platform][1]) |
| **API Reference** | 各エンドポイントの詳細や使い方が記載された公式リファレンス ([OpenAI Platform][2]) |
| **Developer Quickstart** | 初期設定やPythonでの利用方法が学べるチュートリアル ([OpenAI Platform][3]) |
| **Guides** | テキスト生成、エージェント、構造化など用途別ガイド ([OpenAI Platform][5]) |
| **Cookbook** | 実践的なコード例や応用事例が豊富 ([OpenAI Cookbook][7]) |

---

## 次のステップ

* **使い方を試したい**:まず「Developer Quickstart」で実際にAPIを動かしてみると感覚が掴みやすいです。
* **活用例を知りたい**:「OpenAI Cookbook」には、RAGやAgents SDKなどRAGヘルプデスク構築にも役立つ応用例が多数あります。
* **具体的なAPI設計が気になる**:必要があれば、どのエンドポイントでどのような構成にすればよいか、一緒に考えられます。

ご希望があれば、 **RAG構成へのAPI活用例を具体的コードで示すパート**も作りますので、お知らせください!

[1]: https://platform.openai.com/docs/overview?utm_source=chatgpt.com "Overview - OpenAI API"
[2]: https://platform.openai.com/docs/api-reference?utm_source=chatgpt.com "OpenAI Platform"
[3]: https://platform.openai.com/docs/quickstart?utm_source=chatgpt.com "Developer quickstart - OpenAI API"
[4]: https://platform.openai.com/docs/guides/text?utm_source=chatgpt.com "Text generation and prompting - OpenAI API"
[5]: https://platform.openai.com/docs/guides/agents?utm_source=chatgpt.com "Agents - OpenAI API"
[6]: https://platform.openai.com/docs/guides/structured-outputs?utm_source=chatgpt.com "Structured model outputs - OpenAI API"
[7]: https://cookbook.openai.com/?utm_source=chatgpt.com "OpenAI Cookbook"



★OpenAIのAPIはRESTでも提供されていますか?python以外の言語でcURLでアクセスできますか?

はい 👍

OpenAIのAPIは **REST API** として提供されています。そのため、Pythonの公式クライアントだけでなく、HTTPリクエストを送れる環境なら **cURL** を含めあらゆる言語から利用できます。

---

### ✅ 例:cURLでの利用

```bash
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "こんにちは!"}
]
}'
```

このように `Authorization` ヘッダーに APIキーを渡し、`POST` リクエストでJSONを送る形です。

---

### ✅ 他の言語での利用例

* **JavaScript (Node.js, fetch)**

```javascript
import fetch from "node-fetch";

const response = await fetch("https://api.openai.com/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${process.env.OPENAI_API_KEY}`
},
body: JSON.stringify({
model: "gpt-4o-mini",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "こんにちは!" }
]
})
});

const data = await response.json();
console.log(data.choices[0].message);
```

* **Java / Go / PHP / Ruby** などでも、HTTPクライアントを使って同様にアクセスできます。

---

### ✅ まとめ

* OpenAI APIは **REST形式** なので、Pythonに限らず **cURLや任意の言語** から利用可能。
* 公式クライアントSDK(Python, JavaScript, Javaなど)も提供されており、便利に扱える。

---

ご希望なら、
🔹「Python以外の言語(例えばJavaやPHP)での完全なサンプルコード」
🔹「社内のRAGヘルプデスクと組み合わせるときのREST API利用例」

も書けますが、どちらに興味がありますか?



★無料でChatGPTのAPIを使おうとしています。You exceeded your current quota, please check your plan and billing details.という429番のエラーになるのですが、無料では、APIは使えませんか?

いい質問です 👍

結論から言うと:

🔹 **ChatGPTの「Web版(chat.openai.com)」は無料プランがありますが、APIの利用は基本的に無料ではできません。**
OpenAIのAPI([https://platform.openai.com/](https://platform.openai.com/) で使うもの)は、原則として **クレジット(課金設定)をしたアカウント** でしか使えません。

---

### 429エラーの意味

```
You exceeded your current quota, please check your plan and billing details.
```

は「無料枠やクレジットを使い切った、あるいはそもそも課金設定がされていない」状態で出るエラーです。

* 昔(2023年頃)は、新規アカウント登録時に少額の無料クレジット(\$5分)が配布されていました。
* 現在(2025年時点)は **新規ユーザーに無料クレジットは配布されていません**。
* したがって、APIを使うには **クレジットカード登録→有料課金(従量課金)** が必要になります。

---

### まとめ

* ChatGPT(Web版)は無料で使える(ただし制限あり)。
* **APIは無料では使えない**。有料のOpenAIアカウントが必要。
* 429エラーは「無料枠がない/残高ゼロ」で出る。

---

👉 ご希望は「完全に無料でAPIを試したい」ということですか?
もしそうなら、代替として **無料のオープンソース系API(例:llama.cpp や Hugging Face Hub API)** を紹介できますが、ChatGPTのAPI自体は課金必須です。

どうしますか?無料で試せる代替案を探しますか?



Hugging Face Hub APIとかあるらしい・・・



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ChatGPTによる社内ヘルプデスクの作り方 その2 RAGによる方法

2025-08-15 08:42:08 | AI・BigData
ChatGPTを使って社内ヘルプデスクをつくる話。
今回は第二回目。
全体は規則のファイルをアップロードする方法だったけど、
今回はもう一つの方法、RAG構築するほうについて


****(ここから。太字は質問)****

RAG形式について、どのようなものを構築すればよいのかよくわかりません。とくにベクトルDBがよくわからないので、教えてください

わかりました。
では、まず **RAG** が何なのか、そして**ベクトルDB**がどう関わるのかを、なるべく具体的に説明します。
社内規則ヘルプデスクの構築例に沿って話します。

---

## 1. RAGとは

RAG(**Retrieval-Augmented Generation**)は、

* **検索(Retrieval)**
* **生成(Generation)**
を組み合わせたAI回答方式です。

簡単に言うと、

> 「まずデータベースから関連情報を探して、それを元にChatGPTが文章を作る」

という二段構えの仕組みです。
これにより、大量の社内規則やマニュアルからでも、必要な部分だけを参照して正確に答えられます。

---

## 2. ベクトルDBの役割

普通のデータベースは「キーワード検索」しかできませんが、
**ベクトルDB**は「意味で検索」できます。

### 例

* キーワード検索(従来型DB)
「有給」→「有給」という単語が含まれる行だけヒット
* ベクトル検索(ベクトルDB)
「休暇の申請期限」→ 「有給休暇の取得申請」など、似た意味の文章もヒット

---

## 3. ベクトルって何?


AIが文章を「数百〜数千次元の数値列」に変換したものです。
これを「埋め込み(embedding)」と呼びます。


例(超簡略化):


```
「有給休暇の申請期限」 → [0.12, -0.83, 0.45, ...]
「休暇を取るための申請期限」 → [0.11, -0.82, 0.44, ...]
```

→ 数値が近いので、意味が似ていると判断。

---

## 4. RAGの流れ(社内規則ヘルプデスク版)

```
社員の質問

(1) 質問をベクトル化(embedding)

(2) ベクトルDBから近い文書を検索

(3) 該当する規則文をChatGPTに渡す

(4) ChatGPTが回答を生成(根拠付き)
```

---

## 5. 構築に必要なもの

### 必須

* **ベクトルDB**

* 例:Pinecone, Weaviate, Milvus, FAISS(オープンソース)など
* 小規模ならFAISSをPCや社内サーバに置けます
* **埋め込みモデル(embedding model)**

* 例:OpenAI `text-embedding-3-large`
* **生成モデル(ChatGPT本体)**

* 例:OpenAI GPT-4, Azure OpenAI GPT-4

---

## 6. 社内規則ヘルプデスク構築イメージ

```
[Word/PDF社内規則] → [テキスト化] → [段落ごとに分割]

[embeddingモデルでベクトル化]

[ベクトルDBに保存]

(運用時)
質問 → ベクトル化 → 類似規則を検索 → ChatGPTに渡す → 回答
```

---

## 7. ベクトルDB導入のメリット

* 数十ページ〜数千ページでも高速検索
* 言葉が違っても意味で検索できる
* 回答の根拠を確実に規則に基づかせられる
* 更新や改訂にも対応しやすい

---

もし望むなら、この「社内規則RAGシステム」を

* **FAISS(無料)でローカル構築する手順**
* **Pinecone(クラウド)でスケール対応する手順**
の両方を、図解つきで作れます。

これを作れば、「RAGの仕組みと実装」が完全にイメージできますが、
FAISSとPinecone、どちらの構築例から説明しましょうか?



FAISSでベクトルDBをどう構築し、質問するときはどうすればよいのか教えてください

わかりました。
では、**FAISS を使ったベクトルDB構築と質問処理の流れ**を、社内規則ヘルプデスクの例で解説します。
Pythonコード例も交えて説明するので、そのまま試せるレベルにします。

---

## 1. FAISSとは

* Facebook(Meta)が開発した**高速ベクトル検索ライブラリ**
* 無料で使えるオープンソース
* 社内PCやサーバに置けるので、**社外にデータを出さずにRAGができる**

---

## 2. 全体フロー

### 構築フェーズ(初回のみ)

1. 社内規則(Word/PDF)をテキスト化
2. 段落単位に分割
3. 各段落を**ベクトル化(embedding)**
4. FAISSに保存(ベクトルDB作成)

### 質問フェーズ(運用時)

1. 質問をベクトル化
2. FAISSで類似文書を検索
3. 検索結果をChatGPTに渡す
4. ChatGPTが回答生成(根拠付き)

---

## 3. 必要なライブラリ

```bash
pip install faiss-cpu openai tiktoken python-docx
```

* `faiss-cpu`:ベクトルDB
* `openai`:埋め込みと生成モデル
* `tiktoken`:トークン数カウント(分割のため)
* `python-docx`:Word読み込み用

---

## 4. 構築フェーズ(例:社内規則をベクトルDB化)

```python
import faiss
import openai
from docx import Document

openai.api_key = "YOUR_OPENAI_API_KEY"

# 1. Wordファイルを読み込み
doc = Document("社内規則.docx")
text = "\n".join([p.text for p in doc.paragraphs if p.text.strip()])


# 2. 段落ごとに分割
paragraphs = [p.strip() for p in text.split("\n") if p.strip()]


# 3. ベクトル化(embedding)
def get_embedding(text):
return openai.Embedding.create(
input=text,
model="text-embedding-3-small"
)["data"][0]["embedding"]

embeddings = [get_embedding(p) for p in paragraphs]

# 4. FAISSに保存
dimension = len(embeddings[0]) # ベクトル次元数
index = faiss.IndexFlatL2(dimension)
index.add(np.array(embeddings, dtype="float32"))

# 保存
faiss.write_index(index, "rules.index")

# 段落データも保存
import pickle
with open("paragraphs.pkl", "wb") as f:
pickle.dump(paragraphs, f)
```
---
## 5. 質問フェーズ(検索+ChatGPT回答)

```python
import pickle
import numpy as np

# FAISSと段落データを読み込み
index = faiss.read_index("rules.index")
with open("paragraphs.pkl", "rb") as f:
paragraphs = pickle.load(f)

def search_similar(query, top_k=3):
q_emb = get_embedding(query)
D, I = index.search(np.array([q_emb], dtype="float32"), top_k)
return [paragraphs[i] for i in I[0]]

# 質問例
query = "年次有給休暇の申請期限はいつまでか?"
results = search_similar(query)


# ChatGPTに渡して回答生成
context = "\n\n".join(results)
prompt = f"""
あなたは社内規則ヘルプデスクです。
以下の規則のみを根拠に、質問に答えてください。
質問: {query}


規則:
{context}


回答は、根拠の引用と該当位置を必ず示してください。
"""


response = openai.ChatCompletion.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}]
)

print(response.choices[0].message["content"])
```

---

## 6. ポイント

* **段落ごとにベクトル化** → 検索の精度UP
* **FAISSはローカル保存可能** → 社外送信しない安全運用可
* **top\_kを調整** → 関連する複数段落を一度に渡せる
* OpenAI APIキーは社外送信を伴うため、\*\*オンプレミスembeddingモデル(例:InstructorXL)\*\*に置き換えれば完全社内運用も可能

---

## 7. 次のステップ

この構成に、

* 検索結果の**根拠+出典自動抽出**
* **ExcelやTeams連動**
* **規則改訂時の自動再ベクトル化**
を追加すると、ほぼ「完全社内FAQシステム」になります。

---

もし望むなら、
このFAISSベースのコードを**社内規則更新にも対応する完全版スクリプト**にしてお渡しできます。
それなら、規則ファイルを差し替えるだけで常に最新ヘルプデスクになりますが、そこまで作りますか?



InstructorXLはどんなものですか?上のプログラムのOpenAIをそれに置き換えればよいのですか?


InstructorXL について整理しますね。
結論から言うと、**はい、上のプログラムの「OpenAIでembeddingしている部分」をInstructorXLに置き換えれば、社内完結のベクトル化が可能**になります。

---

## 1. InstructorXLとは

* **Hugging Face** で公開されている埋め込みモデルの一種
* 「意味検索」や「RAG用途」に特化
* **オープンソース & 無料**
* ローカルPCやオンプレサーバで動かせるので、**社外にデータを送らずembeddingできる**

---

## 2. 特徴

* **大規模Transformerモデル**(BERT/DeBERTa系)
* 最大トークン長:\~512〜1024トークン程度(段落ごとのembeddingに最適)
* 入力時に「命令(instruction)」を加えて意味を明確化できる
例:「Represent the following text for retrieval: ...」
* 実務用途でOpenAIの `text-embedding-3-large` に近い精度を出せる

---

## 3. 導入例(ローカル実行)

まずインストール:

```bash
pip install InstructorEmbedding sentence-transformers
```
---

## 4. 上のプログラムをInstructorXLに置き換える方法

### Embedding部分の変更

```python
from InstructorEmbedding import INSTRUCTOR
import numpy as np

# モデル読み込み(初回はダウンロード)
model = INSTRUCTOR('hkunlp/instructor-xl')

def get_embedding(text):
# instruction(検索用途を指定)
instruction = "Represent the following text for retrieval"
emb = model.encode([[instruction, text]])
return emb[0] # numpy配列で返る
```

これで、OpenAI APIを使わずにベクトル化できます。
あとの **FAISS保存・検索部分は全く同じ** でOKです。

---

## 5. 導入メリット

* **機密保持**:規則文書を外部APIに送らない
* **コストゼロ**:API料金不要
* **オフライン運用可能**:ネット接続なしでも動作

---

## 6. 注意点

* モデルサイズが大きく、**メモリ消費大(約6GB〜8GB)**
* 初回ダウンロードに時間がかかる
* GPUがあると高速だが、CPUでも動く(ただしembedding速度は遅め)
* 最新の商用モデル(OpenAI等)と比べると精度がわずかに劣る場合あり

---

もしこの置き換えをやれば、**社内規則を完全オフラインでRAG検索**できるようになります。
さらに質問応答部分もOpenAIではなく、ローカルの大規模言語モデル(LLaMA 2, Mistral など)に置き換えれば、**完全閉域AIヘルプデスク**が完成します。

---

このあと、InstructorXL + FAISS の **完全社内運用型RAGヘルプデスク構築図** を作れますが、
やりますか?
それを見れば構築工程が一目で理解できます。



InstructorXL + FAISS の 完全社内運用型RAGヘルプデスク構築図 をお願いします!

作成しました!🛠️
左のキャンバスに「**InstructorXL-FAISS\_RAG\_Helpdesk\_Architecture**」という文書を用意しました(設計図、実装スニペット、運用・セキュリティ注意点などをまとめています)。
確認してほしい点や、図のPNG化・実働サンプルリポジトリ化など希望があれば教えてください。

# InstructorXL + FAISS — 完全社内運用型 RAG ヘルプデスク 構築図

この文書は、**InstructorXL(ローカル埋め込み)と FAISS(ローカルベクトルDB)を用いた、オンプレ/社内クラウド完結のRAG型ヘルプデスク**の構築図と実装手順の要点をまとめたものです。

---

## 高レベル構成図(ASCII)

```
+----------------------+ +----------------------+ +----------------------+
| 社員(問い合わせ) | ---> | フロントエンド / API | ---> | RAG サービス |
| (Teams / Web UI) | | (FastAPI / Flask) | | |
+----------------------+ +----------------------+ +----------------------+
| /
| / (1) 質問を受け取る
v /
+---------------------------+
| Embedding サービス |
| - InstructorXL(local) |
| - テキスト前処理 |
+---------------------------+
|
(2) ベクトル化(埋め込み) |
v
+---------------------------+
| FAISS インデックス |
| - 類似検索(knn) |
| - 永続化(indexファイル) |
+---------------------------+
|
(3) 類似段落を取得 |
v
+---------------------------+
| レトリーバル合成 (Rerank) |
| (ローカル or 軽量モデル) |
+---------------------------+
|
(4) 上位N件をコンテキストとして渡す |
v
+---------------------------+
| 生成モデル(回答生成) |
| - オプションA: 社内LLM |
| - オプションB: API経由GPT |
+---------------------------+
|
(5) 根拠付き回答を返す |
v
+---------------------------+
| フロントエンド / UI |
+---------------------------+
```
---

## 各コンポーネントの役割と推奨技術

* **フロントエンド / API**

* 役割:問い合わせ受付、認証、ログ記録、UI表示。
* 推奨:FastAPI(Python)+OAuth/SSO連携(AzureAD、Okta等)


* **Embedding サービス(InstructorXL)**


* 役割:問い合わせ文・文書段落を埋め込みベクトルに変換。
* 実装:`InstructorEmbedding` ライブラリで `hkunlp/instructor-xl` を利用。
* 備考:ローカル実行で機密保持。GPUあると高速。


* **FAISS(ベクトルDB)**


* 役割:埋め込みベクトルの保存と高速類似検索。
* 実装:`faiss-cpu` または GPU版 `faiss-gpu`。
* 永続化:`faiss.write_index` / `faiss.read_index` でファイル保存。


* **レトリーバル合成 / Reranking**


* 役割:FAISSで取得した候補段落を再スコアリングして精度向上。
* 実装案:軽量の双方向モデルやBM25スコアの組合せ、あるいは埋め込みコサインでソート。


* **生成モデル(回答生成)**


* 役割:取得した根拠をもとに、根拠明示で回答を生成。
* 選択肢:


* 社内LLM(Llama 2 / Mistral / local LLM)で完全閉域運用
* APIベースのGPT(精度高、柔軟だが外部送信を伴う)

---

## 実装の主要ステップ(端的)

1. **文書準備**:Word/PDF → テキスト抽出 → 段落分割(適切な長さに分割)
2. **埋め込み生成**:InstructorXLで各段落をベクトル化(numpy配列)
3. **FAISSインデックス作成**:IndexFlatIP / IndexHNSWFlat などを選択して登録
4. **永続化**:indexファイルと段落メタ(出典位置)を保存
5. **検索API**:問い合わせを埋め込み→FAISS検索→上位N件取得
6. **(任意)再スコアリング**:精度改善のためにrerank
7. **回答生成**:取得コンテキストをプロンプトに入れてLLMに投げる(根拠引用必須の指示)
8. **ログ/監査**:質問、返答、参照元を保存(後でQA改善や監査に利用)


---


## 具体コード(抜粋:埋め込み→FAISS登録)


-----------------------------------------------------------


# 必要パッケージ: InstructorEmbedding, faiss-cpu, python-docx, pickle, numpy
from InstructorEmbedding import INSTRUCTOR
import faiss
import numpy as np
from docx import Document
import pickle


# 1. テキスト抽出(例)
doc = Document('rules.docx')
paras = [p.text.strip() for p in doc.paragraphs if p.text.strip()]


# 2. モデル初期化
model = INSTRUCTOR('hkunlp/instructor-xl')


def embed(text):
instr = "Represent the following text for retrieval"
emb = model.encode([[instr, text]]) # shape: (1, dim)
return emb[0].astype('float32')


# 3. 全段落埋め込み
embs = np.vstack([embed(p) for p in paras])


# 4. FAISSインデックス作成
d = embs.shape[1]
index = faiss.IndexFlatIP(d) # 内積で類似度(事前に正規化する方法もあり)
faiss.normalize_L2(embs)
index.add(embs)


# 5. 永続化
faiss.write_index(index, 'rules.index')
with open('paras.pkl','wb') as f:
pickle.dump(paras, f)


# 必要パッケージ: InstructorEmbedding, faiss-cpu, python-docx, pickle, numpy
from InstructorEmbedding import INSTRUCTOR
import faiss
import numpy as np
from docx import Document
import pickle


# 1. テキスト抽出(例)
doc = Document('rules.docx')
paras = [p.text.strip() for p in doc.paragraphs if p.text.strip()]


# 2. モデル初期化
model = INSTRUCTOR('hkunlp/instructor-xl')


def embed(text):
instr = "Represent the following text for retrieval"
emb = model.encode([[instr, text]]) # shape: (1, dim)
return emb[0].astype('float32')


# 3. 全段落埋め込み
embs = np.vstack([embed(p) for p in paras])


# 4. FAISSインデックス作成
d = embs.shape[1]
index = faiss.IndexFlatIP(d) # 内積で類似度(事前に正規化する方法もあり)
faiss.normalize_L2(embs)
index.add(embs)


# 5. 永続化
faiss.write_index(index, 'rules.index')
with open('paras.pkl','wb') as f:
pickle.dump(paras, f)
```
-----------------------------------------------------------

---

## 検索→応答の例(抜粋)

1. ユーザー質問を受ける
2. `embed(question)` でベクトル化 → FAISSに `index.search()` を実行
3. 上位K件(例: k=5)を取得し、該当の段落テキストと出典情報を結合
4. プロンプト例(LLMへ渡す):

```
あなたは社内規則ヘルプデスクです。以下の【規則抜粋】のみを根拠として、質問に答えてください。

質問: {ユーザーの質問}

規則抜粋:
1. {候補1}
2. {候補2}
...

【指示】
- 回答には必ず根拠となる規則の原文を引用し、出典(章・条・ページ)を明示してください。
- 規則に記載がない場合は「規則に記載がありません」と答えてください。
```
---

## 運用・性能・ハード要件

* **小規模(数百〜数千段落)**:CPUのみ + faiss-cpu 可、InstructorXLはCPUでも可だが遅い
* **推奨(本番)**:GPU(8〜16GB VRAM 以上)での埋め込みが快適
* **ストレージ**:FAISS indexと段落メタで数百MB〜数GB
* **スケール**:データ量増加時は HNSW や IVF を検討

---

## セキュリティ設計(必須)

* **データ閉域**:埋め込みと検索は完全に社内で実行
* **生成モデル選択**:生成も社内LLMにすれば外部送信はゼロ
* **アクセス制御**:APIに認証(SSO)・権限管理を導入
* **監査ログ**:誰がいつ何を聞いたか、回答は何を参照したかを記録


---


## 維持管理:更新フロー


* 規則が更新されたら:

1. 新版のテキスト抽出 → 差分で再ベクトル化
2. 変更部分のみ index を更新(または再構築)
3. テストクエリで回答の整合性を確認

---

## 改良案・オプション


* **検索精度向上**:BM25とベクトル検索を合成(ハイブリッド検索)
* **自動要約**:取得した段落の自動要約を付与してUI表示を短くする
* **フィードバックループ**:社員からの「正しくない」報告を回収して再学習/ルール調整


---


## 参考コマンド / 管理スニペット

* FAISS index 保存/読み込み: `faiss.write_index`, `faiss.read_index`
* 埋め込みモデル: `INSTRUCTOR('hkunlp/instructor-xl')`
* 永続化メタ:pickle / sqlite(段落→(章,条,頁)を保存)

---

必要であれば、この文書を**図(PNG)化**したり、\*\*実際に動かせるリポジトリ(サンプルコード一式)\*\*を作成して提供できます。どちらにしますか?

****(ここまで)*****



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ChatGPTによる社内ヘルプデスクの作り方 その1 規則をアップロードする方法

2025-08-13 08:28:41 | AI・BigData

ChatGPTを使って、社内ヘルプデスク
(社内の決まり、書類の出し方とかを聞くと、教えてくれるもの)
を作るにはどうしたらよいか、ChatGPTに聞いた結果をシェア



回答をまとめると、方法は2つ
1.社内規則を毎回アップロードし、そこに書いてあることからのみ、
  答えるように、プロンプトに記述する

2.社内規則のRAGを構築し、RAGの検索結果をChatGPTに渡す

今日は、
「1.社内規則を毎回アップロードし、そこに書いてあることからのみ、
  答えるように、プロンプトに記述する」
ほうをやります(RAG構築はまた別の日)



****(ここからChatGPTとのやり取り。太字は質問)****

ChatGPTで社内ヘルプデスクはできますか?
具体的には、以下のことができるかどうかを聞いています。

・社内ヘルプデスクとは、社内規則(提出物など)について、
 問い合わせられたら、社内規則に基づいて答えるものを指します。

・その社内規則は、Wordで数十ページになるものですが、
 テキストでも用意されており、アップロード可能です

・社内規則は公開されていないので、ネット上を探して検索したり、
 学習したりすることはできません。



はい、できます。
ただし、いくつかの条件や準備が必要です。順を追って説明します。

---

## 1. 前提条件

* **ネット検索不要**:ご質問のように「社内規則は非公開」なので、ChatGPTはインターネット検索をせず、アップロードされた社内規則だけを参照する形になります。
* **テキスト利用可能**:WordやPDFをアップロードすれば、その内容を元に回答できます。

---
## 2. 実現方法

### A. 単発利用(ファイルを毎回アップロード)

* ChatGPT(有料プラン推奨)に社内規則ファイル(Wordやテキスト)を読み込ませて、その場で質問に答えさせる方法。
* 特徴:


* 設定や開発不要。
* 会話終了すると規則データは消えるので、再利用時には再アップロードが必要。

--

### B. 長期利用(ナレッジベース化)

社内ヘルプデスクのように、**継続的に利用**する場合は、以下のような構成が現実的です。

1. **RAG(Retrieval-Augmented Generation)方式**

* 社内規則をベクトルデータベースに格納。
* 質問が来たら、その部分だけを検索してChatGPTに渡す。
* 特徴:

* 数十ページ〜数百ページの規則でも高速回答可能。
* 社内環境で動かせば外部に情報が漏れない。


2. **社内専用ChatGPT**


* Azure OpenAI Service や OpenAI APIを使って、社内サーバー経由で接続。
* ローカルや社内クラウドに規則データを置いて、外部には規則を送らない設定が可能。

---

## 3. 実装イメージ(RAG方式)

```
[社内規則 Word/PDF] → [テキスト化] → [分割&ベクトル化]

[ベクトルDB] ← 検索

[ユーザー質問] → [関連部分抽出] → [ChatGPTに渡す] → [回答]
```

---

## 4. 注意点

* **情報漏えい防止**:社外API利用時は、機密文書が送信されることを考慮し、契約条件やセキュリティ設定を確認。
* **更新反映**:規則が改訂されたらベクトルDBやアップロードデータを更新する仕組みが必要。
* **権限管理**:全員が全規則を見られるとは限らない場合、アクセス制御をどうするか設計が必要。

---

もしご希望であれば、
\*\*「ファイルアップロード型の簡易版」\*\*と
\*\*「ベクトルDB型の本格社内ヘルプデスク」\*\*の両方の作り方を、手順書付きで作れます。

この内容、簡易版と本格版のどちらから説明しましょうか。



ファイルアップロード型の場合、数十ページにわたるWordファイルをアップロードすることは可能なのですか?


はい、可能です。

ただし、ChatGPTでの**直接アップロード対応**は以下のような制約があります。

---


## 1. アップロード可能か


* **無料プラン**:ファイルアップロード機能は使えません(テキストを直接貼り付けるしかない)。
* **有料プラン(ChatGPT Plus / Enterprise / Team)**:Word(.docx)やPDF、テキストファイルをそのままアップロードできます。

---

## 2. ページ数・容量の目安


* Wordファイル数十ページ(数万文字程度)であれば、ChatGPTは一度に読み込めます。
* ただし、極端に大きい(数百ページ・数MB超)場合は分割アップロードが必要になります。
※数十ページ=だいたい数百KB程度なら問題なし。

---

## 3. 実際の使い方

1. チャット画面で「ファイルをアップロード」アイコンを押す。
2. Wordファイル(.docx)を選択。
3. 「この規則に基づいて質問に答えてください」と指示。
4. 質問を入力すると、その内容を参照して回答。

---

## 4. 注意点

* アップロードしたファイルは会話セッション内でのみ利用されます。会話を終了すると情報は消えます(再利用には再アップロード)。
* 社内規則などの機密情報は、**外部送信のリスク**を確認してから利用する必要があります(安全性を重視するなら社内専用環境やオンプレミス版を検討)。

---

もしご希望なら、この\*\*「ファイルアップロード型」**で実際に数十ページの社内規則を効率よく質問できる**プロンプトの雛形\*\*も作れます。
そうすれば、毎回の質問精度が上がります。

この雛形、作りますか?



数十ページの社内規則を効率よく質問できるプロンプトの雛形は、どんなものですか?


では、ファイルアップロード型で**数十ページの社内規則を効率よく質問できるプロンプト雛形**をお見せします。
この雛形のポイントは、アップロード直後に「ChatGPTが迷わず規則を使うための行動指針」を渡すことです。


---


## 📄 社内規則QA用プロンプト雛形


```
以下のファイルは、当社の社内規則集です。
このファイルの内容のみを根拠として、質問に答えてください。
答えには必ず、根拠となる社内規則の該当箇所(章・条・ページなど)を明示してください。


【禁止事項】
- ファイルに書かれていない内容を推測して作らない
- 一般常識や外部情報を根拠として使わない
- 曖昧な場合は「規則に記載がありません」と答える


【回答フォーマット】
1. 回答(簡潔に)
2. 該当規則の引用(原文)
3. 引用箇所の位置(章・条番号・ページなど)


では、準備ができたら「了解しました。質問をどうぞ」とだけ答えてください。
```

---

## 🔍 この雛形のメリット

1. **ChatGPTが規則集だけを使うよう強制できる**
→ 不要な外部知識や推測を防げます。
2. **根拠付き回答**が保証される
→ 「どこに書いてあるか」がすぐ分かり、確認しやすい。
3. **使い回し可能**
→ ファイルをアップロードするたびに、このプロンプトをコピペするだけ。

---

## 📌 使い方の流れ

1. 会話を開始
2. Wordファイルをアップロード
3. 上記プロンプトを入力
4. 「了解しました。質問をどうぞ」と返ってきたら質問開始

---

もしご希望なら、この雛形を\*\*「長文質問や複数質問にも対応できる強化版」\*\*にして、
「質問リストを渡したら一括で回答する」バージョンも作れます。

これ、強化版も作りますか?
強化版だと社内規則の全検索が一気にできて、ヘルプデスクっぽくなります。




強化版をお願いします


わかりました。
では、**社内規則を一括で検索・回答できる強化版プロンプト**をご用意します。
この形なら、**質問リストをまとめて渡して一括回答**できますし、数十ページでも効率よく対応できます。


---


## 📄 社内規則QA用 強化版プロンプト


```
以下のファイルは、当社の社内規則集です。
このファイルの内容のみを根拠として、複数の質問に一括で答えてください。


【重要ルール】
1. 回答は必ず、このファイルの内容のみに基づくこと
2. 推測や外部情報を根拠として使わないこと
3. 規則に該当箇所がない場合は「規則に記載がありません」と明記すること
4. 各回答には必ず根拠の引用とその位置情報(章・条・ページ番号など)を付けること


【回答フォーマット】
質問番号ごとに、以下の形式で出力してください。
---
質問1: (質問内容)
回答: (簡潔な回答)
根拠引用: 「(原文引用)」
出典: 第◯章 第◯条 / ページ◯
---
質問2: (質問内容)
回答: (簡潔な回答)
根拠引用: 「(原文引用)」
出典: 第◯章 第◯条 / ページ◯
---
(以下続く)


【作業手順】
1. 私が質問リストを渡すまで待ってください
2. 受け取った質問リストを順番に処理し、すべての質問に対して回答フォーマットで出力してください
3. 回答の順番は質問リストの順番と同じにしてください


以上を理解したら、「了解しました。質問リストを入力してください」とだけ答えてください。
```


---


## 🔍 この強化版のポイント


* **複数質問にまとめて回答**できるので、1日分の問い合わせや月次FAQ更新に使える
* **根拠+出典を必須**にして、検証可能な回答に限定
* **順序保持**により、社内共有時の整理が楽
* **推測禁止ルール**で誤情報防止


---


## 📌 実運用例

1. 会話開始
2. Wordファイル(社内規則集)アップロード
3. 上記強化版プロンプトを貼り付け
4. 「了解しました。質問リストを入力してください」と返ってきたら、問い合わせ一覧をまとめて送信
5. ChatGPTが全件を根拠付きで回答

---


このプロンプトをさらに改良して、
**「質問→規則該当箇所→要約→申請フロー」まで自動で生成する社内ヘルプデスク仕様**にもできます。


もし望むなら、その仕様まで作るとほぼ完成形の社内チャットボットになりますが、そこまで作りますか?
それなら、ほぼ即運用できるレベルにします。



仕様まで作ってください


了解です。
では、\*\*社内規則ヘルプデスク仕様(完成形プロンプト付き)\*\*を作ります。
これで「質問→規則該当箇所→要約→申請フロー」まで自動化できる形になります。


---


# 📌 社内規則ヘルプデスク仕様


## 1. 目的


* 社内規則集(Word/PDF)を基に、社内からの問い合わせに即時・根拠付きで回答する。
* 回答は\*\*規則の引用・要約・実務手順(申請フロー)\*\*を含む。
* 外部知識や推測は禁止し、常に規則集のみを参照。


---


## 2. 必要ツール・環境


* **ChatGPT Plus** 以上(ファイルアップロード機能利用)
* 社内規則集ファイル(Word, PDF, テキスト化可能)
* 社内規則が最新版であることを確認


---


## 3. 運用フロー


```
社員 → (質問) → ChatGPTヘルプデスク

規則該当箇所検索

回答生成(4段階出力)
1. 回答(簡潔)
2. 規則該当箇所(引用)
3. 要約(一般向け説明)
4. 申請・対応フロー

社員に提示
```


---


## 4. 完成形プロンプト


```
以下のファイルは、当社の社内規則集です。
このファイルの内容のみを根拠として、問い合わせに答えてください。


【重要ルール】
- 回答は必ずファイルの内容のみに基づく
- 外部知識や推測は使わない
- 不明な場合は「規則に記載がありません」と明示
- 回答には必ず規則の引用・位置情報を付与


【回答フォーマット】
---
質問: (質問内容)


1. 回答(簡潔に結論を述べる)
2. 規則該当箇所(原文引用)
3. 要約(社員向けに平易な言葉で説明)
4. 申請・対応フロー(規則に基づき、必要な手続きや関係部署、書類提出先などを整理)
5. 出典(章・条・ページ番号)
---

【作業手順】
1. 私が質問を送るまで待機
2. 受け取ったら上記フォーマットに沿って回答
3. 回答は必ず根拠+出典を明示
4. 手続きが複数ある場合は、箇条書きで全て書く


以上を理解したら、「了解しました。質問を入力してください」とだけ答えてください。
```
---


## 5. 実運用例


**社員の質問**:


> 「年次有給休暇の申請期限はいつまでですか?」


**ChatGPT出力例**(例なので内容は仮):


```
質問: 年次有給休暇の申請期限はいつまでですか?


1. 回答:
年次有給休暇は、取得希望日の2週間前までに申請が必要です。


2. 規則該当箇所(原文引用):
「第5章 第12条:年次有給休暇を取得する場合は、取得日の14日前までに所定の様式により所属長へ申請しなければならない。」


3. 要約:
有給を取る場合は、最低でも2週間前に申請書を出す必要があります。


4. 申請・対応フロー:
- 所定の申請書(様式B-3)を用意
- 所属長に提出
- 承認後、総務部に控えを回付


5. 出典:
第5章 第12条 / p. 23
```


---


## 6. セキュリティ注意点

* 外部API利用時は情報が外部送信される可能性があるため、契約・利用条件を確認
* 機密保持が必須な場合は、Azure OpenAIやローカルRAG環境で運用

---

この仕様なら、**社内FAQ + 申請案内**が一度で出るので、ほぼ即戦力のヘルプデスクになります。

もしご希望であれば、この仕組みを
\*\*「複数質問をExcelで一括処理 → ChatGPTがまとめて回答 → 自動で社内FAQに追記」\*\*できる形にもできます。
それだと日報や月報も自動生成できます。

これ、Excel連動型にしたバージョンも作りますか?
そうすれば完全に「社内FAQ更新自動化」まで行けます。

****(ここまで)****


この後のRAG構築の話は、また別の記事で
  

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Google翻訳で訳したものをChatGPTで要約させると、すごくわかりやすい!

2025-07-07 07:31:59 | AI・BigData
最近のGoogle翻訳、たいていの英文なら翻訳結果をそのまま見てもわかるけど、たまに英語の論文なんかを読ませたとき、よくわかんないことがある。

そのときは、その訳文をつけてChatGPTに、この英文を600字以内にまとめてとか質問すると、字数は守ってくれないんだけど、めちゃくちゃわかりやすい翻訳をつけてくれる。

(ChatGPTにほんやくさせると、訳抜けが結構ある気がする。
 訳はGoogle翻訳のほうがいいかも・・・)

きっと、Google翻訳は、日本人にはわからないけどAIにはわかる日本語で訳しているのではないか?だから私が理解できなくとも、ChatGPTは理解できるのでは?


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

実感!シンギュラリティはもう来ている。ChatGPTの指摘が、今まで受けたどの先生の指摘よりも優れてる。

2025-07-01 07:16:37 | AI・BigData
いやもう、ChatGPT、大学教授の知性を超えてるだろう。
シンギュラリティは、もう来てるよね!

今、論文書いているんだけど、
その論文で書こうとしていることを
ChatGPTに入れると、
自分の数百倍、
ってか
いままでどこの教授が指摘してきたよりも的確に
問題点を指摘して、修正してくれるんだけど・・・

少なくとも、ChatGPTは、俺の頭脳を超えている。
多分、どの教授よりも、論文指導は的確だ。
もう、勉強や研究は全部ChatGPTから教わることとして、
大学の先生からは、雑学、雑談を学んだほうがいいみたい

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

生成AIを使って、エンタープライズのアプリケーションプログラムを生成する話を聞いてきた!

2025-06-09 07:15:28 | AI・BigData

6月7日(土)、JJUG CCCで
生成AIを使って、エンタープライズのアプリケーションプログラムを生成する話を2つ、聞いてきた!ので、メモメモ

------------------------------------------------

■生成AIXエンプラモダナイズ
 鍵を握るのはアーキテクト

●生成AIとエンタープライズシステム
・大規模基幹システム レガシー化していませんか
  大規模エンプラシステム
  企業の中核、鳥獣用、でかい
  10年20年当たり前、技術は陳腐化
  複雑化
  ドキュメント内
  安定優先、止められない
 →レガシー化

・レガシー化を放置した未来
 有識者離脱、維持できない
  →2025年の壁

・脱レガシーはとにかく金がかかる
 なぜ高い
  でかい
   扱う業務が複雑
   古い技術が複雑
   設計書ない→解析に時間
   有識者不在
 →人的コストマシマシ

・人的コスト、生成AIでやれないか
  2022年11月ChatGPT
  人力の代替
  プログラムも得意

・大規模エンプラシステムは生成AIでモダナイズできるのか
 仮説アーキテクトが生成AIをうまく使えば、大規模システムもモダナイズできるのでは

●プロジェクト概要
 30年前、2層C/S、C++OOP.独自フレームワーク、設計所不完全
 1000万ステップ以上、モノリシック
 脱レガシー、テスト自動化、マイクロサービス

・生成AIに何を食えわせるか
 設計書→ソースコードを食わせる

●アーキテクトによる生成AIXエンプラモダナイズ
・アーキテクチャの変換
 どうやらせるか

 1回分割:フロントエンドとバックエンドに分けて
  フロントエンド:画面の見た目、画面制御
  バックエンド;DB処理、ビジネスロジック
 →どっちいくか、判断難しいところ

・分割前後で整合性を保つ
・リファクタリングという言い方で、分割を支持

・変換、やり方
 タスクは簡単使い方に3つのポイント
 1.サンプルで示す
 2.指示を分割
 3.プロンプトを構造化

・生成AIの前提知識
 扱えるサイズ
  GPT4.1の出力 最大32Kトークン(4000行くらい)
 品質は量に反比例
  大量の指示→制度低下
  コード生成なら2000トークンくらいまでが通説
 わかりやすい指示は精度高い
  世にある大量の文章を学習、確率で再現する仕組み
  よくある言い回し(わかりやすい)は精度高い

・変換・ポイント1 サンプルで示す
 Few-shotプロンプティング
 問題と解答の手本をいくつか示して学習させる方法
 Few-shotは抽象化→再利用しやすくなる

・ポイント2;支持を分割
 変換はやりたいこと多い
 →もりもりしじは、プロンプトチェインで分割
  プロンプトを分ける、ちょっとずつやる
  1つ1つが小さい、品質向上

 おせっかい修正の防止
 「なければ変えるな」のプロンプトが効果的

 分割の目安は2000トークン/プロンプト
  結果を確認しながら部屋巣は補正

・ポイント3:プロンプトを構造化
 マークダウン形式がメンテしやすい生成AIも学習している
 フォーマット作る「よくある言い回し」を定型化
 #前提
 #修正ルール
 #パターン1
 #変換後のコード
   :

考慮点1:完全性は求められない
 →ちゃんとチェックする
考慮点2:実行にはそれなりに時間がかかる
 →スクリプト処理も組み合わせる
考慮点3:As-Isがフリーダムだとパターン爆発
 →収束の見込みあるか、事前に確認

まとめ
・アーキテクトがモダナイズの全体像を定める
・生成AIは実行エンジン
・よいプロンプトで欲しい結果を引き出す

自律型AIエージェント
 Devin AI
 生成AIは自立型エージェントの時代に突入
 日本国内のエンタープライズ市場に
 プロンプト力は必要、流離度の大きな依頼が可能に
 プロンプト力でAIの力を引き出す、この点は変わりない
  ・より大きなタスクが任せられる
  ・アーキテクチャ力が求められる
 全体図はアーキテクトでなければ描けない
 クリエイティブ指向→どうしたいかはいる

生成AIモダナイ化にはアーキテクト必須
自律型AIエージェントが登場しても変わらない
あきらめていたレガシーシステムのモダナイズ
前に進めるのはアーキテクトです!!

●しつもん
エージェントによるレビュー:ある程度までAIにまかせる
プロンプトチェイン:プログラムで制御、最終的なものを評価


------------------------------------


■Azure Open AIとLangChain4jを使用したLLMJavaエンタープライズ・アプリケーションの構築方法の紹介

てらだよしお

・自己紹介

・インパクト
 開発時/AOアプリ開発
 生成AIを使った開発、どれくらいしてますか:半分くらい
 状況は1年前とガラッと変わっている

 両方に使える
  新規アプリを生成AIで構築
  すべてのアプリをAIで再構築

・新規アプリケーション:AI駆動開発
 Github Copikot
 Copilotが46%のコーディングをサポート
 AIモデルを使い分けて使える

 皆さんに質問です
 7つのマイクロサービス、何日でできる?:1日でできる


・既存のアプリをモダナイズ
 Github Copilot agent App Modernization
 修正前と修正後のコードを出力:Keep.Undoを入れられる
 Java,Springのバージョンアップに使える

・AIエージェントを利用する上での注意点
 AIモデルは学習データが古い
 最新ライブラリ化は自分で
 モデル選択は必須
 自分でグラウンディングさせる
 これからはReview力は必要
 128エージェントを利用可能

・企業におけるAIアプリケーション開発
 JAVAでAIアプリ開発?
  AIの専門家である必要はない
  専門家でなくても実装可能
  SDK&ライブラリの活用
  AIの普及

 Java用のSDL、AIライブラリを使ってAIを組み込む
 たった2,3,ねん
 3年前 生成AI
 1~2年前 RAG
 半年前 FunctionCoding
 今 MCP


 AI対応アプリの開発アプローり
 RAGの活用
 ベクトルデータベース
 AIエージェント


・マイクロソフトもいろいろAI提供
 Teamsにリアルタイム翻訳
Azure AI Foundry Models


・でもどうやって実装すればよいかわからない
 AIアプリ開発時に使用するSDK&ライブラリ
 ・OpenAIオフィシャル JavaAPI Library
 ・LangChain4j
 ・SpringAI

 直接AI Chat Completionモデルを呼び出したり
 Embeddingモデルを利用(Kotlinで実装)
 Chat Completion by Open AI SDK Official

・Lang Chain4j
 JavaバージョンのLangChain
 大規模言語モデル
 だり3で画像を作る


・セキュリティ重要
 Microsoft Security
 Azure Resourcesへのアクセス:Passwordlessを推奨!
  Azureでロールを付与してアクセストークンを渡す認証認可
  →アクセストークンなら認証範囲をとどめられる

 Azure EntraIDを利用した認証・認可
 パスワードレスでOpenAI

 LangChain4j with Azure OpenAI Token Access
  トークンクレデンシャルを渡す

・MCP
 プラグイン可能なAIサービスを作る
 ⇔いままでのAIのアプリケーション
   :モノリシックな形で作る
     →メンテナンス、スケーラビリティ

 でも:バックエンドのMCPサーバー・・・動いてない!
  ブース見に来てね(^^;)

 Azure AI Foundry
 Github Models開発時に無料で利用可能

Microsoft buildで
Foundry Local
SLMモデルのローカル実行&実装が容易
Java on AzureDay 2025 オンライン6月17日

------------------------------------------------------

1件目の話を聞いて、
「なければ変えるな」のプロンプトが効果的
ときいて、最近の新人と似てるなあと思った
新人に対しても、「なにもするな」という
指示すること多いよね。

人間が劣化して、人工知能と同じレベルになりつつあるのかも!

2件目の話、
てらださん、帽子被っていたけど、
うん、年は隠せない・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

神様のパレードが各地でやってるけど、あれって生成AI

2025-05-26 07:08:37 | AI・BigData
だよね、こんなパレードをお祭りとかで、リアルでしているとは思えない

同じテーマを、他の人も

古事記まであるらしい・・・
こういうので、日本史勉強したかった・・・

どこかのサイトでやってくれないかな、生成AIで日本史!


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

東工大のpython早見表

2025-05-07 07:09:58 | AI・BigData
ここ
↓で紹介してた

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

生成AIを使ったサイバー攻撃、「プロンプトインジェクション」は、確かにヤバいかも!

2025-05-04 13:25:40 | AI・BigData
↓の動画、
【慶應大の授業】学生「騙されたと」見えない文字をファイルに仕込みAI誘導?悪用で情報流出の懸念も…対策は?|アベヒル
はじめの話は、学生に対して、
見えない文字で、おかしな回答をするように指示を出した問題文を
学生に宿題に出したら、
その宿題を生成AIでやった学生がいて、
見事にその学生はおかしな回答を提出してしまい、成績無効になった
というお話。これはまあ、教育上の話だから、問題はないんだけど
問題は、後半の、これがビジネスに使われた場合



↑の動画でははっきり言ってないけど、
こんな例が考えられる。

1.生成AIを使って、効果的なLPを作成するテンプレート、
  無料でダウンロードできます。と宣伝してて

2.そこからダウンロードすると、PDFでサンプルが載っていて
  このページを丸ごとコピーして、プロンプトとして生成AIに
  いれてね!と書いてあるんだけど、実は見えない文字で、
  どっかにデータを送るようなJavascriptも生成するように
  書かれていて

3.それを(見えない文字で書かれているので)知らずに全文を
  コピー、生成AIにプロンプトとして入れると

4.どっかにデータを送るJavascriptが入ったLPが作成される
  でも、そんなJavascript,普通の人は読まないので、そのまま
  LPとして、アップロードして公開すると・・・

5.どっかにデータを送るJavascriptが起動してしまう

という攻撃。

動画で、こういう攻撃を「プロンプトインジェクション」と
言っているけど、これは確かにヤバい。



これで甚大な被害を受けるくらいなら、
単位落とすくらい、どってことないよね、
え、そんなことない(^^;)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「上流から下流まで生成 AI が変革するシステム開発」の話をSEA Forumで聞いてきた!

2025-02-23 09:41:40 | AI・BigData
2月22日(猫の日)にヒカリエで
SEA Forum in Feb. 2025があって、
上流から下流まで生成 AI が変革するシステム開発
 の筆者、酒匂さんからその本の内容を踏まえたお話を聞いてきた!
ので、その内容をシェア

会場には大御所の玉井先生、落水先生とのそろい踏みで
(ソフトウェア業界を、J-POPで例えると、同じ部屋に
 北島三郎と五木ひろしがいる感じ…
 って、若い人には通じないよね、そんなかんじ。)
完全に場違いなところに来ているので、
目立たないように後ろの席で隠れてました
(初めて来た人の隣の席で)

以下、内容です



・自己紹介

・生成AIの現状
  Anthropic
  OpenAI
  Google/Deepmaind
  検索系

 推論型LLM
  OpenAI o1,o3,Gemini2.0 Thinking,DeepSeekR1
→COT(Chain of thought)戦略をあらかじめ組み込んでいる。
  これまでも、推論ステップをプロンプトとして与えることである種の推論は可能だった

 ローカルLLM
 →ローカルPCで実行(プライバシー、機密、コスト)
   Llama
   Mistral
   DeepSeek
   Qwen

・Whatの道具
   道具:
     Howの道具 :手順を示す(従来の道具)
     Whatの道具:なにを作るかを示す
                                             →品質に関する要求は低くなる?
   →品質保証は人間の責任

・直接的な利用法
  コーディングアシスト
    仕事を依頼
    仕事の仕様変更
      引数
      例外処理
    結果レビュー
   →人間が結果を確認する

  解析アシスト
   プログラミング知識がない人に、プログラムを説明する

  リバースエンジニアリング

・生成AIと自動化
 OpenAIのサイトでは、フルに使ったアプリケーションの例

※以下は最終システムに生成AIを使うという話ではなく、
 開発プロセスに生成AIを使うという話

・ソフトウェア開発のライフサイクル
 自分で開発方法論を定義
 どのように生成AIに手助けしてもらうか

 開発のライフサイクル
  アイデア
  業務制約:ビジネスモデルキャンバス
  システム制約:トレースインデックスダイヤグラム(拡張ユースケース)
  厳密な仕様:形式仕様
  設計と実装:コード生成

・ビジネスモデルキャンバスにChatGPTを使ってみた
    図書館
    商店街活性化
   2つの使い方
     生成AI→BMC
     生成AI→BMCプラン

・BMCからTiDへ
  TiDの定義を書いておく
  →ガイドラインを示してくる

・厳密な仕様の策定
  VDMにしてくれる
  図でも表現してくれる(マーメイド)
   →本に書いてある

・仕様から実装へ

 エージェント型開発環境
  Roo Code
  Cursor

・検証
2つある
 Validation
 Varification:正しくものを作っているか?

 レビューと生成AI

 テストと生成AI
 →Roo Codeは検証もやってくれる

 生成AIに質問できるようになった

・組織内知識共有 RAG(検索拡張生成)
  LLMが持っていない知識:3種のアプローチ
   フレームワークとAPI:LangChain
   ノーコード、ローコード環境 Dify
   RAG:NotebookLM→持っている知識からしか答えない  

・翻訳・伝達
 ModelからRepresentationへ
  モデルから対象言語を生成する

・作業の自動化
 Advanced Data Analysis

・プロンプトエンジニアリング
 必要?
  明瞭で具体的な指示を書く
  モデルに考える余裕を与える

  ほぼ無意味

  プロンプトを生成するツール:openAIのplayfround

  今、必要なプロンプト
    文脈ロールの設定
    行ってほしい内容
    出力形式
    詳細化への促し

・まとめ
  洞察の階層



次回のSEA フォーラムは,

2025年IEEEの会長に就任する
早稲田大学の鷲崎先生です!!
こりゃ、いかなきゃですよね!
(今なら会場にも行けそうな感じらしい。
 その場合、懇親会に出るならちゃんと参加表明してね!
 らしい。たぶん)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ChatGPTに確定申告を計算させて間違っても、脱税になっても、それは自己責任です!

2025-01-25 08:18:44 | AI・BigData
今回の学会誌「情報処理」の巻頭コラムは、示唆的であった。
Webでも見れるので、↓にリンクしておく
大事なところを引用しておく

新しもの好きの知人がChatGPTを試し,「便利ですよね! エクセルのマクロが書けないので書かせてみたら,ちゃんと使えるんです」とのこと.私は背筋が寒くなった.すかさず彼に,そのマクロが正しく動くかどうかを検証できる知識がないならば,そのマクロを使ってはいけないと忠告した.また,使った結果として被害を被ったり,他人に迷惑をかけたりしたら,ChatGPTのせいにはできない,つまり自分が責任を負うことを覚悟しなさいと言い渡した.彼がChatGPTに書かせたマクロは税金の計算式のようなので,マクロが間違っていて多く税金を払ったとしてもそれは授業料だと思えばいいし,少なく払って追徴課税されても人には迷惑はかけない. 


ChatGPTに頼めば、確定申告の計算をしてくれるかもしれない。
でも、それ、正しいかどうか、確かめあっれます?

「確かめられます!」って言いきれる人は、自分で確定申告できる人ですよね!だったら、自分で計算して、その数値を出しましょう。

問題は「確かめられない人」。わかんないからChatGPTにやらせるという発想だとおもうけど、そもそも税金に正解はない(というか、正解は複数ある。特例は適用してもしなくてもよい)。一番安くなるとかはあるけど、そこまでやると大変で、適当なところで留めておくというところもある。
正解がないうえに、間違っても計算式を追っていかないとわからない。
それを、「ばん!」とChatGPTが数値を出して来たら・・・怪しいわけで・・・

でも、そのChatGPTが出してきた数字を信じて申告して、
間違ってて膨大な追徴金を取られたとしても、
「いや悪いのは私じゃない、ChatGPTのせいだ!」
といって、税務署が納得してくれると思います?

もし、そんな言い訳が通用するとしたら、
同じ理屈で
「いや悪いのは私じゃない、税理士のせいだ!」
っていうのが通用することになりますが・・・

・・・これは通用しないんだよね!
(国税に、
「あんた、ここにはんこおしてるだろ!
 はんこおしてるっていうことは、
 自分が認めたってことだよ」
 といわれる)

P.S
国税は、生成AIで税金を計算しないように注意喚起しておいたほうがいいんじゃないかなあ?


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

機械学習によるAVのモザイクの外し方(案)-UPDATE 個人でできそう!

2024-12-14 09:41:07 | AI・BigData
以前、
という記事を書いた。そしてこの記事の前に
という記事を書いている。

この記事、たまに見られるんだけど、はじめの記事すら5年以上前なので、
かなり今の時代と違っている。今だと、個人でできそう!!

そこで、今日は、この記事をアップデートしてみたいと思う。



■概要
 ここでは、AVのモザイクの外し方になっているけど、もし、
AVから取得した静止画でモザイクが外れれば、
その静止画をあつめて動画にすることは、既存の動画ソフトでできるので、
問題は「静止画のモザイクの外し方」になる。

で、これを機械学習で行うには
(1)モザイクのかかっている「お●●こ」部分の写真を集める
(2)それを機械学習する
(3)モザイクのかかった静止画のモザイク部分を指定し、そこに
  上記 (2)で学習した機械学習を適用し、「お●●こ」を生成

という方法で行う。

これが、5年間で劇的に変わった



■変化(1)「お●●こ」部分の写真が集めやすくなった

 YouTubeで女性、男性の性器がモザイクなしで公開される事案が散見されるようになったこと。
 つまり、YouTubeで「お●●こ」部分の写真が集められるようになった。

 これは、国際化の意味がこの5年間でグローバルからダイバーシティに変わったことが影響していると思う。5年前は、グローバル化つまり、1つの基準でエロを判断していたため、下半身にモザイクをかけるというのが標準になっていたと思います。

 ところが、昨今はダイバーシティ、各国に合わせた基準になっています。この場合、ヨーロッパの基準はエロに対して緩和されていて、イギリスでは下半身モザイクなしで丸出しOKのようです!

 そのため、イギリスでは、まず「お●●こ」を見て女性を選び、次に「おっぱい」最後に「顔」をみて女性を選んでいくという「ネイキッドアトラクション」という番組が出てきました。この番組がYouTubeに公開され、女性、男性の性器丸出し、モザイクなしの動画が続々公開されるようになりました。詳しいURLとかは、↓のパンツ丸出しブログに書いてあります。

そして、ファッションショーなどでも、下半身も全裸、モザイクなしのYouTube動画が出てきました
(ちなみに、パンツ丸見えブログで↑の記事は2番目の人気記事)


一方、美容整形などでは、その必要上「お●●こ」そのものの動画がモザイクなしに出ています。

 このように「お●●こ」まるみえのYouTube動画が増えて来たので、その動画を表示して「お●●こ」が表示されたところで静止し、(Snapping Toolで)画像コピーすれば、「お●●こ」部分の写真が集められるようになりました。



■変化(2)機械学習ー画像さえあれば、SeaArtのLoraを使って、機械学習(転移学習)できる

 「変化(3)」のフライングになるけど、「静止画のモザイクを外す」には、
 動画生成AIのstable diffusionかSeaArtのimg2imgを使ってモザイク部分を、
 「自分で機械学習したモザイクなし動画」に入れ替えることで実現します。

 この動画生成AIに「自分で機械学習したモザイクなし動画」を適用させるには、転移学習を実行すればよいです。
 この転移学習は、stable diffusionやSeaArtでは、Loraと言われます。
 このLoraは、SeaArtでは、写真さえ用意すれば、その写真を貼り込むことによって、生成してくれます。

 なので、「変化(1)」で集めた画像を使ってSeaArtでLoraを作成すれば、「お●●こ」部分を機械学習できることになります。

 写真からSeaArtでどうやってLoraを作るかについては、↓の動画参照

SeaArtでLoRAを作成して自分好みのAI美女画像を作成する方法
 



■変化(3)「お●●こ」を生成ー動画生成AI

 これは、動画生成AI、stable diffusionかSeaArtを使えばいいことになります。 具体的には先ほど言いましたように

 動画生成AIのstable diffusionかSeaArtのimg2imgを使って
 モザイクがかかった静止画のモザイク部分を黒塗りし、
 Loraを適用してモザイク部分を生成すれば、
 モザイクなし動画が作れそう・・・

 ただ、SeaArtだと、そのような動画を生成してもエロ過ぎて表示してくれないかもしれない。

 そういう場合は、自宅PCにStable Diffusionをインストールし、SeaArtのLoraをStableDiffusionに適用して生成すればよさげ。そのLora変換方法は↓

SeaArtで作成したLoraをStable diffusionで使う方法



■まとめ

以上、この5年間の変化により、「静止画のモザイクの外し方」はこう変わった!

(1)YouTubeで下半身裸でモザイクがかかっていない動画、「お●●こ」丸出しの動画から、「お●●こ」部分の写真を切り出す。
 どのようなサイトから集めるのかは、上記「変化(1)参照」

(2)SeaArtで(1)の写真から機械学習(転移学習)したLora
 作成する。作成方法は上記「変化(2)」参照

(3)SeaArtまたはStableDeffusionでimg2imgを使って、
 ・もとのモザイクがかかった静止画を読み込む
 ・モザイク部分を黒塗りにする
 ・プロンプトに(2)で作ったLoraを指定する
     (ほかにもvaginaとか指定するのかも)
 ・生成!

これでできそう、できるかな??
まだ試していないので、(案)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

生成AIってやるのに、パスポートいるの?

2024-07-10 07:20:53 | AI・BigData

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Microsoftの生成AIはLLMだけじゃない話を聴いてきた

2024-06-23 09:05:25 | AI・BigData
JJUG CCCで「2024年AIを利用したJava開発の最新動向」を寺田さんから聴いてきた!

寺田さんは初め、どんな話をしようか考えてました。

というのも、6月5日にJava On Azure Day AIでJavaを使ったAI話はしてきたので、ここでやっても・・・ということで、そういうのに関心がある人は、その動画を見てくださいと言ってました。
で、その動画のQRコードを掲載したんだけど、自分ケータイしまってたので、それを読み取れませんでした。
ま、後で調べればわかるだろうと思ってたのですが・・・
・・・よくわからん、↓これかなあ?



メモは、↓のかんじ




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ChatGPTにブログ書かせてみたー最後に衝撃的なオチ!

2024-04-30 06:52:21 | AI・BigData
多分、気づいたと思うんだけど、昨日の↓のブログ、
ChatGPTに以下のプロンプトを入れて書かせたものです(太字がプロンプト)。

ブログの記事を、以下の条件で書いてほしい。(1)日本語で書いてください(2)今日は何の日かについていくつか挙げて、その中で、なにかを掘り下げて書いてください。(3)もし、最近、気を付けたほうがいいことがあれば、それも付け足してください。 以上

出来は↑のとおり

使えそうなので、これから、ChatGPTに書かせることもあると思います
ので、よろしくお願いします。

P.S 今、もしかして・・・と思って、環境の日を検索したら・・・
環境の日(かんきょうのひ、World Environment Day)は、6月5日を環境保全に対する関心を高め啓発活動を図る日として制定された、国連による国際的な記念日である。世界環境デー(せかいかんきょうデー)とも。 

(太字部分は上記Wikipediaより引用。赤字は自分がつけた)

衝撃的なオチ!
やっぱ、ChatGPTに書かせるのは、やめときます・・・

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする