import gradio as gr from openai import OpenAI import os import openai # client = OpenAI(api_key="sk-9hWFK-_5UQgzJMqT44ng72sZbKQXVvVXeVd11yoER3T3BlbkFJmd2HDc-N7CaH6PDRCYZfqe8hkT7DnxZNwcVkf3eeUA") openai.api_key ="sk-9hWFK-_5UQgzJMqT44ng72sZbKQXVvVXeVd11yoER3T3BlbkFJmd2HDc-N7CaH6PDRCYZfqe8hkT7DnxZNwcVkf3eeUA" import gradio as gr # from langchain.chat_models import ChatOpenAI # from langchain.memory import ConversationBufferMemory # from langchain.chains import ConversationChain # from langchain.schema import AIMessage, HumanMessage, SystemMessage # from langchain.document_loaders import TextLoader # from langchain.document_loaders import PyPDFLoader #from langchain_community.chat_models import ChatOpenAI from langchain_openai import ChatOpenAI # from langchain_community.memory import ConversationBufferMemory from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain from langchain.schema import AIMessage, HumanMessage, SystemMessage from langchain_community.document_loaders import TextLoader from langchain_community.document_loaders import PyPDFLoader from langchain_core.runnables import RunnableWithMessageHistory # LLM과 메모리 초기화 llm = ChatOpenAI(temperature=0.0, model='gpt-3.5-turbo', openai_api_key="sk-9hWFK-_5UQgzJMqT44ng72sZbKQXVvVXeVd11yoER3T3BlbkFJmd2HDc-N7CaH6PDRCYZfqe8hkT7DnxZNwcVkf3eeUA") memory = ConversationBufferMemory() #memory = RunnableWithMessageHistory() conversation = ConversationChain( llm=llm, memory=memory) # 세션 히스토리 정의 def get_session_history(): return [] # 세션 히스토리를 관리하는 로직을 구현할 수 있습니다. # 메모리 및 대화 초기화 # memory = RunnableWithMessageHistory(runnable=llm, get_session_history=get_session_history) # conversation = RunnableWithMessageHistory(llm=llm, memory=memory) # 상담봇 - 채팅 및 답변 def counseling_bot_chat(message, chat_history): if message == "": return "", chat_history else: result_message = "" if len(chat_history) <= 1: messages = [ SystemMessage(content="당신은 헤이마트의 상담원입니다. 마트 상품과 관련되지 않은 질문에는 정중히 거절하세요."), AIMessage(content="안녕하세요, 헤이마트입니다. 상담을 도와드리겠습니다."), HumanMessage(content=message) ] result_message = conversation.predict(input=messages) else: result_message = conversation.predict(input=message) chat_history.append([message, result_message]) return "", chat_history # 상담봇 - 되돌리기 def counseling_bot_undo(chat_history): if len(chat_history) > 1: chat_history.pop() return chat_history # 상담봇 - 초기화 def counseling_bot_reset(chat_history): chat_history = [[None, "안녕하세요, 헤이마트입니다. 상담을 도와드리겠습니다."]] return chat_history # 번역봇 def translate_bot(output_conditions, output_language, input_text): if input_text == "": return "" else: if output_conditions == "": output_conditions = "" else: output_conditions = "번역할 때의 조건은 다음과 같습니다. " + output_conditions completion = client.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "당신은 번역가입니다. 입력한 언어를 다른 설명없이 곧바로 {0}로 번역해서 알려주세요. 번역이 불가능한 언어라면 번역이 불가능하다고 말한 후 그 이유를 설명해주세요. {1}".format(output_language, output_conditions)}, {"role": "user", "content": input_text} ]) return completion.choices[0].message.content # 번역봇 - Text업로드 def translate_bot_Text_upload(files): loader = TextLoader(files) document = loader.load() return document[0].page_content # 번역봇 - PDF업로드 def translate_bot_PDF_upload(files): loader = PyPDFLoader(files) pages = loader.load_and_split() return pages[0].page_content # 소설봇 def novel_bot(model, temperature, detail): completion = client.chat.completions.create( model=model, temperature=temperature, messages=[ {"role": "system", "content": "당신은 소설가입니다. 요청하는 조건에 맞춰 소설을 작성해주세요."}, {"role": "user", "content": detail} ]) return completion.choices[0].message.content # 레이아웃 with gr.Blocks(theme=gr.themes.Default()) as app: with gr.Tab("상담봇"): #1 gr.Markdown( value=""" #