Kims12 commited on
Commit
f9b088b
·
verified ·
1 Parent(s): c753d25

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +91 -1
app.py CHANGED
@@ -2,6 +2,10 @@ import gradio as gr
2
  from huggingface_hub import InferenceClient
3
  import openai
4
 
 
 
 
 
5
  # 제거할 모델들을 MODELS 사전에서 제외
6
  MODELS = {
7
  "Zephyr 7B Beta": "HuggingFaceH4/zephyr-7b-beta",
@@ -142,6 +146,10 @@ def respond_chatgpt_qna(
142
  return f"오류가 발생했습니다: {str(e)}"
143
 
144
 
 
 
 
 
145
  with gr.Blocks() as demo:
146
  gr.Markdown("# Prompting AI - 일반 문답형 데모")
147
  gr.Markdown("언어모델별 문답형 테스트 데모입니다. 한 번에 한 질문씩만 주고받습니다.")
@@ -180,7 +188,6 @@ with gr.Blocks() as demo:
180
  question_input = gr.Textbox(label="질문을 입력하세요")
181
  answer_output = gr.Textbox(label="답변", interactive=False)
182
 
183
- # '전송' 버튼 클릭 시 HF 모델 QnA 함수 호출
184
  submit_button = gr.Button("전송")
185
 
186
  submit_button.click(
@@ -261,5 +268,88 @@ with gr.Blocks() as demo:
261
  outputs=chatgpt_answer_output
262
  )
263
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  if __name__ == "__main__":
265
  demo.launch()
 
2
  from huggingface_hub import InferenceClient
3
  import openai
4
 
5
+ #############################
6
+ # [기본코드] - 수정/삭제 불가
7
+ #############################
8
+
9
  # 제거할 모델들을 MODELS 사전에서 제외
10
  MODELS = {
11
  "Zephyr 7B Beta": "HuggingFaceH4/zephyr-7b-beta",
 
146
  return f"오류가 발생했습니다: {str(e)}"
147
 
148
 
149
+ #############################
150
+ # [기본코드] UI 부분 - 수정/삭제 불가
151
+ #############################
152
+
153
  with gr.Blocks() as demo:
154
  gr.Markdown("# Prompting AI - 일반 문답형 데모")
155
  gr.Markdown("언어모델별 문답형 테스트 데모입니다. 한 번에 한 질문씩만 주고받습니다.")
 
188
  question_input = gr.Textbox(label="질문을 입력하세요")
189
  answer_output = gr.Textbox(label="답변", interactive=False)
190
 
 
191
  submit_button = gr.Button("전송")
192
 
193
  submit_button.click(
 
268
  outputs=chatgpt_answer_output
269
  )
270
 
271
+ #################################################
272
+ # [클로드 플레이그라운드] - [참조코드] 일부 발췌
273
+ #################################################
274
+ with gr.Tab("클로드 플레이그라운드"):
275
+ gr.Markdown("클로드 모델과의 간단한 플레이그라운드입니다.")
276
+
277
+ # Claude용 토큰
278
+ claude_token_box = gr.Textbox(
279
+ label="Claude 토큰 (비공개)",
280
+ type="password",
281
+ placeholder="Claude API 토큰을 입력하세요..."
282
+ )
283
+
284
+ claude_system_message = gr.Textbox(
285
+ label="System Message",
286
+ value="반드시 한글로 답변할 것.\n너는 Anthropic에서 개발한 클로드이다.\n최대한 정확하고 친절하게 답변하라.\n",
287
+ lines=3
288
+ )
289
+
290
+ claude_max_tokens = gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max Tokens")
291
+ claude_temperature = gr.Slider(minimum=0.1, maximum=2.0, value=0.7, step=0.05, label="Temperature")
292
+ claude_top_p = gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p")
293
+
294
+ claude_question_input = gr.Textbox(label="질문을 입력하세요")
295
+ claude_answer_output = gr.Textbox(label="답변", interactive=False)
296
+ claude_submit_button = gr.Button("전송")
297
+
298
+ # Claude 응답 함수 (최소 기능만 사용)
299
+ def respond_claude_qna(
300
+ question: str,
301
+ system_message: str,
302
+ max_tokens: int,
303
+ temperature: float,
304
+ top_p: float,
305
+ claude_api_key: str
306
+ ):
307
+ """
308
+ [참조코드]에서 최소한의 클로드 호출 부분만 발췌한 함수.
309
+ 플레이그라운드 형태로 한 번의 질문에 대한 답변을 반환.
310
+ """
311
+ import anthropic
312
+
313
+ # 토큰이 없으면 에러
314
+ if not claude_api_key:
315
+ return "Claude API 토큰이 필요합니다."
316
+
317
+ try:
318
+ claude_client = anthropic.Anthropic(api_key=claude_api_key)
319
+ # 클로드에게 보낼 프롬프트 구성
320
+ # Anthropic 공식 예시를 참고하여 HUMAN_PROMPT / AI_PROMPT 사용
321
+ prompt = (
322
+ f"{anthropic.HUMAN_PROMPT}\n"
323
+ f"{system_message}\n\n"
324
+ f"질문: {question}\n"
325
+ f"{anthropic.AI_PROMPT}"
326
+ )
327
+ response = claude_client.completions.create(
328
+ model="claude-3-haiku-20240307",
329
+ max_tokens_to_sample=max_tokens,
330
+ temperature=temperature,
331
+ top_p=top_p,
332
+ prompt=prompt
333
+ )
334
+ return response.completion.strip()
335
+ except Exception as e:
336
+ return f"오류가 발생했습니다: {str(e)}"
337
+
338
+ claude_submit_button.click(
339
+ fn=respond_claude_qna,
340
+ inputs=[
341
+ claude_question_input,
342
+ claude_system_message,
343
+ claude_max_tokens,
344
+ claude_temperature,
345
+ claude_top_p,
346
+ claude_token_box
347
+ ],
348
+ outputs=claude_answer_output
349
+ )
350
+
351
+ #############################
352
+ # 메인 실행부
353
+ #############################
354
  if __name__ == "__main__":
355
  demo.launch()