import os from openai import OpenAI import time import subprocess gpt_api_key = os.environ['OPENAI_API_KEY'] sys_prompt = os.environ['SYSTEM_PROMPT'] client = OpenAI(api_key=gpt_api_key) model_name = "ft:gpt-3.5-turbo-1106:personal::8oksosTP" ###함수 #어시스턴트 응답 생성 함수 def assistant_choice(assistantid,text): # assistant retrieve 불러오기 assistant = client.beta.assistants.retrieve(assistantid) # message thread 만들기 thread = client.beta.threads.create() # message 추가하기 message = client.beta.threads.messages.create( thread_id=thread.id, role="user", content=text, ) # 실행하기 run = client.beta.threads.runs.create( thread_id=thread.id, assistant_id=assistant.id, ) # 기다리기 print("run을 실행합니다.") while True: if run.status == "completed": break run = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id) # print(run) # print("실행 중...") time.sleep(5) # 결과 출력하기 messages = client.beta.threads.messages.list(thread_id=thread.id) gpt_answer = messages.data[0].content[0].text.value return gpt_answer #gpt응답 생성 함수 def fine_function_gpt(state, state_chatbot, text): if text=="": return state, state_chatbot, state_chatbot messages = state + [{'role': 'user','content': text}] res =client.chat.completions.create( model=model_name, messages=messages, temperature=0.6, top_p=1, frequency_penalty=0, presence_penalty=0 ) msg = res.choices[0].message.content print(msg) if msg == "커튼 구매옵션": msg = assistant_choice("asst_ni23TayvHjxOarAxVTDODm91",text) elif msg == "블라인드 구매옵션": msg = assistant_choice("asst_qc85Yh4LjKqWMxlDakHcXsFs",text) new_state = [{'role': 'user','content': text}, {'role': 'assistant','content': msg}] state = state + new_state # 내부적으로 기능 state_chatbot = state_chatbot + [(text, msg)] # 화면에 보이는 기능 print(state) return state, state_chatbot, state_chatbot #상담 시작 버튼 def start_def(m): if m == []: return [],[],[("상담을 진행할 제품을 선택해주세요!","")] else: text=f"{m} 문의드립니다." message = [{'role': 'system','content': sys_prompt}, {'role': 'user','content': text}, {'role': 'assistant','content': "안녕하세요 고객님~ 무엇을 도와드릴까요?"} ] state_chatbot = [("...", "안녕하세요. 고객님! 무엇을 도와드릴까요?")] # 튜플 return message,state_chatbot,state_chatbot with gr.Blocks(theme='JohnSmith9982/small_and_pretty') as demo: state = gr.State([]) #gpt 호출 시 사용하는 message state_chatbot = gr.State([]) #gr.chatbot의 상태를 업로드하는 채팅기록 with gr.Row(): gr.HTML("""
마리하우스 챗봇
확인
다크모드 전환