import gradio as gr
import openai
import requests
import os
import fileinput
from dotenv import load_dotenv
title="Sady-AI-test-embedding"
inputs_label="質問を入力してください。"
outputs_label="SadyAIの回答"
description="あなたの質問にAIが回答します。期待した回答が得られない場合、質問を変えてみてください。"
article = """
- 楽しんでいただけたら、Likeのクリックをお願いします。
リリースノート
- 2023-08-08 ver1.0
- 2023-08-11 ver1.1
注意事項
- 当サービスでは、2023/6/14にリリースされたOpenAI社のChatGPT APIのgpt-3.5-turbo-16kを使用しております。
- 当サービスで生成されたコンテンツは、OpenAI が提供する人工知能によるものであり、当サービスやOpenAI がその正確性や信頼性を保証するものではありません。
- OpenAI の利用規約に従い、データ保持しない方針です(ただし諸般の事情によっては変更する可能性はございます)。
- 当サービスで生成されたコンテンツは事実確認をした上で、コンテンツ生成者およびコンテンツ利用者の責任において利用してください。
- 当サービスでの使用により発生したいかなる損害についても、当社は一切の責任を負いません。
- 当サービスはβ版のため、予告なくサービスを終了する場合がございます。
"""
# 環境変数の設定
load_dotenv()
openai_api_key = os.getenv('OPENAI_API_KEY')
# ログレベルの設定
# import logging
# import sys
# logging.basicConfig(stream=sys.stdout, level=logging.ERROR, force=True)
# ドキュメントの読み込み
from llama_index import SimpleDirectoryReader
documents = SimpleDirectoryReader("data-sady").load_data()
# インデックスの作成
# from llama_index import VectorStoreIndex
# index = VectorStoreIndex.from_documents(documents)
# from llama_index import VectorStoreIndex, ServiceContext, LLMPredictor
# from langchain.chat_models import ChatOpenAI
# LLMPredictorの準備
# llm_predictor = LLMPredictor(llm=ChatOpenAI(
# temperature=0,
# model_name="gpt-3.5-turbo-16k"
# ))
# faissのインデックスの作成
import faiss
faiss_index = faiss.IndexFlatL2(1536)
from llama_index import VectorStoreIndex, StorageContext
from llama_index.vector_stores.faiss import FaissVectorStore
# インデックスの作成
vector_store = FaissVectorStore(faiss_index=faiss_index)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(
documents,
storage_context=storage_context
)
# ServiceContextの準備
from llama_index import ServiceContext
from langchain.chat_models import ChatOpenAI
from llama_index import VectorStoreIndex
service_context = ServiceContext.from_defaults(llm=ChatOpenAI(
temperature=0,
# model_name="gpt-3.5-turbo-1106"
model_name="gpt-4-1106-preview")
)
# Indexの作成
index = VectorStoreIndex.from_documents(
documents,
service_context=service_context
)
# クエリエンジンの作成
query_engine = index.as_query_engine()
# インデックスの保存
# index.storage_context.persist()
# from llama_index import StorageContext, load_index_from_storage
# インデックスの読み込み
# storage_context = StorageContext.from_defaults(persist_dir="./storage")
# index = load_index_from_storage(storage_context)
# ユーザーの入力に応じて生成されたテキストをgradioインターフェースに出力する
def run_query(input):
return query_engine.query(input)
def main():
iface = gr.Interface(fn=run_query,
inputs=gr.Textbox(label=inputs_label),
outputs=gr.Textbox(label=outputs_label),
title=title,
description=description,
article=article,
allow_flagging='never'
)
iface.launch()
if __name__ == '__main__':
main()