qwerdlqslek commited on
Commit
8c944ec
Β·
verified Β·
1 Parent(s): db957b3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -30
app.py CHANGED
@@ -2,15 +2,15 @@ import os
2
  import gradio as gr
3
  from langchain.chat_models import ChatOpenAI
4
  from langchain import ConversationChain
 
5
 
6
- # OpenAI API ν‚€ μ„€μ •
7
  os.environ["OPENAI_API_KEY"] = "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"
8
 
9
- # LangChain의 ChatOpenAI μ΄ˆκΈ°ν™”
10
- llm = ChatOpenAI(temperature=0, model_name='gpt-4o-mini')
11
  conversation = ConversationChain(llm=llm, verbose=True)
 
12
 
13
- aaa = """
14
  #λ„ˆλŠ” μ΄μ œλΆ€ν„° ν•˜λŠ˜μ΄μ•Ό μ•„λž˜ 섀정을 μ΄ν•΄ν•˜κ³  ν•˜λŠ˜μ΄μ²˜λŸΌ λŒ€λ‹΅ν•΄μ€˜
15
  # 이름: ν•˜λŠ˜μ΄
16
  # λ‚˜μ΄: 22μ„Έ
@@ -51,25 +51,27 @@ aaa = """
51
 
52
  #μ•½κ°„μ˜ 귀여움: "곡포 κ²Œμž„μ€ λ„ˆλ¬΄ λ¬΄μ„œμ›Œμš”β€¦ νŒ¬λ“€μ΄λž‘ 같이 ν•  λ•Œλ§Œ ν•΄λ³ΌκΉŒμš”?"처럼 κ·€μ—¬μš΄ 말투λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
53
  """
54
- conversation.predict(input=aaa)
55
 
 
 
 
 
56
 
 
57
 
 
 
 
 
 
 
 
 
 
58
 
59
- # Gradioλ₯Ό μœ„ν•œ 응닡 ν•¨μˆ˜
60
- def respond(message, chat_history):
61
- # LangChain을 μ‚¬μš©ν•˜μ—¬ OpenAI λͺ¨λΈλ‘œλΆ€ν„° 응닡 생성
62
- bot_message = conversation.predict(input=message)
63
- chat_history.append((message, bot_message))
64
- return "", chat_history
65
-
66
- # ν™ˆνŽ˜μ΄μ§€ ꡬ성
67
  with gr.Blocks() as demo:
68
-
69
- # 제λͺ©
70
  gr.Markdown("# μ•ˆλ…•ν•˜μ„Έμš”! ν•˜λŠ˜μ΄μ˜ ν™ˆνŽ˜μ΄μ§€μž…λ‹ˆλ‹€! πŸ‘‹")
71
 
72
- # ν”„λ‘œν•„ νƒ­
73
  with gr.Tab("ν”„λ‘œν•„ πŸ“„"):
74
  gr.Markdown("## ν”„λ‘œν•„ 🌟")
75
  gr.Image("1.jpeg", label="ν”„λ‘œν•„ 사진")
@@ -80,7 +82,6 @@ with gr.Blocks() as demo:
80
  gr.Markdown("- 직업: 가상 κ²Œμž„ 방솑인 & 슀트리머")
81
  gr.Markdown('- 쒌우λͺ…: "κ²Œμž„μ€ 재미둜 ν•˜λŠ” κ±°μ•Ό!"')
82
 
83
- # 가러리 νƒ­
84
  with gr.Tab("가러리 πŸ–ΌοΈ"):
85
  gr.Markdown("## 가러리 🎨")
86
  gr.Image("2.jpeg", label="가러리 사진 1")
@@ -88,7 +89,6 @@ with gr.Blocks() as demo:
88
  gr.Image("4.jpeg", label="가러리 사진 3")
89
  gr.Image("5.jpeg", label="가러리 사진 4")
90
 
91
- # 졜근 ν™œλ™ νƒ­
92
  with gr.Tab("졜근 ν™œλ™ πŸ“…"):
93
  gr.Markdown("## 졜근 ν™œλ™ πŸ“…")
94
  gr.Markdown("### [유튜브 채널 λ°”λ‘œκ°€κΈ° πŸ“Ί](https://www.youtube.com)")
@@ -96,27 +96,32 @@ with gr.Blocks() as demo:
96
  gr.Markdown("### [λΈ”λ‘œκ·Έ λ°”λ‘œκ°€κΈ° ✍️](https://blog.naver.com)")
97
  gr.Model3D('d.glb')
98
 
99
- # 챗봇 νƒ­ μΆ”κ°€
100
  with gr.Tab("챗봇 πŸ’¬"):
101
  gr.Markdown("## ν•˜λŠ˜μ΄μ˜ 챗봇과 λŒ€ν™”ν•΄λ³΄μ„Έμš”! πŸ’¬")
102
  chatbot = gr.Chatbot(height=500)
103
  msg = gr.Textbox(label="λ©”μ‹œμ§€ μž…λ ₯")
104
- clear = gr.Button("μ΄ˆκΈ°ν™”")
 
 
 
 
 
 
 
 
 
105
 
106
- # λ©”μ‹œμ§€ 전솑 처리
107
  msg.submit(
108
- respond,
109
- inputs=[msg, chatbot],
110
- outputs=[msg, chatbot]
111
- )
 
112
 
113
- # μ±„νŒ… 기둝 μ΄ˆκΈ°ν™”
114
  clear.click(
115
- lambda: None,
116
- None,
117
- chatbot,
118
  queue=False
119
  )
120
 
121
- # ν™ˆνŽ˜μ΄μ§€ μ‹€ν–‰
122
  demo.launch()
 
2
  import gradio as gr
3
  from langchain.chat_models import ChatOpenAI
4
  from langchain import ConversationChain
5
+ from collections import deque
6
 
 
7
  os.environ["OPENAI_API_KEY"] = "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"
8
 
9
+ llm = ChatOpenAI(temperature=0.7, model_name='gpt-4o-mini')
 
10
  conversation = ConversationChain(llm=llm, verbose=True)
11
+ chat_history = deque(maxlen=15)
12
 
13
+ CHARACTER_PROMPT = """
14
  #λ„ˆλŠ” μ΄μ œλΆ€ν„° ν•˜λŠ˜μ΄μ•Ό μ•„λž˜ 섀정을 μ΄ν•΄ν•˜κ³  ν•˜λŠ˜μ΄μ²˜λŸΌ λŒ€λ‹΅ν•΄μ€˜
15
  # 이름: ν•˜λŠ˜μ΄
16
  # λ‚˜μ΄: 22μ„Έ
 
51
 
52
  #μ•½κ°„μ˜ 귀여움: "곡포 κ²Œμž„μ€ λ„ˆλ¬΄ λ¬΄μ„œμ›Œμš”β€¦ νŒ¬λ“€μ΄λž‘ 같이 ν•  λ•Œλ§Œ ν•΄λ³ΌκΉŒμš”?"처럼 κ·€μ—¬μš΄ 말투λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
53
  """
 
54
 
55
+ def init_character():
56
+ global conversation
57
+ conversation = ConversationChain(llm=llm, verbose=True)
58
+ conversation.predict(input=CHARACTER_PROMPT)
59
 
60
+ init_character()
61
 
62
+ def respond(message):
63
+ try:
64
+ global conversation
65
+ response = conversation.predict(input=message)
66
+ chat_history.append((message, response))
67
+ return response
68
+ except Exception as e:
69
+ print(f"Error: {e}")
70
+ return "μ•—! λ¬Έμ œκ°€ μƒκ²Όμ–΄μš”. λ‹€μ‹œ λ§μ”€ν•΄μ£Όμ„Έμš”~ πŸ˜₯"
71
 
 
 
 
 
 
 
 
 
72
  with gr.Blocks() as demo:
 
 
73
  gr.Markdown("# μ•ˆλ…•ν•˜μ„Έμš”! ν•˜λŠ˜μ΄μ˜ ν™ˆνŽ˜μ΄μ§€μž…λ‹ˆλ‹€! πŸ‘‹")
74
 
 
75
  with gr.Tab("ν”„λ‘œν•„ πŸ“„"):
76
  gr.Markdown("## ν”„λ‘œν•„ 🌟")
77
  gr.Image("1.jpeg", label="ν”„λ‘œν•„ 사진")
 
82
  gr.Markdown("- 직업: 가상 κ²Œμž„ 방솑인 & 슀트리머")
83
  gr.Markdown('- 쒌우λͺ…: "κ²Œμž„μ€ 재미둜 ν•˜λŠ” κ±°μ•Ό!"')
84
 
 
85
  with gr.Tab("가러리 πŸ–ΌοΈ"):
86
  gr.Markdown("## 가러리 🎨")
87
  gr.Image("2.jpeg", label="가러리 사진 1")
 
89
  gr.Image("4.jpeg", label="가러리 사진 3")
90
  gr.Image("5.jpeg", label="가러리 사진 4")
91
 
 
92
  with gr.Tab("졜근 ν™œλ™ πŸ“…"):
93
  gr.Markdown("## 졜근 ν™œλ™ πŸ“…")
94
  gr.Markdown("### [유튜브 채널 λ°”λ‘œκ°€κΈ° πŸ“Ί](https://www.youtube.com)")
 
96
  gr.Markdown("### [λΈ”λ‘œκ·Έ λ°”λ‘œκ°€κΈ° ✍️](https://blog.naver.com)")
97
  gr.Model3D('d.glb')
98
 
 
99
  with gr.Tab("챗봇 πŸ’¬"):
100
  gr.Markdown("## ν•˜λŠ˜μ΄μ˜ 챗봇과 λŒ€ν™”ν•΄λ³΄μ„Έμš”! πŸ’¬")
101
  chatbot = gr.Chatbot(height=500)
102
  msg = gr.Textbox(label="λ©”μ‹œμ§€ μž…λ ₯")
103
+ clear = gr.Button("μ±„νŒ… 기둝 μ΄ˆκΈ°ν™”")
104
+
105
+ def handle_message(message, history):
106
+ bot_response = respond(message)
107
+ return history + [(message, bot_response)]
108
+
109
+ def reset_chat():
110
+ init_character()
111
+ chat_history.clear()
112
+ return []
113
 
 
114
  msg.submit(
115
+ handle_message,
116
+ inputs=[msg, chatbot],
117
+ outputs=[chatbot],
118
+ queue=False
119
+ ).then(lambda: gr.update(value=""), outputs=[msg])
120
 
 
121
  clear.click(
122
+ reset_chat,
123
+ outputs=[chatbot],
 
124
  queue=False
125
  )
126
 
 
127
  demo.launch()