Azure Openai には非対応
- ModelにOpenai APIで使用したいモデル名を指定してください
- Tempratureにはモデルの創造性を指定してください
- API KEYにはOpenai APIで発行した自分のAPIを指定してください
- 短期記憶をStreamingLLMを参考に実装しています Efficient Streaming Language Models with Attention Sinks
- Ctrl+Enterで送信
- Enterで改行
- 背景色の切り替え機能
- 使用トークン数の出力
- 選択した文章の修正案をGPT3.5で生成します
- 文章自体を生成し、誤字脱字のチェックではないです
- 生成される文章は選択した範囲の文字数からあまり変わらない文字数です
Text Correctionボタンをクリックし、修正したい文章ファイルをファイル選択かファイルをドラッグ&ドロップすることでブラウザ上に文章を表示できます。 修正したい箇所をカーソルで選択し、表示される枠にチェックを入れることで修正案をGPT3.5が3つ表示します。変更したい文章がある場合はその文章をクリックすることで置き換えることができ、細かい手動での訂正も可能です。 修正した文章は下のSave Textから保存することができます。
- From Sparse to Dense: GPT-4 Summarization with Chain of Density Prompting
- ABScribe: Rapid Exploration of Multiple Writing Variations in Human-AI Co-Writing Tasks using Large Language Models
Making Recommendationsにチェックを入れると そのあとに入力したメッセージの回答の次のメッセージとしておすすめの質問をいくつか生成します。
推奨質問はクリックすると自動で入力欄に入力されます。
Open interpreterにチェックを入れると そのあとに入力したメッセージの回答として最大3回APIを使い、ステップバイステップで主にコードを生成します
Enable Recommend Bing Searchにチェックを入れると そのあとに入力したメッセージの回答とそれに関連するBing検索結果を参考に、次におすすめの質問をいくつか生成します。
推奨質問はクリックすると自動で入力欄に入力されます。
Making Wiki Searchにチェックを入れることで GPTの応答の結果を単語に要約し、要約した単語を検索して結果を要約して表示します。
クリックすると自動で入力欄に入力されます
Bing Search APIを使用して、 Enable Bing Searchにチェックを入れることで GPTの応答の結果を単語に要約し、要約した単語を検索して結果を要約して表示します。
クリックすると自動で入力欄に入力されます
事前にAzure Blob Storageに文章と対応する文章を埋め込みベクトルに変換したデータを使い ユーザーの問い合わせと類似する文章をAzure Blob Storage から検索して表示します。
cos類似度が0.8を超えないものは検索対象にせずその中で最大3件の文章を表示します。 もし該当する文章が無ければ「類似文章が見当たりませんでした。」と回答します。
from tqdm import tqdm
from glob import glob
import pandas as pd
import openai
from openai.embeddings_utils import get_embedding, cosine_similarity
import os
from PyPDF2 import PdfReader
import pdfplumber
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
# OpenAI settings
openai.api_key = "<your-openai-api>"
# Azure Storage settings
connection_string = "<your-azure-storage-connection-string>"
container_name = "<your-container-name>"
# コンテナが存在しない場合にのみコンテナを作成します。
try:
blob_service_client.create_container(container_name)
print(f"Container '{container_name}' created.")
except Exception as e:
print(f"Container '{container_name}' already exists.")
Container '<your-container-name>' already exists.
# Get the list of files to convert
files = glob('./data/*')
for file in files:
# Open the PDF file
pdf_reader = PdfReader(file)
# Extract the file name from the file path
file_name = os.path.basename(file)
# Create an empty DataFrame to store the text and its embedding
df = pd.DataFrame(columns=['text', 'embedding', 'page_num'])
# Loop through each page in the PDF
for page_num in tqdm(range(len(pdf_reader.pages))):
# Extract the text from the page
with pdfplumber.open(file) as pdf:
page = pdf.pages[page_num]
text = page.extract_text()
# Convert the text to an embedding vector using OpenAI's API
response = openai.Embedding.create(input=text, model="text-embedding-ada-002")
embedding_vector = response['data'][0]['embedding']
# Add the text, its embedding, and the page number to the DataFrame
new_df = pd.DataFrame({'text': [text], 'embedding': [embedding_vector], 'page_num': [page_num]})
df = pd.concat([df, new_df], ignore_index=True)
# Convert the DataFrame to a CSV string
csv_string = df.to_csv(index=False)
# Create a blob client
blob_client = blob_service_client.get_blob_client(container_name, f'{file_name}.csv')
# Upload the CSV data to Azure Storage
# blob_client.upload_blob(csv_string, blob_type="BlockBlob")
blob_client.upload_blob(csv_string, blob_type="BlockBlob", overwrite=True)
100%|██████████| 24/24 [00:10<00:00, 2.33it/s]