Azure OpenAIのGPT-4 Turboで文章から略語を抽出すーる（Python、LangChain）

# はじめに
[がちもとさんアドベントカレンダー](https://qiita.com/advent-calendar/2023/gachimoto3)17日目の記事です。
今日は、ChatGPT（GPT-4-Turbo）に文章から略語を抽出してもらいました。

# 開発環境
- Windows 10 PC
- Python 3.11

# 導入

1．ライブラリのインストール
pip install langchain

2．Azure OpenAI ServiceからGPT-4 Turboのモデルをデプロイ（デプロイ名はgpt-4）

3．プログラムを作成（OPENAI_API_BASEは適宜変更ください）

~~~abbreviation2fullname.py
import os

os.environ[
    "OPENAI_API_BASE"
] = "https://s-fujimoto-westus.openai.azure.com/openai/deployments/gpt-4/"
os.environ["OPENAI_API_KEY"] = "<INSERT-YOUR-API-KEY>"

from langchain.chat_models import AzureChatOpenAI
from langchain.chains.llm import LLMChain
from langchain.prompts import PromptTemplate

llm = AzureChatOpenAI(
    temperature=0,
    openai_api_version="2023-12-01-preview",
)

prompt_template = "{input}"
chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(prompt_template))

conversation = """
Q: メリットは何ですか？
A: デシメーションを行ったり、視覚効果の品質を犠牲にしたりすることなく、MR でアーキテクチャ、エンジニアリング、設計の各モデルを操作できます。
より忠実度の高い 3D モデルを使用すると、次のことを実現できます。
よりスマートで、より迅速な意思決定
設計の効率化
主要な関係者の教育と鼓舞
Q: どのようなユーザーを対象としていますか？
A: 高解像度の 3D コンテンツを使用する必要がある方ならどなたでも、ARR に価値を見出すことができます。
工業プラント管理、複雑な資産 (トラック エンジンなど) の設計レビュー、手術前の手術計画など、あらゆる詳細が重要となるシナリオで、3D 視覚化の重要性がますます高まっています。
Q: 他のソリューションとの違いは何ですか？
A: 従来、テザリングされていないでバイスで 3D コンテンツを表示するには、デシメーション (モデルの圧縮とポリゴンの除去) が必要でした。その結果、ビジネス上および設計上の重要な意思決定に必要となる重要な詳細が失われる可能性があります。ARR は、コンテンツをクラウドでレンダリングし、リアルタイムでデバイスにストリーミングするので、詳細が一切損なわれることなく、品質に妥協せずに、高品質の対話型 3D モデルを使用できます。
Q: ARRではどのようなデバイスを使用できますか？
ARR では、現在 HoloLens 2 と Windows 10 の PC がサポートされています。
"""

results = chain(f"{conversation}から略語をすべて抽出してください。")
# results = chain(f"{conversation}から略語を正式名称に変換して文章を書き直してください。")
print("あなた：", results["input"])
print("ボット：", results["text"])
~~~



<details><summary>コード解説</summary><div>

1．os.environ を使用して、OpenAIのAPIキーとベースURLを設定しています。これにより、OpenAIサービスへの接続が確立されます。

2．AzureChatOpenAI クラスのインスタンスを作成しています。これは、AzureのOpenAIサービスを介して自然言語モデルにアクセスするための設定を管理します。

3．プロンプトテンプレートとして使われるテキストを設定しています。このテンプレートは、ユーザーからの質問を受け取り、モデルに対して応答を生成する際に使用されます。

4．LLMChain クラスのインスタンスを作成し、前のステップで設定したモデルとテンプレートを使用して、チャットボットチェーンを構築しています。

5．事前に定義された対話を変数 conversation に格納しています。この対話に対して略語を抽出するタスクを実行します。

6．chain オブジェクトを使用して、ユーザーの対話に基づいて略語を抽出するためのコマンドを実行し、結果を取得します。

7．最後に、抽出された略語に関する情報を表示します。
</div></details>


# 実行結果
## 略語を抽出

### 入力
Q: メリットは何ですか？
A: デシメーションを行ったり、視覚効果の品質を犠牲にしたりすることなく、MR でアーキテクチャ、 エンジニアリング、設計の各モデルを操作できます。
より忠実度の高い 3D モデルを使用すると、次のことを実現できます。
よりスマートで、より迅速な意思決定
設計の効率化
主要な関係者の教育と鼓舞

Q: どのようなユーザーを対象としていますか？
A: 高解像度の 3D コンテンツを使用する必要がある方ならどなたでも、ARR に価値を見出すことができます。
工業プラント管理、複雑な資産 (トラック エンジンなど) の設計レビュー、手術前の手術計画など、あらゆる詳細が重要となるシナリオで、3D 視覚化の重要性がますます高まっています。

Q: 他のソリューションとの違いは何ですか？
A: 従来、テザリングされていないでバイスで 3D コンテンツを表示するには、デシメーション (モデルの圧縮とポリゴンの除去) が必要でした。その結果、ビジネス上および設計上の重要な意思決定に必要 となる重要な詳細が失われる可能性があります。ARR は、コンテンツをクラウドでレンダリングし、リ アルタイムでデバイスにストリーミングするので、詳細が一切損なわれることなく、品質に妥協せずに 、高品質の対話型 3D モデルを使用できます。

Q: ARRではどのようなデバイスを使用できますか？
ARR では、現在 HoloLens 2 と Windows 10 の PC がサポートされています。

から略語をすべて抽出してください。

### 出力
以下は、質問文から抽出した略語です：
- MR: Mixed Reality（複合現実）
- ARR: Azure Remote Rendering（アジュール リモート レンダリング）
- 3D: Three-Dimensional（三次元）
- PC: Personal Computer（パーソナルコンピュータ）

## 略語を正式名称に変換
### 入力
***（同上）*** から略語を正式名称に変換して文章を書き直してください。

### 出力
Q: メリットは何ですか？
A: Mixed Reality（MR）を使用することで、デシメーションを行うことなく、また視覚効果の品質を犠 牲にすることなく、建築、エンジニアリング、設計の各モデルを操作することができます。より高い忠 実度の3Dモデルを使用することで、よりスマートで迅速な意思決定、設計の効率化、主要な関係者の教 育と鼓舞を実現することができます。

Q: どのようなユーザーを対象としていますか？
A: 高解像度の3Dコンテンツを使用する必要がある方であれば、Azure Remote Rendering（ARR）に価値 を見出すことができます。工業プラントの管理、複雑な資産（例えばトラックエンジン）の設計レビュ ー、手術前の手術計画など、細部が重要となるあらゆるシナリオで、3D視覚化の重要性が高まっていま す。

Q: 他のソリューションとの違いは何ですか？
A: 従来、テザリングされていないデバイスで3Dコンテンツを表示するには、デシメーション（モデルの圧縮とポリゴンの除去）が必要でした。その結果、ビジネス上および設計上の重要な意思決定に必要な 詳細が失われる可能性がありました。Azure Remote Renderingは、コンテンツをクラウドでレンダリン グし、リアルタイムでデバイスにストリーミングするため、詳細が一切損なわれることなく、品質に妥 協することなく、高品質の対話型3Dモデルを使用できます。

Q: Azure Remote Renderingではどのようなデバイスを使用できますか？
A: Azure Remote Renderingでは、現在Microsoft HoloLens 2とWindows 10のパーソナルコンピュータがサポートされています。

-----

ARRのことをAzure Remote Renderingと知っていました。驚きです。
お疲れ様でした。