Spaces:
Sleeping
Sleeping
File size: 3,832 Bytes
644c246 b4b811e 644c246 b4b811e 644c246 0ffa25b 644c246 092ea0c 0ffa25b 092ea0c 0ffa25b 092ea0c 0ffa25b 092ea0c 644c246 0ffa25b b4b811e 644c246 0ffa25b 644c246 0ffa25b 644c246 b4b811e 644c246 b4b811e 644c246 b4b811e 644c246 092ea0c 644c246 b4b811e 644c246 b4b811e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
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()
|