Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
#
|
| 18 |
pdf_context = extract_pdf_text([
|
| 19 |
"assets/Programming-Fundamentals-1570222270.pdf",
|
| 20 |
"assets/1분파이썬_강의자료_전체.pdf"
|
| 21 |
])
|
| 22 |
|
| 23 |
-
#
|
| 24 |
client = InferenceClient(
|
| 25 |
-
model="
|
| 26 |
-
token=os.getenv("HUGGINGFACEHUB_API_TOKEN")
|
| 27 |
)
|
| 28 |
|
| 29 |
def respond(message, history, system_message, max_tokens, temperature, top_p):
|
| 30 |
-
#
|
| 31 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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="당신은
|
| 44 |
-
gr.Slider(minimum=1, maximum=
|
| 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="
|
| 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__":
|