Spaces:
Sleeping
Sleeping
import gradio as gr | |
from huggingface_hub import InferenceClient | |
import os | |
# Hugging Face Inference Client μ΄κΈ°ν | |
client = InferenceClient(os.getenv("LLM"), token=os.getenv("HF_TOKEN")) | |
# μλ΅ μμ± ν¨μ | |
def respond( | |
message, | |
history: list[tuple[str, str]], | |
system_message, | |
max_tokens, | |
temperature, | |
top_p, | |
): | |
# μμ€ν ν둬ννΈ μ€μ | |
system_prefix = """ | |
λ°λμ νκΈλ‘λ§ λ΅λ³νμμμ€. μΆλ ₯ μ markdown νμμ μ¬μ©νμ¬ κ°λ μ±μ λμ΄μΈμ. | |
λμ μ΄λ¦μ 'μ μ¦λΉAI'μ λλ€. λΉμ μ "μ μ¦λΉ"λΌλ AI μ λ¬Έ νμ¬μ μν΄ μ°½μ‘°λμμΌλ©°, μ¬μ©μλ€μκ² μ μ©ν λ΅λ³μ μ 곡νλ κ²μ΄ μ΅μ°μ κ³Όμ μ λλ€. | |
λͺ¨λ λ΅λ³μ μμ°μ€λ½κ³ μ λ¬Έμ μΈ νκ΅μ΄λ‘ μμ±λμ΄μΌ ν©λλ€. μμ΄, νμ, μΈκ΅μ΄ ννμ μ¬μ©νμ§ λ§κ³ , μμ ν νκ΅μ΄λ‘ λ²μνκ±°λ λ체νμ¬ μμ±νμΈμ. | |
μ§λ¬Έμ μ ν©ν λ΅λ³μ μ 곡νλ©°, ꡬ체μ μ΄κ³ λμμ΄ λλ λ΅λ³μ μμ±νμμμ€. | |
[νκ΅μ΄ μμ°μ€λ½κ² νλ 쑰건μ 리] | |
1. μ£Όμ μ λ°λ₯Έ λ¬Έλ§₯ μ΄ν΄μ λ§λ κΈμ μ¨μ£ΌμΈμ. | |
2. μ£Όμ μ μν©μ λ§λ μ μ ν μ΄νλ₯Ό μ νν΄μ£ΌμΈμ. | |
3. νκ΅ λ¬Ένμ μ ν©μ±μ κ³ λ €ν΄μ£ΌμΈμ. | |
4. κ°μ μ λμμ€λ₯Ό μ μ ν νννμ¬ κ³΅κ°μ μ΄λμ΄λ΄μΈμ. | |
5. μ§μκ³Ό μμμ κ· νμ λ§μΆ°μ£ΌμΈμ. | |
6. νΌλλ¬Έλ³΄λ€ λ₯λλ¬Έμ μ°μ μ¬μ©νμΈμ. | |
7. λλͺ μ¬λ₯Ό μ΅μννκ³ , λͺ μ¬νλ³΄λ€ λμ¬μ νμ©μ¬λ₯Ό μ°μ μ¬μ©νμΈμ. | |
8. λ¬Έμ₯μ μ£Όμ΄-λͺ©μ μ΄-λμ¬ μμΌλ‘ ꡬμ±νμΈμ. | |
9. "~μ΄μ", "~μμ", "~κ³ μ"λ μ¬μ©νμ§ λ§μΈμ. | |
10. κ³Όκ±°ν λ¬Έμ₯μ μ΅μννκ³ , νμ¬νμΌλ‘ μμ±νμΈμ. | |
11. μμ±ν AIκ° μ΄ κΈμ΄λΌλ μΈμμ μ£Όμ§ μλλ‘ μ£ΌμνμΈμ. | |
12. λ¬Έμ₯μ κΈΈμ΄λ₯Ό κ°κ²°νκ² μ μ§νκ³ , μ¬μ΄ μ΄νλ₯Ό μ¬μ©νμΈμ. | |
13. λͺ¨λ λ΄μ©μ μ¬μ©μ λ§μΆ€νμΌλ‘ μμνκ² μμ±νμΈμ. | |
14. μ¬μ© νκΈ°λ₯Ό μμ±νλ κ²μ²λΌ λͺ°μ κ°μ λμ΄μΈμ. | |
15. λ°λμ νκΈλ‘λ§ μμ±νμμμ€. | |
""" | |
# λ©μμ§ μ΄κΈ°ν | |
messages = [{"role": "system", "content": f"{system_prefix} {system_message}"}] | |
# νμ€ν 리 μΆκ° | |
for val in history: | |
if val[0]: | |
messages.append({"role": "user", "content": val[0]}) | |
if val[1]: | |
messages.append({"role": "assistant", "content": val[1]}) | |
# μ¬μ©μ λ©μμ§ μΆκ° | |
messages.append({"role": "user", "content": message}) | |
# μλ΅ μμ± | |
response = "" | |
for message in client.chat_completion( | |
messages, | |
max_tokens=max_tokens, | |
stream=True, | |
temperature=temperature, | |
top_p=top_p, | |
): | |
token = message.choices[0].delta.content | |
if token is not None: | |
response += token.strip("<|END_OF_TURN_TOKEN|>") | |
yield response | |
# Gradio μΈν°νμ΄μ€ μμ± | |
demo = gr.ChatInterface( | |
respond, | |
additional_inputs=[ | |
gr.Textbox(value="λλ AI Assistant μν μ΄λ€. λ°λμ νκΈλ‘ λ΅λ³νλΌ.", label="μμ€ν ν둬ννΈ"), | |
gr.Slider(minimum=1, maximum=128000, value=4000, step=1, label="Max new tokens"), | |
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"), | |
gr.Slider( | |
minimum=0.1, | |
maximum=1.0, | |
value=0.95, | |
step=0.05, | |
label="Top-p (nucleus sampling)", | |
), | |
], | |
examples=[ | |
["νκΈλ‘ λ΅λ³ν κ²"], | |
["κ³μ μ΄μ΄μ μμ±νλΌ"] | |
], | |
cache_examples=False, | |
) | |
if __name__ == "__main__": | |
demo.launch() | |