import os import pymssql import pandas as pd from langchain.vectorstores import Chroma from langchain.embeddings import OpenAIEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.llms import OpenAI from langchain.chat_models import ChatOpenAI from langchain.chains import RetrievalQA from langchain.document_loaders import TextLoader from langchain.document_loaders import DirectoryLoader from langchain.document_loaders import CSVLoader from langchain.memory import ConversationBufferMemory def Loading(): return "데이터 로딩 중..." def LoadData(openai_key): if openai_key is not None: persist_directory = 'realdb_LLM' embedding = OpenAIEmbeddings() vectordb = Chroma( persist_directory=persist_directory, embedding_function=embedding ) global retriever retriever = vectordb.as_retriever(search_kwargs={"k": 1}) return "준비 완료" else: return "사용하시는 API Key를 입력하여 주시기 바랍니다." def process_llm_response(llm_response): print(llm_response['result']) print('\n\nSources:') for source in llm_response["source_documents"]: print(source.metadata['source']) # 챗봇의 답변을 처리하는 함수 def respond(message, chat_history, temperature): try: qa_chain = RetrievalQA.from_chain_type( llm=OpenAI(temperature=0.4), # llm=OpenAI(temperature=0.4), # llm=ChatOpenAI(temperature=0), chain_type="stuff", retriever=retriever ) result = qa_chain(message) bot_message = result['result'] # bot_message += '\n\n' + ' [출처]' # # 답변의 출처를 표기 # for i, doc in enumerate(result['source_documents']): # bot_message += str(i+1) + '. ' + doc.metadata['source'] + ' ' # 채팅 기록에 사용자의 메시지와 봇의 응답을 추가. chat_history.append((message, bot_message)) return "", chat_history except: chat_history.append(("", "API Key 입력 요망")) return " ", chat_history # return "", chat_history import gradio as gr # 챗봇 설명 title = """
OpenAI LLM를 이용한 Chatbot (Similarity)