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 = """
リリースノート
注意事項
""" # 環境変数の設定 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()