dellabee7 commited on
Commit
99afb39
·
verified ·
1 Parent(s): 09c85b0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -10
app.py CHANGED
@@ -14,21 +14,27 @@ def extract_pdf_text(pdf_paths):
14
  full_text += text + "\n"
15
  return full_text.strip()
16
 
17
- # 레퍼런스 PDF 텍스트 불러오기
18
  pdf_context = extract_pdf_text([
19
  "assets/Programming-Fundamentals-1570222270.pdf",
20
  "assets/1분파이썬_강의자료_전체.pdf"
21
  ])
22
 
23
- # 무료 사용 가능한 FLAN-T5 모델 사용
24
  client = InferenceClient(
25
- model="tiiuae/falcon-rw-1b",
26
- token=os.getenv("HUGGINGFACEHUB_API_TOKEN")
27
  )
28
 
29
  def respond(message, history, system_message, max_tokens, temperature, top_p):
30
- # 단순 프롬프트 구성 (flan-t5는 chat 구조가 아님)
31
- prompt = f"{system_message}\n\n문서 요약:\n{pdf_context}\n\n질문: {message}\n답변:"
 
 
 
 
 
 
32
  result = client.text_generation(
33
  prompt=prompt,
34
  max_new_tokens=max_tokens,
@@ -37,16 +43,17 @@ def respond(message, history, system_message, max_tokens, temperature, top_p):
37
  )
38
  return result.strip()
39
 
 
40
  demo = gr.ChatInterface(
41
  fn=respond,
42
  additional_inputs=[
43
- gr.Textbox(value="당신은 파이썬 API 문서에 기반해 답변하는 유용한 조교입니다.", label="System message"),
44
- gr.Slider(minimum=1, maximum=1024, value=512, step=1, label="Max new tokens"),
45
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
46
  gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p"),
47
  ],
48
- title="📘 파이썬 API 레퍼런스 챗봇 (FLAN-T5 기반)",
49
- description="한국공대 수업자료 기반으로 질문에 답하는 무료 챗봇입니다."
50
  )
51
 
52
  if __name__ == "__main__":
 
14
  full_text += text + "\n"
15
  return full_text.strip()
16
 
17
+ # 미리 지정된 PDF 문서들
18
  pdf_context = extract_pdf_text([
19
  "assets/Programming-Fundamentals-1570222270.pdf",
20
  "assets/1분파이썬_강의자료_전체.pdf"
21
  ])
22
 
23
+ # Hugging Face Inference Client 설정 (starcoderbase 사용)
24
  client = InferenceClient(
25
+ model="bigcode/starcoderbase",
26
+ token=os.getenv("HUGGINGFACEHUB_API_TOKEN") # 반드시 등록 필요
27
  )
28
 
29
  def respond(message, history, system_message, max_tokens, temperature, top_p):
30
+ # 대화 히스토리를 텍스트로 연결
31
+ history_text = "\n".join(
32
+ [f"Q: {user}\nA: {assistant}" for user, assistant in history if user and assistant]
33
+ )
34
+
35
+ # StarCoder는 messages 구조를 지원하지 않으므로 prompt 기반
36
+ prompt = f"{system_message}\n\n문서 요약:\n{pdf_context}\n\n{history_text}\n\nQ: {message}\nA:"
37
+
38
  result = client.text_generation(
39
  prompt=prompt,
40
  max_new_tokens=max_tokens,
 
43
  )
44
  return result.strip()
45
 
46
+ # Gradio 인터페이스 구성
47
  demo = gr.ChatInterface(
48
  fn=respond,
49
  additional_inputs=[
50
+ gr.Textbox(value="당신은 프로그래밍 문서를 이해하고 코드 예제로 설명하는 친절한 조교입니다.", label="System message"),
51
+ gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
52
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
53
  gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p"),
54
  ],
55
+ title="💻 파이썬 API 기반 코딩 도우미 (StarCoder)",
56
+ description="한국공대 파이썬 강의자료 기반으로 코드 질문에 답변하는 StarCoder 챗봇입니다."
57
  )
58
 
59
  if __name__ == "__main__":