πŸš€
Upstage EduStage
  • Welcome
  • Getting Started
    • Introduction to Upstage x AWS AI Initiative
    • Getting Started with Upstage Edu Full Package
  • Basics
    • [KOR] Edu Full Package - No-Code Zone
      • Introduction to LLM
      • Capabilities of LLM
      • Introduction to Solar
      • Introduction to Embedding
      • Introduction to Document AI
      • Introduction to Document Parse
    • [KOR] Edu Full Package - Dev Start Zone
      • Introduction to Upstage API
      • Getting Started with Solar Chat
      • Getting Started withΒ Document Digitization
    • [KOR] Edu Full Package - Use Case Zone
      • Introduction to RAG
      • Introduction to AI Agent
    • [ENG] Edu Full Package - No-Code Zone
      • Introduction to LLM
      • Capabilities of LLM
      • Introduction to Solar
      • Introduction to Embedding
      • Introduction to Document AI
      • Introduction to Document Parse
    • [ENG] Edu Full Package - Dev Start Zone
      • Introduction to Upstage API
      • Getting Started with Solar Chat
      • Getting Started with Document Digitization
    • [ENG] Edu Full Package - Use Case Zone
      • Introduction to RAG
      • Introduction to AI Agent
Powered by GitBook
On this page
  • 1. Upstage Solar Chat API μ‚¬μš© κ°€μ΄λ“œ
  • 2. Solar Chat APIλž€?
  • 3. Getting Started with Solar Chat
  • βœ… 3.1 단일 질문 (Single-turn Chat)
  • πŸ” 3.2 닀쀑턴 λŒ€ν™” (Multi-turn Conversation)
  • 4. πŸ“Œ ν”„λ‘¬ν”„νŠΈ(Prompt)와 μ—­ν• (role) μ„€μ •
  • 4.1. System Prompt
  • 4.2. User Prompt
  • 4.3. Assistant
  • 5. ✍️ Demo: ν”„λ‘¬ν”„νŠΈμ— 따라 λ°˜μ‘ 비ꡐ해보기
  • 🌞 Solar Prompt Comparator
  • Wrap Up
  1. Basics
  2. [KOR] Edu Full Package - Dev Start Zone

Getting Started with Solar Chat

PreviousIntroduction to Upstage APINextGetting Started withΒ Document Digitization

Last updated 2 months ago

Solar Chat APIλ₯Ό μ‚¬μš©ν•˜λ €λ©΄, λ¨Όμ € 본인의 API Keyλ₯Ό λ°œκΈ‰λ°›μ•„μ•Ό ν•©λ‹ˆλ‹€. API Key λ°œκΈ‰ μ ˆμ°¨κ°€ κΆκΈˆν•˜λ‹€λ©΄ 01. Introduction to Upstage API()λ₯Ό 보고 μ˜€μ„Έμš”!

πŸ“Œ λͺ©μ°¨

  • Upstage Solar Chat API μ‚¬μš© κ°€μ΄λ“œ

  • Solar Chat APIλž€?

  • Getting Started with Solar Chat

  • ν”„λ‘¬ν”„νŠΈ(Prompt)와 μ—­ν• (role) μ„€μ •

  • Demo: ν”„λ‘¬ν”„νŠΈμ— 따라 λ°˜μ‘ 비ꡐ해보기

1. Upstage Solar Chat API μ‚¬μš© κ°€μ΄λ“œ

ν…μŠ€νŠΈ 생성, μš”μ•½, λ²ˆμ—­ λ“±μ˜ μž‘μ—…μ„ μžλ™ν™”ν•˜κ³  μ‹Άμ€κ°€μš”? κ·Έλ ‡λ‹€λ©΄ μ§€κΈˆλΆ€ν„° Solar Chat APIλ₯Ό ν™œμš©ν•΄ 직접 λŒ€ν™”ν˜• 인곡지λŠ₯을 κ΅¬ν˜„ν•˜λŠ” 방법을 λ°°μ›Œλ³΄κ² μŠ΅λ‹ˆλ‹€.

이 κ°€μ΄λ“œλŠ” Solar LLM을 API둜 λΆˆλŸ¬μ™€ ν…μŠ€νŠΈ κ΄€λ ¨ μž‘μ—…μ„ μžλ™ν™”ν•˜λŠ” 법을 μ•Œλ €μ€λ‹ˆλ‹€. μ΄μ œλŠ” API κ°œλ…μ„ μ΄ν•΄ν•˜λŠ” 것을 λ„˜μ–΄μ„œ, μ‹€μ œ Chat API λ©”μ„Έμ§€ ꡬ성 그리고 ν”„λ‘¬ν”„νŠΈ μ—”μ§€λ‹ˆμ–΄λ§κΉŒμ§€ λ‹€λ€„λ³΄κ² μŠ΅λ‹ˆλ‹€.

μ•„μ£Ό κ°„λ‹¨ν•œ μ„€μ •λ§ŒμœΌλ‘œ, κ°•λ ₯ν•œ μ–Έμ–΄λͺ¨λΈμ„ μ—¬λŸ¬λΆ„μ˜ μ„œλΉ„μŠ€μ— μ—°κ²°ν•  수 μžˆμ–΄μš”!

2. Solar Chat APIλž€?

Upstage의 Solar λͺ¨λΈ μ‹œλ¦¬μ¦ˆλŠ” μž‘μ§€λ§Œ κ°•λ ₯ν•œ λŒ€κ·œλͺ¨ μ–Έμ–΄λͺ¨λΈ(LLM)μž…λ‹ˆλ‹€. λ¬Έμ„œ μš”μ•½, μ§ˆμ˜μ‘λ‹΅, λ²ˆμ—­ λ“± λ‹€μ–‘ν•œ μ–Έμ–΄ 기반 μž‘μ—…μ— νŠΉν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

Solar Chat APIλŠ” 이 λͺ¨λΈλ“€μ„ μ›Ή API ν˜•νƒœλ‘œ μ œκ³΅ν•˜μ—¬, λˆ„κ΅¬λ‚˜ μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ€λ‹ˆλ‹€.

Solar Chat은 OpenAI API ν˜•μ‹μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. 핡심은 chat.compeltions.create() ν•¨μˆ˜λ₯Ό 톡해 λŒ€ν™” λ©”μ„Έμ§€(messages)λ₯Ό 보내고 응닡을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.

3. Getting Started with Solar Chat

βœ… 3.1 단일 질문 (Single-turn Chat)

κ°€μž₯ 기본적인 μ‚¬μš© λ°©μ‹μž…λ‹ˆλ‹€. ν•œ 번의 질문과 μ‘λ‹΅μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

  • 단일 질문 κ΅¬μ‘°μ—μ„œλŠ” μ‚¬μš©μž β†’ λͺ¨λΈ β†’ μ‘λ‹΅μ˜ ν•œ μ‚¬μ΄ν΄λ§Œ μ‘΄μž¬ν•©λ‹ˆλ‹€.

  • λͺ¨λΈμ€ 이전 λŒ€ν™”μ˜ λ§₯락을 μ•Œ 수 μ—†κ³ , 단 건으둜 μ£Όμ–΄μ§„ 메세지에 λŒ€ν•΄μ„œλ§Œ λ°˜μ‘ν•©λ‹ˆλ‹€.


# pip install openai
 
from openai import OpenAI # openai==1.52.2
 
client = OpenAI(
    api_key="up_your_api_key_here",
    base_url="https://api.upstage.ai/v1"
)
 
stream = client.chat.completions.create(
    model="solar-pro",
    messages=[
        {
            "role": "user",
            "content": "Hi, how are you?"
        }
    ],
    stream=True,
)
 
for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")
 
# Use with stream=False
# print(stream.choices[0].message.content)

βœ… νŒŒλΌλ―Έν„° ꡬ성

νŒŒλΌλ―Έν„°
μ„€λͺ…

model

μ‚¬μš©ν•  Solar λͺ¨λΈμ˜ 이름을 μž…λ ₯ν•©λ‹ˆλ‹€. (solar-pro, solar-mini 쀑 택1)

messages

λŒ€ν™” λ‚΄μš©, roleκ³Ό contentλ₯Ό 담은 리슀트이며, 각 ν•­λͺ©μ€ λ”•μ…”λ„ˆλ¦¬λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. roleκ³Ό contentν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ λˆ„κ°€ μ–΄λ–€ 말을 ν•˜λŠ”μ§€ μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

stream

λͺ¨λΈ 응닡을 μ‹€μ‹œκ°„μœΌλ‘œ 받을지(True), μ „λΆ€ μƒμ„±λœ λ’€ 받을지(False)λ₯Ό μ •ν•˜λŠ” μ˜΅μ…˜μž…λ‹ˆλ‹€. stream=True둜 μ„€μ •ν•˜λ©΄ μ‹€μ‹œκ°„ 응닡을 슀트리밍 λ°©μ‹μœΌλ‘œ 받을 수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ μ£Όμ˜μ‚¬ν•­

  • β€œup_your_api_key_here” λ₯Ό λ°œκΈ‰λ°›μ€ μ‹€μ œ api key둜 λ³€κ²½(”up_xxxx”)ν•˜μ—¬ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  • model 값은 solar-pro λ˜λŠ” solar-mini 쀑 선택 κ°€λŠ₯ν•©λ‹ˆλ‹€.

  • stream=True μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄ μ‹€μ‹œκ°„ 슀트리밍 좜λ ₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

β˜‘οΈ Stream νŒŒλΌλ―Έν„° μžμ„Ένžˆ μ•Œμ•„λ³΄κΈ°

  • stream = True

    • λͺ¨λΈμ΄ 응닡을 μƒμ„±ν•˜λŠ” 과정을 μ‹€μ‹œκ°„μœΌλ‘œ ν•œ 쀄씩 좜λ ₯ν•©λ‹ˆλ‹€.

    • κΈ΄ 응닡을 기닀릴 ν•„μš” 없이 μ μ§„μ μœΌλ‘œ 좜λ ₯되기 λ•Œλ¬Έμ— μ‚¬μš©μž κ²½ν—˜μ΄ λΆ€λ“œλŸ½μŠ΅λ‹ˆλ‹€.

  • stream = False

    • λͺ¨λΈμ΄ 응닡을 μ „λΆ€ μƒμ„±ν•œ λ’€ ν•œ λ²ˆμ— 좜λ ₯ν•©λ‹ˆλ‹€.

    • κ°„λ‹¨ν•œ μž‘μ—…μ—μ„œλŠ” 이 방식도 μΆ©λΆ„νžˆ μœ νš¨ν•©λ‹ˆλ‹€.


πŸ” 3.2 닀쀑턴 λŒ€ν™” (Multi-turn Conversation)

이전 λŒ€ν™” λ‚΄μš©μ„ κΈ°μ–΅ν•˜λ©° μ—¬λŸ¬ μ°¨λ‘€ 질문/닡변을 μ΄μ–΄κ°€λŠ” 방식을 μ˜λ―Έν•©λ‹ˆλ‹€.

  • λͺ¨λΈμ€ 이전 λ©”μ„Έμ§€λ₯Ό λͺ¨λ‘ μ°Έκ³ ν•˜μ—¬ 닡변을 μƒμ„±ν•©λ‹ˆλ‹€.

  • μ΄μ „μ˜ λŒ€ν™” λ§₯락을 μœ μ§€ν•˜λ©° μ—¬λŸ¬ 번의 μƒν˜Έμž‘μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.


from openai import OpenAI # openai==1.52.2
 
client = OpenAI(
    api_key="up_*************************qP9B",
    base_url="https://api.upstage.ai/v1"
)

def chat_with_solar(messages):
    response = client.chat.completions.create(
        model="solar-pro",
        messages=messages
    )
    return response.choices[0].message['content']

# λŒ€ν™” μ‹œμž‘
messages = [{"role": "user", "content": "Hello, who won the world series in 2020?"}]
response = chat_with_solar(messages)
print("Assistant:", response)
messages.append({"role": "assistant", "content": response})

# λ‹€μŒ 질문
messages.append({"role": "user", "content": "Where was it played?"})
response = chat_with_solar(messages)
print("Assistant:", response)

🧠 λͺ¨λΈμ΄ λŒ€ν™” 흐름을 이해할 수 μžˆλ„λ‘ 이전 λ©”μ‹œμ§€λ“€μ„ 계속 messages λ¦¬μŠ€νŠΈμ— λˆ„μ μ‹œν‚€λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

βœ… ꡬ성

  • messagesλŠ” λŒ€ν™”μ˜ λͺ¨λ“  흐름을 리슀트둜 λˆ„μ ν•©λ‹ˆλ‹€.

  • 각 turnλ§ˆλ‹€ user 의 질문과 β†’ λͺ¨λΈμ˜ 닡변인 assistant ν˜•νƒœλ‘œ 계속 μ΄μ–΄μ§‘λ‹ˆλ‹€.

4. πŸ“Œ ν”„λ‘¬ν”„νŠΈ(Prompt)와 μ—­ν• (role) μ„€μ •

ν”„λ‘¬ν”„νŠΈλŠ” λͺ¨λΈμ—κ²Œ β€œλ„ˆλŠ” μ–΄λ–€ 역할을 할지”, 또 β€œμ–΄λ–»κ²Œ 말할지”λ₯Ό μ•Œλ €μ£ΌλŠ” μ„€μ •μž…λ‹ˆλ‹€.

ν”„λ‘¬ν”„νŠΈλ₯Ό μž…λ ₯ν•  수 μžˆλŠ” 뢀뢄을 ν¬ν•¨ν•˜μ—¬ 크게 3κ°€μ§€ role에 λŒ€ν•΄ μ•Œμ•„λ΄…λ‹ˆλ‹€.

4.1. System Prompt

λŒ€ν™” μ „μ²΄μ˜ κΈ°λ³Έ 톀, 성격, κ·œμΉ™ 등을 μ„€μ •ν•˜λŠ” κ³³μž…λ‹ˆλ‹€. λͺ¨λΈμ—κ²Œ 행동 μ§€μΉ¨(Instruction)을 λ‚΄λ¦¬λŠ” 것이라고 이해할 수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄:

  • "You are a kind and polite assistant." β†’ μΉœμ ˆν•˜κ³  예의 λ°”λ₯Έ λ‹΅λ³€

  • "You are a strict grammar teacher." β†’ 문법 였λ₯˜λ₯Ό μ§€μ ν•˜λŠ” λ‹΅λ³€

🎯 같은 μ§ˆλ¬Έμ΄λΌλ„ μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈμ— 따라 λ‹΅λ³€ μŠ€νƒ€μΌμ΄ μ™„μ „νžˆ λ‹¬λΌμ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€!

4.2. User Prompt

μ‚¬μš©μžμ˜ μ§ˆλ¬Έμ΄λ‚˜ μš”μ²­μ„ λ‹΄λŠ” λΆ€λΆ„μž…λ‹ˆλ‹€. 즉, λͺ¨λΈμ—κ²Œ μ–΄λ–€ μž‘μ—…μ„ 해달라고 μ „λ‹¬ν•˜λŠ” μ§€μ‹œλ¬Έμž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄:

  • β€œμ˜€λŠ˜ μ„œμšΈμ˜ λ‚ μ”¨λŠ” μ–΄λ•Œ?”

  • β€œμ΄ κ²Œμ‹œκΈ€μ„ 3μ€„λ‘œ μš”μ•½ν•΄μ€˜.”

🎯 LLM은 이 user의 λ°œν™”λ₯Ό 기반으둜, λ‹€μŒ 응닡(assistant)을 μƒμ„±ν•©λ‹ˆλ‹€.

4.3. Assistant

λͺ¨λΈμ΄ μƒμ„±ν•œ λ‹΅λ³€, λ˜λŠ” 행동 κ²°κ³Όλ₯Ό λ‹΄λŠ” λΆ€λΆ„μž…λ‹ˆλ‹€.

이전 응닡을 κΈ°μ–΅μ‹œν‚€κ±°λ‚˜, 닀쀑 ν„΄ λŒ€ν™”μ—μ„œ λŒ€ν™” 흐름을 μœ μ§€ν•  λ•Œ κΌ­ ν•„μš”ν•œ λΆ€λΆ„μž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄:

  • β€œμ˜€λŠ˜ μ„œμšΈ λ‚ μ”¨λŠ” λ§‘κ³ , 섭씨 24λ„μž…λ‹ˆλ‹€.” β†’ μ‚¬μš©μž μ§ˆλ¬Έμ— λŒ€ν•œ 응닡을 좜λ ₯ν•˜κ±°λ‚˜,

  • β€œμ΄ κ²Œμ‹œκΈ€μ˜ 3쀄 μš”μ•½μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€β€¦β€ β†’ μš”μ²­ν•œ μš”μ•½μ„ μˆ˜ν–‰ν•˜λŠ” κ³³μž…λ‹ˆλ‹€.

🎯 Assistant λ©”μ„Έμ§€λ₯Ό λͺ…μ‹œν•΄μ£Όλ©΄ λͺ¨λΈμ΄ μžμ‹ μ˜ 이전 응닡을 κΈ°μ–΅ν•˜λ©° μžμ—°μŠ€λŸ½κ²Œ μ΄μ–΄μ„œ λŒ€ν™”λ₯Ό λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€.


5. ✍️ Demo: ν”„λ‘¬ν”„νŠΈμ— 따라 λ°˜μ‘ 비ꡐ해보기

System Prompt의 영ν–₯을 비ꡐ해볼 수 μžˆλŠ” 데λͺ¨λ₯Ό μ²΄ν—˜ν•΄ λ³΄μ„Έμš”. μ›ν•˜λŠ” system promptλ₯Ό μž…λ ₯ν•˜κ³ , 그에 따라 λͺ¨λΈμ˜ λ°˜μ‘μ„ λΉ„κ΅ν•΄λ³΄μ„Έμš”. λͺ¨λΈκ³Ό λ‚˜λˆˆ λŒ€ν™”λŠ” csv 파일둜 λ‹€μš΄λ°›μ•„, 결과값을 보관할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

🌞 Solar Prompt Comparator

βœ… κΈ°λŠ₯ μš”μ•½

  • 쒌츑: κΈ°λ³Έ ν”„λ‘¬ν”„νŠΈ μ‚¬μš© (κΈ°λ³Έ ν”„λ‘¬ν”„νŠΈλŠ” You are a helpful assistant. κ°€ λ“€μ–΄κ°€μžˆμŠ΅λ‹ˆλ‹€.)

  • 우츑: μ‚¬μš©μžκ°€ μž‘μ„±ν•œ μ»€μŠ€ν…€ ν”„λ‘¬ν”„νŠΈ μ‚¬μš©

    • λͺ¨λΈμ—κ²Œ νŠΉλ³„ν•œ 역할을 λΆ€μ—¬ν•΄ λ³΄μ„Έμš”!

  • μž…λ ₯ν•œ μ§ˆλ¬Έμ— λŒ€ν•΄ 각기 λ‹€λ₯Έ 응닡 κ²°κ³Ό 비ꡐ

πŸ’» μ½”λ“œ 일뢀 μ˜ˆμ‹œ

custom_prompt = st.text_area("Write your own system prompt", "You are a helpful assistant.")

st.session_state.default_messages = [{"role": "system", "content": default_prompt}]
st.session_state.custom_messages = [{"role": "system", "content": custom_prompt}]

# μ‚¬μš©μž μ§ˆλ¬Έμ„ μΆ”κ°€ν•˜μ—¬ 두 ν”„λ‘¬ν”„νŠΈλ‘œ λ™μ‹œμ— 응닡 λ°›μ•„ 좜λ ₯

πŸ“ μ±„νŒ… κ²°κ³Ό μ €μž₯ κΈ°λŠ₯κΉŒμ§€!

  • 쒌/우 κ²°κ³Όλ₯Ό .csv둜 λ‹€μš΄λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • λŒ€ν™” 기둝 보쑴 및 비ꡐ 연ꡬ에 μœ μš©ν•©λ‹ˆλ‹€.

πŸ‘‰ 데λͺ¨λ₯Ό μž…λ§›μ— 맞게 λ°”κΎΈκ³  μ‹Άλ‹€λ©΄, huggingface에 streamlit 용 spaceλ₯Ό κ°œμ„€ν•˜μ—¬ μˆ˜μ •ν•΄λ³΄μ„Έμš”!


Wrap Up

이번 μ„Ήμ…˜μ—μ„œλŠ” Solar Chat API μ‚¬μš© 방식을 λ°°μ› μŠ΅λ‹ˆλ‹€.

πŸ”Ή API Key λ°œκΈ‰ β†’ Solar λͺ¨λΈ μ—°κ²° β†’ λŒ€ν™” μ²˜λ¦¬κΉŒμ§€ λ‹¨κ³„λ³„λ‘œ 정리

πŸ”Ή Single Turn/Multi Turn λŒ€ν™” κ΅¬ν˜„λ²• μ†Œκ°œ

πŸ”Ή Chat APIλ₯Ό μ‚¬μš©ν•  λ•Œ ν•„μš”ν•œ Prompt Role의 μ’…λ₯˜μ™€ ν™œμš©λ²• μ„€λͺ…

πŸ”Ή 데λͺ¨ μ½”λ“œλ‘œ μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈ 효과 λΉ„κ΅κΉŒμ§€!


Suwan Kim | AI Edu | Upstage

β‡’ Solar Chat에 λŒ€ν•œ μžμ„Έν•œ μ‚¬μš© κ°€μ΄λ“œλŠ” μ—μ„œλ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

AI Initiative ν”„λ‘œκ·Έλž¨μ— μ°Έμ—¬ν•˜κ³  μžˆλ‹€λ©΄, solar-proλ₯Ό 무료둜 μ‚¬μš©ν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€. (~2026λ…„ 3μ›” 31일) μ°Έμ—¬λ₯Ό μ›ν•œλ‹€λ©΄ λ‹€μŒ λ§ν¬μ—μ„œ μ‹ μ²­ν•  수 μžˆμŠ΅λ‹ˆλ‹€. β‡’

solarμ—κ²Œ κΌ­ λ§žλŠ” user promptκ°€ κΆκΈˆν•˜λ‹€λ©΄ solar-prompt-cookbook을 μ°Έκ³ ν•΄ λ³΄μ„Έμš”. β‡’

πŸ‘‰

μžμ„Έν•œ μ½”λ“œλŠ” λ‹€μŒ λ§ν¬μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€. β‡’

documentation
LINK
LINK
데λͺ¨ λ°”λ‘œκ°€κΈ°
LINK
LINK