aliceblue11 commited on
Commit
f706b9e
·
verified ·
1 Parent(s): 1acd13c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +156 -42
app.py CHANGED
@@ -1,14 +1,79 @@
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  # Cohere Command R+ 모델 ID 정의
5
  COHERE_MODEL = "CohereForAI/c4ai-command-r-plus-08-2024"
6
 
7
- def get_client(hf_token):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  """
9
- Cohere Command R+ 모델에 대한 InferenceClient 생성.
10
  """
11
- return InferenceClient(COHERE_MODEL, token=hf_token)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
  def respond_cohere_qna(
14
  question: str,
@@ -21,8 +86,9 @@ def respond_cohere_qna(
21
  """
22
  Cohere Command R+ 모델을 이용해 한 번의 질문(question)에 대한 답변을 반환하는 함수.
23
  """
 
24
  try:
25
- client = get_client(hf_token)
26
  except ValueError as e:
27
  return f"오류: {str(e)}"
28
 
@@ -43,31 +109,64 @@ def respond_cohere_qna(
43
  except Exception as e:
44
  return f"오류가 발생했습니다: {str(e)}"
45
 
 
 
 
 
 
 
 
 
 
 
 
46
  #############################
47
- # UI 설정
48
  #############################
49
 
50
- # HuggingFace 토큰을 변수에 저장
51
- HUGGINGFACE_TOKEN = "YOUR_HUGGINGFACE_TOKEN"
52
-
53
  with gr.Blocks() as demo:
54
- gr.Markdown("# 블로그 생성기")
55
-
56
- # 라디오 버튼으로 말투 선택
57
- tone_selection = gr.Radio(
58
- choices=["친근한", "전문적인", "상품후기"],
59
- label="말투바꾸기",
60
- value="친근한"
61
- )
62
-
63
- input2 = gr.Textbox(label="참조글1", lines=1)
64
- input3 = gr.Textbox(label="참조글2", lines=1)
65
- input4 = gr.Textbox(label="참조글3", lines=1)
66
- input5 = gr.Textbox(label="생성된 블로그 ", lines=1)
67
-
68
- answer_output = gr.Textbox(label="결과", lines=5, interactive=False)
 
 
 
 
 
 
 
 
 
 
69
 
70
- system_message = """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  ##[기본규칙]
72
  1. 반드시 한국어(한글)로 작성하라.
73
  2. 너는 가장 주목받는 마케터이며 블로그 마케팅 전문가이다.
@@ -94,26 +193,41 @@ with gr.Blocks() as demo:
94
  3. 참고글에서 '링크를 확인해주세요'와 같은 링크 이동의 문구는 제외하라.
95
  4. 참고글에 있는 작성자, 화자, 유튜버, 기자(Writer, speaker, YouTuber, reporter)의 이름, 애칭, 닉네임(Name, Nkickname)은 반드시 제외하라.
96
  5. 반드시 문장의 끝부분이 어색한 한국어 표현은 제외하라('예요', '답니다', '해요', '해주죠', '됐죠', '됐어요', '고요' 등.)
97
- """
98
-
99
- submit_button = gr.Button("전송")
100
-
101
- def merge_and_call_cohere(tone, i2, i3, i4, i5):
102
- question = f"말투: {tone}\n참고글1: {i2}\n참고글2: {i3}\n참고글3: {i4}\n요청 내용: {i5}"
103
- return respond_cohere_qna(
104
- question=question,
105
- system_message=system_message,
106
- max_tokens=4000,
107
- temperature=0.7,
108
- top_p=0.95,
109
- hf_token=HUGGINGFACE_TOKEN
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  )
111
 
112
- submit_button.click(
113
- fn=merge_and_call_cohere,
114
- inputs=[tone_selection, input2, input3, input4, input5],
115
- outputs=answer_output
116
- )
117
 
118
  #############################
119
  # 메인 실행부
 
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
+ import openai
4
+ import anthropic
5
+ from typing import Optional
6
+
7
+ #############################
8
+ # [기본코드] - 수정/삭제 불가
9
+ #############################
10
+
11
+ # 제거할 모델들을 MODELS 사전에서 제외
12
+ MODELS = {
13
+ "Zephyr 7B Beta": "HuggingFaceH4/zephyr-7b-beta",
14
+ "Meta Llama 3.1 8B": "meta-llama/Meta-Llama-3.1-8B-Instruct",
15
+ "Meta-Llama 3.1 70B-Instruct": "meta-llama/Meta-Llama-3.1-70B-Instruct",
16
+ "Microsoft": "microsoft/Phi-3-mini-4k-instruct",
17
+ "Mixtral 8x7B": "mistralai/Mistral-7B-Instruct-v0.3",
18
+ "Mixtral Nous-Hermes": "NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO",
19
+ "Aya-23-35B": "CohereForAI/aya-23-35B"}
20
 
21
  # Cohere Command R+ 모델 ID 정의
22
  COHERE_MODEL = "CohereForAI/c4ai-command-r-plus-08-2024"
23
 
24
+ def get_client(model_name, hf_token):
25
+ """
26
+ 모델 이름에 맞춰 InferenceClient 생성.
27
+ hf_token을 UI에서 입력받은 값으로 사용하도록 변경.
28
+ """
29
+ if not hf_token:
30
+ raise ValueError("HuggingFace API 토큰이 필요합니다.")
31
+
32
+ if model_name in MODELS:
33
+ model_id = MODELS[model_name]
34
+ elif model_name == "Cohere Command R+":
35
+ model_id = COHERE_MODEL
36
+ else:
37
+ raise ValueError("유효하지 않은 모델 이름입니다.")
38
+ return InferenceClient(model_id, token=hf_token)
39
+
40
+
41
+ def respond_hf_qna(
42
+ question: str,
43
+ model_name: str,
44
+ max_tokens: int,
45
+ temperature: float,
46
+ top_p: float,
47
+ system_message: str,
48
+ hf_token: str
49
+ ):
50
  """
51
+ HuggingFace 모델(Zephyr 등)에 대해 한 번의 질문(question)에 대한 답변을 반환하는 함수.
52
  """
53
+ try:
54
+ client = get_client(model_name, hf_token)
55
+ except ValueError as e:
56
+ return f"오류: {str(e)}"
57
+
58
+ messages = [
59
+ {"role": "system", "content": system_message},
60
+ {"role": "user", "content": question}
61
+ ]
62
+
63
+ try:
64
+ response = client.chat_completion(
65
+ messages,
66
+ max_tokens=max_tokens,
67
+ temperature=temperature,
68
+ top_p=top_p,
69
+ stream=False,
70
+ )
71
+ assistant_message = response.choices[0].message.content
72
+ return assistant_message
73
+
74
+ except Exception as e:
75
+ return f"오류가 발생했습니다: {str(e)}"
76
+
77
 
78
  def respond_cohere_qna(
79
  question: str,
 
86
  """
87
  Cohere Command R+ 모델을 이용해 한 번의 질문(question)에 대한 답변을 반환하는 함수.
88
  """
89
+ model_name = "Cohere Command R+"
90
  try:
91
+ client = get_client(model_name, hf_token)
92
  except ValueError as e:
93
  return f"오류: {str(e)}"
94
 
 
109
  except Exception as e:
110
  return f"오류가 발생했습니다: {str(e)}"
111
 
112
+
113
+ def respond_chatgpt_qna(
114
+ question: str,
115
+ system_message: str,
116
+ max_tokens: int,
117
+ temperature: float,
118
+ top_p: float,
119
+ openai_token: str
120
+ ):
121
+
122
+
123
  #############################
124
+ # [기본코드] UI 부분 - 수정/삭제 불가
125
  #############################
126
 
 
 
 
127
  with gr.Blocks() as demo:
128
+ gr.Markdown("# LLM 플레이그라운드")
129
+
130
+ # 줄에 토큰 텍스트박스 배치
131
+ with gr.Row():
132
+ hf_token_box = gr.Textbox(
133
+ label="HuggingFace 토큰",
134
+ type="password",
135
+ placeholder="HuggingFace API 토큰을 입력하세요..."
136
+ )
137
+ openai_token_box = gr.Textbox(
138
+ label="OpenAI 토큰",
139
+ type="password",
140
+ placeholder="OpenAI API 토큰을 입력하세요..."
141
+ )
142
+ claude_token_box = gr.Textbox(
143
+ label="Claude 토큰",
144
+ type="password",
145
+ placeholder="Claude API 토큰을 입력하세요...",
146
+ show_copy_button=False
147
+ )
148
+ deepseek_token_box = gr.Textbox(
149
+ label="DeepSeek 토큰",
150
+ type="password",
151
+ placeholder="DeepSeek API 토큰을 입력하세요..."
152
+ )
153
 
154
+
155
+ #################
156
+ # Cohere Command R+ 탭
157
+ #################
158
+ with gr.Tab("Cohere Command R+"):
159
+ cohere_input1 = gr.Textbox(label="입력1", lines=1)
160
+ cohere_input2 = gr.Textbox(label="입력2", lines=1)
161
+ cohere_input3 = gr.Textbox(label="입력3", lines=1)
162
+ cohere_input4 = gr.Textbox(label="입력4", lines=1)
163
+ cohere_input5 = gr.Textbox(label="입력5", lines=1)
164
+
165
+ cohere_answer_output = gr.Textbox(label="결과", lines=5, interactive=False)
166
+
167
+ with gr.Accordion("고급 설정 (Cohere)", open=False):
168
+ cohere_system_message = gr.Textbox(
169
+ value="""
170
  ##[기본규칙]
171
  1. 반드시 한국어(한글)로 작성하라.
172
  2. 너는 가장 주목받는 마케터이며 블로그 마케팅 전문가이다.
 
193
  3. 참고글에서 '링크를 확인해주세요'와 같은 링크 이동의 문구는 제외하라.
194
  4. 참고글에 있는 작성자, 화자, 유튜버, 기자(Writer, speaker, YouTuber, reporter)의 이름, 애칭, 닉네임(Name, Nkickname)은 반드시 제외하라.
195
  5. 반드시 문장의 끝부분이 어색한 한국어 표현은 제외하라('예요', '답니다', '해요', '해주죠', '됐죠', '됐어요', '고요' 등.)
196
+ """,
197
+ label="System Message",
198
+ lines=3
199
+ )
200
+ cohere_max_tokens = gr.Slider(minimum=100, maximum=10000, value=4000, step=100, label="Max Tokens")
201
+ cohere_temperature = gr.Slider(minimum=0.1, maximum=2.0, value=0.7, step=0.1, label="Temperature")
202
+ cohere_top_p = gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-P")
203
+
204
+ cohere_submit_button = gr.Button("전송")
205
+
206
+ def merge_and_call_cohere(i1, i2, i3, i4, i5, sys_msg, mt, temp, top_p_, hf_token):
207
+ question = " ".join([i1, i2, i3, i4, i5])
208
+ return respond_cohere_qna(
209
+ question=question,
210
+ system_message=sys_msg,
211
+ max_tokens=mt,
212
+ temperature=temp,
213
+ top_p=top_p_,
214
+ hf_token=hf_token
215
+ )
216
+
217
+ cohere_submit_button.click(
218
+ fn=merge_and_call_cohere,
219
+ inputs=[
220
+ cohere_input1, cohere_input2, cohere_input3, cohere_input4, cohere_input5,
221
+ cohere_system_message,
222
+ cohere_max_tokens,
223
+ cohere_temperature,
224
+ cohere_top_p,
225
+ hf_token_box
226
+ ],
227
+ outputs=cohere_answer_output
228
  )
229
 
230
+
 
 
 
 
231
 
232
  #############################
233
  # 메인 실행부