νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ νμνμΈμ. μ΄λ κ°λ ₯ν νμ ꡬνμ ν΅ν΄ μ λ’°μ±μ λμ΄κ³ λͺ¨νΈμ±μ μ€μ΄λ©° AI μμ± κ²°κ³Όλ¬Όμ μ λ°μ μΈ νμ§μ κ°μ νλ AI μνΈμμ©μ ν¨λ¬λ€μ μ νμ λλ€.
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§: νμ ꡬνμ ν΅ν AI μνΈμμ© κ°ν
μΈκ³΅μ§λ₯(AI), νΉν κ±°λ μΈμ΄ λͺ¨λΈ(LLM)μ κΈμν λ°μ μ μ½ν μΈ μμ±, λ°μ΄ν° λΆμ, 볡μ‘ν λ¬Έμ ν΄κ²°κ³Ό κ°μ λΆμΌμμ μ λ‘ μλ κ°λ₯μ±μ μ΄μμ΅λλ€. κ·Έλ¬λ μ΄λ¬ν κ°λ ₯ν λͺ¨λΈκ³Όμ μνΈμμ©μ μ’ μ’ μμ°μ΄ ν둬ννΈμ μμ‘΄νλλ°, μ΄ λ°©λ²μ μ§κ΄μ μ΄μ§λ§ λ³Έμ§μ μΌλ‘ λͺ¨νΈν¨, λΆλΆλͺ ν¨, μ€ν΄μ μμ§κ° μμ΅λλ€. μ΄λ μΌκ΄μ± μκ±°λ λΆμ ννκ±°λ μ¬μ§μ΄ λ°λμ§νμ§ μμ AI κ²°κ³Όλ¬Όλ‘ μ΄μ΄μ Έ, μ°μ μ λ°μ κ±Έμ³ μ λ’°ν μ μκ³ νμ₯ κ°λ₯ν AI λμ μ μ ν΄ν μ μμ΅λλ€.
μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§(Type-Safe Prompt Engineering)μ΄λΌλ μλ‘μ΄ ν¨λ¬λ€μμ΄ λ±μ₯νκ³ μμ΅λλ€. μ΄ μ κ·Ό λ°©μμ μ ν΅μ μΈ μννΈμ¨μ΄ κ°λ°μ μ΄μμΈ νμ μμ€ν μ μ격ν¨κ³Ό μμΈ‘ κ°λ₯μ±μ AI μνΈμμ©μ μμμΌλ‘ κ°μ Έμ€κ³ μ ν©λλ€. ν둬ννΈ μ€κ³ λ° μ€ν λ΄μ νμ κ²μ¬ λ° κ°μ κ·μΉμ ꡬνν¨μΌλ‘μ¨, μ°λ¦¬λ AI κΈ°λ° μ ν리μΌμ΄μ μ μ λ’°μ±, κ²¬κ³ μ±, μμ μ±μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
μμ°μ΄ ν둬ννΈμ λͺ¨νΈμ± λ¬Έμ
μμ°μ΄λ λλλλ‘ ννλ ₯μ΄ νλΆνμ§λ§, μ λͺ λμ μ λλ‘ λͺ¨νΈνκΈ°λ ν©λλ€. "κΈ°ν λ³νμ λν λ¬Έμλ₯Ό μμ½ν΄ μ€."μ κ°μ κ°λ¨ν ν둬ννΈλ₯Ό μκ°ν΄ 보μΈμ. μ¦μ λͺ κ°μ§ μ§λ¬Έμ΄ λ μ€λ¦ λλ€:
- μ΄λ€ λ¬Έμ? AIλ μ 곡λμ§ μλ ν λ΄μ¬λ λ§₯λ½μ μ μ μμ΅λλ€.
- μ΄λ€ μ’ λ₯μ μμ½? κ°κ΄μ μΈ μμ½? μμΈν κΈ°μ μ μμ½? νΉμ μ²μ€μ μν μμ½?
- κΈ°ν λ³νμ μ΄λ€ μΈ‘λ©΄? μμΈ? μν₯? μ μ± ν΄κ²°μ± ? κ³Όνμ ν©μ?
- μ΄λ€ κΈΈμ΄? λͺ λ¬Έμ₯? ν λ¨λ½? ν νμ΄μ§?
λͺ μμ μΈ μ μ½ μ‘°κ±΄μ΄ μμΌλ©΄ AIλ κ°μ μ ν΄μΌ νλ©°, μ΄λ μ¬μ©μμ μλμ μΌμΉνμ§ μμ μ μλ κ²°κ³Όλ¬Όλ‘ μ΄μ΄μ§λλ€. μ΄λ μ λ°λκ° κ°μ₯ μ€μν μλ£ μ§λ¨, μ¬λ¬΄ λ³΄κ³ λλ λ²λ₯ λ¬Έμ λΆμκ³Ό κ°μ μ€μν μ ν리μΌμ΄μ μμ νΉν λ¬Έμ κ° λ©λλ€.
μ ν΅μ μΈ ν둬ννΈ μμ§λμ΄λ§ κΈ°μ μ μ΄λ¬ν λ¬Έμ λ₯Ό μννκΈ° μν΄ λ°λ³΅μ μΈ κ°μ , κ΄λ²μν ν μ€νΈ, 볡μ‘ν ν둬ννΈ μ²΄μΈ μ°κ²°μ ν¬ν¨νλ κ²½μ°κ° λ§μ΅λλ€. μ΄λ μ λ ν¨κ³Όμ μ΄κΈ΄ νμ§λ§, μ΄λ¬ν λ°©λ²μ μκ°μ΄ λ§μ΄ κ±Έλ¦¬κ³ μμ μ§μ½μ μ΄λ©° μ¬μ ν λ―Έλ¬ν μ€λ₯μ μ¬μ§λ₯Ό λ¨κΉλλ€.
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ΄λ?
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ νλ‘κ·Έλλ° μΈμ΄μ λ°μ΄ν° νμ κ³Ό μ μ¬νκ², ν둬ννΈμ λͺ μμ μΈ κ΅¬μ‘°μ λ° μλ―Έμ μ μ½μ λΆμ¬νλ λ°©λ²λ‘ μ λλ€. μμ νμμ ν μ€νΈμλ§ μμ‘΄νλ λμ , μμλλ μ λ ₯ νμ, μΆλ ₯ μ€ν€λ§, νμ© κ°λ₯ν κ°μ΄λ κ°λ μ λ²μλ₯Ό μ μνλλ‘ ν둬ννΈλ₯Ό ꡬ쑰νν©λλ€.
ν΅μ¬ μμ΄λμ΄λ λ€μκ³Ό κ°μ΅λλ€:
- μμ ꡬ쑰 μ μ: AIκ° λ°μμΌ ν μ λ ₯μ νμκ³Ό μμ±ν΄μΌ ν μΆλ ₯μ νμμ μ§μ ν©λλ€.
- λ°μ΄ν° λ¬΄κ²°μ± κ°μ : AIκ° μ²λ¦¬νκ³ μμ±νλ λ°μ΄ν°κ° μ¬μ μ μλ κ·μΉκ³Ό μ μ½ μ‘°κ±΄μ μ€μνλλ‘ λ³΄μ₯ν©λλ€.
- λͺ¨νΈμ± κ°μ: AI λͺ¨λΈμ ν΄μμ μ¬μ§λ₯Ό μ κ±°νκ±°λ ν¬κ² μ€μ λλ€.
- μμΈ‘ κ°λ₯μ± μ¦κ°: μ¬λ¬ μνΈμμ©μ κ±Έμ³ AI μλ΅μ λ μΌκ΄λκ³ μ λ’°ν μ μκ² λ§λλλ€.
μ΄λ¬ν ν¨λ¬λ€μ μ νμ λ¨μν μ리ν ν μ€νΈ λ¬Έμμ΄μ λ§λλ κ²μ λμ΄, κ΅νλλ μ 보μ νμ μ΄ κ³΅μμ μΌλ‘ μ μλκ³ κ²μ¦λλ AI μνΈμμ©μ μν κ²¬κ³ ν μΈν°νμ΄μ€λ₯Ό μ€κ³νλ κ²μΌλ‘ λμκ°λλ€.
ν΅μ¬ κ°λ λ° κ΅¬μ± μμ
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ ꡬννλ λ°μλ λͺ κ°μ§ ν΅μ¬ κ°λ μ΄ ν¬ν¨λ©λλ€:
1. ν둬ννΈ μ€ν€λ§
λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ API κ³μ½κ³Ό μ μ¬νκ², ν둬ννΈ μ€ν€λ§λ μ λ ₯ ν둬ννΈμ AIμ μΆλ ₯ λͺ¨λμ λν ꡬ쑰μ μμ λ°μ΄ν° νμ μ μ μν©λλ€. μ΄λ¬ν μ€ν€λ§μλ λ€μμ΄ ν¬ν¨λ μ μμ΅λλ€:
- νμ νλ: ν둬ννΈμ λ°λμ μ‘΄μ¬ν΄μΌ νλ νμ μ 보 μ‘°κ°.
- λ°μ΄ν° νμ : μ 보 μ‘°κ°μ΄ λ¬Έμμ΄, μ μ, λΆλ¦¬μΈ, λ μ§, 리μ€νΈ λλ λ 볡μ‘ν ꡬ쑰νλ κ°μ²΄μ¬μΌ νλμ§ μ§μ .
- μ μ½ μ‘°κ±΄: λ°μ΄ν°κ° μ€μν΄μΌ νλ κ·μΉ, μ: κ° λ²μ(μ: 18μΈμμ 99μΈ μ¬μ΄), νμ ν¨ν΄(μ: μ΄λ©μΌ μ£Όμ νμ) λλ μ΄κ±°ν(μ: μν νλλ 'pending', 'processing', 'completed' μ€ νλμ¬μΌ ν¨).
- μ νμ νλ: ν¬ν¨λ μ μμ§λ§ λ°λμ νμνμ§λ μμ μ 보.
μμ: "λ μ¨μ λν΄ μλ €μ€"λΌκ³ 묻λ λμ , νμ -μΈμ΄ν ν둬ννΈλ λ€μκ³Ό κ°μ μ€ν€λ§λ₯Ό μ§μ ν μ μμ΅λλ€:
{
"type": "object",
"properties": {
"location": {"type": "string", "description": "λ μ¨ μ보λ₯Ό μν λμμ κ΅κ°"},
"date": {"type": "string", "format": "date", "description": "μ보 λ μ§ (YYYY-MM-DD)"},
"units": {"type": "string", "enum": ["celsius", "fahrenheit"], "default": "celsius"}
},
"required": ["location", "date"]
}
μ΄ μ€ν€λ§λ 'location'(λ¬Έμμ΄)κ³Ό 'date'(λ¬Έμμ΄, YYYY-MM-DD νμ)κ° νμμ΄λ©°, 'units'(celsius λλ fahrenheit)λ κΈ°λ³Έκ°μ΄ μλ μ ν μ¬νμμ λͺ μμ μΌλ‘ μ μν©λλ€. AIλ μ²λ¦¬ λ° μλ΅ μ μ΄ κ΅¬μ‘°λ₯Ό μ€μν κ²μΌλ‘ μμλ©λλ€.
2. νμ μ μ λ° μ ν¨μ± κ²μ¬
μ΄λ AIμ λλ©μΈκ³Ό κ΄λ ¨λ 볡μ‘ν κ°μ²΄λ₯Ό λνλ΄κΈ° μν΄ μ¬μ©μ μ μ νμ μ μ μνκ±°λ κΈ°μ‘΄ νμ μ νμ©νλ κ²μ ν¬ν¨ν©λλ€. μ ν¨μ± κ²μ¬λ μ΄λ¬ν νμ μ μ€μνλ λ°μ΄ν°κ° AIλ‘ μ μ‘λκΈ° μ μ΄λ μΆλ ₯μ λ°μ νμ μ ννμ§ νμΈν©λλ€.
- κΈ°λ³Έ νμ : λ¬Έμμ΄, μ μ, μ€μ, λΆλ¦¬μΈ, null.
- ꡬ쑰νλ νμ : κ°μ²΄(ν€-κ° μ), λ°°μ΄(리μ€νΈ).
- μ΄κ±°ν: 미리 μ μλ νμ© κ° μ§ν©.
- νμ νΉμ νμ : μ΄λ©μΌ, URL, λ μ§, μκ°, UUID.
- μ¬μ©μ μ μ νμ : 'Product', 'Customer', 'MedicalRecord'μ κ°μ λλ©μΈ νΉμ κ°μ²΄λ₯Ό λνλ΄λ©°, κ°κ° κ³ μ ν μμ± λ° μ μ½ μ‘°κ±΄ μ§ν©μ κ°μ§.
μ ν¨μ± κ²μ¬λ μ¬λ¬ λ¨κ³μμ λ°μν μ μμ΅λλ€: ν둬ννΈλ₯Ό ꡬμ±νκΈ° μ μ μ¬μ©μ μ λ ₯μ κ²μ¦νκ³ , AIμ 보λ΄κΈ° μ μ ν둬ννΈ μ체λ₯Ό μ€ν€λ§μ λν΄ κ²μ¦νκ³ , μμ μΆλ ₯ μ€ν€λ§μ λν΄ AIμ μΆλ ₯μ κ²μ¦ν©λλ€.
3. νμ κ°μ μμ§/λΌμ΄λΈλ¬λ¦¬
μ΄λ ν둬ννΈ λ΄μμ νμ μ μ μ, μ ν¨μ± κ²μ¬, κ°μ λ₯Ό μ©μ΄νκ² νλ λꡬλ νλ μμν¬μ λλ€. κ°λ¨ν JSON μ€ν€λ§ κ²μ¦κΈ°λΆν° AI μνΈμμ©μ μν΄ μ€κ³λ λ μ κ΅ν λΌμ΄λΈλ¬λ¦¬κΉμ§ λ€μν μ μμ΅λλ€.
μμλ λ€μκ³Ό κ°μ΅λλ€:
- JSON μ€ν€λ§ κ²μ¦κΈ°: Pythonμ 'jsonschema'λ JavaScriptμ 'ajv'μ κ°μ λΌμ΄λΈλ¬λ¦¬λ ꡬ쑰νλ ν둬ννΈ λ°μ΄ν°λ₯Ό κ²μ¦ν μ μμ΅λλ€.
- LangChain λλ LlamaIndexμ κ°μ νλ μμν¬: μ΄λ¬ν νλ«νΌμ ꡬ쑰νλ μΆλ ₯ νμ± λ° Pydanticκ³Ό μ μ¬ν λͺ¨λΈμ ν΅ν©νμ¬ μμ μΆλ ₯ μ€ν€λ§λ₯Ό μ μνλ κΈ°λ₯μ μ μ λ λ§μ΄ ν¬ν¨νκ³ μμΌλ©°, μ΄λ ν¨κ³Όμ μΌλ‘ νμ μμ μ±μ κ°λ₯νκ² ν©λλ€.
- μ¬μ©μ μ μ νμ μμ€ν : κ³ λλ‘ μ λ¬Ένλ νμ μ μ λ° μ ν¨μ± κ²μ¬ κ·μΉμ΄ νμν νΉμ AI μ ν리μΌμ΄μ μ μν λ§μΆ€ν μμ€ν κ°λ°.
4. μ λ ₯ λ° μΆλ ₯ ꡬ쑰ν
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ μ’ μ’ λ³΅μ‘ν 쿼리λ μ λ°ν λ°μ΄ν° μΆμΆμ΄ νμν λ, μμ μμ°μ΄λ³΄λ€λ ꡬ쑰νλκ³ κΈ°κ³κ° μ½μ μ μλ νμ(μ: JSON, YAML)μΌλ‘ μ 보λ₯Ό AIμ μ μνλ κ²μ ν¬ν¨ν©λλ€.
μ λ ₯ μμ:
λ€μ λμ : "ν리 μν ν κ·Όμ²μ μ±μΈ 2λͺ μ΄ 7μ 15μΌλΆν° 7μ 20μΌκΉμ§ 묡μ νΈν μ μ°Ύμμ€, μμ°μ 1λ°μ 200μ λ‘ μ λμΌ."
ꡬ쑰νλ μ λ ₯μ λ€μκ³Ό κ°μ μ μμ΅λλ€:
{
"query_type": "hotel_search",
"parameters": {
"location": "Paris, France",
"landmark": "Eiffel Tower",
"check_in_date": "2024-07-15",
"check_out_date": "2024-07-20",
"adults": 2,
"max_price_per_night": 200,
"currency": "EUR"
}
}
μΆλ ₯ μμ:
κ·Έλ¬λ©΄ AIλ μ¬μ μ μλ μ€ν€λ§λ‘ κ²°κ³Όλ₯Ό λ°ννλλ‘ μμ²λ°μ΅λλ€. μλ₯Ό λ€λ©΄:
{
"hotels": [
{
"name": "Hotel Lumiere",
"address": "12 Rue de la Lumiere, Paris",
"price_per_night": 190,
"currency": "EUR",
"rating": 4.5,
"amenities": ["WiFi", "Breakfast", "Gym"]
}
// ... λ λ§μ νΈν
]
}
νμ κ°μ μμ§μ AIμ μλ΅μ΄ μ΄ 'hotel_search' μΆλ ₯ μ€ν€λ§λ₯Ό μ€μνλμ§ κ²μ¦ν©λλ€.
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ μ΄μ
ν둬ννΈ μμ§λμ΄λ§μ νμ -μΈμ΄ν κ΄νμ μ±ννλ©΄ μλΉν μ΄μ μ μ»μ μ μμ΅λλ€:
1. ν₯μλ μ λ’°μ± λ° μμΈ‘ κ°λ₯μ±
λͺ μμ μΈ κ΅¬μ‘°μ μ μ½ μ‘°κ±΄μ μ μν¨μΌλ‘μ¨ AIκ° ν둬ννΈλ₯Ό μλͺ» ν΄μν κ°λ₯μ±μ΄ ν¬κ² μ€μ΄λλλ€. μ΄λ λ μΌκ΄λκ³ μμΈ‘ κ°λ₯ν κ²°κ³Όλ¬Όλ‘ μ΄μ΄μ Έ, AI μμ€ν μ νλ‘λμ νκ²½μμ μ λ’°ν μ μκ² λ§λλλ€.
κΈλ‘λ² μμ: λ€κ΅μ μ μ μκ±°λ νλ«νΌμ νμ -μΈμ΄ν ν둬ννΈλ₯Ό μ¬μ©νμ¬ AIκ° μμ±νλ μ ν μ€λͺ μ νμ νΉμ νμ μμ± μΈνΈ(μ: 'product_name', 'price', 'currency', 'SKU', 'description', 'dimensions')κ° ν¬ν¨λλλ‘ λ³΄μ₯ν©λλ€. μ΄λ¬ν μΌκ΄μ±μ λ€λ₯Έ μΈμ΄μ μ§μ νμ€μ΄ κ΄λ ¨λ κΈλ‘λ² μ¬κ³ κ΄λ¦¬ μμ€ν μμ λ§€μ° μ€μν©λλ€. νμ μμ€ν μ 'price'κ° νμ κ΄λ ¨ 'currency'(μ: 'USD', 'EUR', 'JPY')μ ν¨κ» μ«μ κ°μμ 보μ₯νμ¬ κ°κ²© μ 보μ μΉλͺ μ μΈ μ€λ₯λ₯Ό λ°©μ§ν©λλ€.
2. κ°μ λ λ°μ΄ν° νμ§ λ° λ¬΄κ²°μ±
νμ μ ν¨μ± κ²μ¬λ AIκ° μ²λ¦¬νκ³ μμ±νλ λ°μ΄ν°κ° μ ννκ³ μμ νμ λ° λΉμ¦λμ€ κ·μΉμ μ€μνλλ‘ λ³΄μ₯ν©λλ€. μ΄λ λ―Όκ°νκ±°λ μ€μν λ°μ΄ν°λ₯Ό λ€λ£¨λ μ ν리μΌμ΄μ μ λ§€μ° μ€μν©λλ€.
κΈλ‘λ² μμ: νμ μμ½μ μμ±νλ ν¬μ€μΌμ΄ AI μ΄μμ€ν΄νΈ. λΉκ΅¬μ‘°νλ ν μ€νΈ λμ AIλ 'PatientSummary' μ€ν€λ§λ₯Ό μ€μνλ λ°μ΄ν°λ₯Ό μΆλ ₯νλλ‘ ν둬ννΈλ₯Ό λ°μ΅λλ€. μ΄ μ€ν€λ§λ λ€μμ μ μν μ μμ΅λλ€:
- `patient_id`: λ¬Έμμ΄ (UUID νμ)
- `diagnosis`: λ¬Έμμ΄
- `treatment_plan`: κ°μ²΄μ λ°°μ΄, κ° κ°μ²΄λ `medication`(λ¬Έμμ΄), `dosage`(λ¬Έμμ΄, μ: '500mg'), `frequency`(μ΄κ±°ν: 'daily', 'twice_daily', 'as_needed')λ₯Ό κ°μ§
- `allergies`: λ¬Έμμ΄μ λ°°μ΄
- `vital_signs`: `blood_pressure`(λ¬Έμμ΄, μ: '120/80 mmHg'), `heart_rate`(μ μ, bpm)λ₯Ό κ°μ§ κ°μ²΄
νμ μμ€ν μ 볡μ©λμ΄ μ¬λ°λ₯΄κ² νμνλκ³ , νλ ₯ μ§νμ λ¨μκ° ν¬ν¨λλ©°, `patient_id`μ κ°μ μ€μν νλκ° μ‘΄μ¬νκ³ μ ν¨νμ§ νμΈν©λλ€. μ΄λ AIκ° μμ±ν μλͺ»λ μ λ³΄λ‘ μΈν΄ λ°μν μ μλ μλͺ μ μννλ μ€λ₯λ₯Ό λ°©μ§ν©λλ€.
3. λͺ¨νΈμ± λ° μ€ν΄ κ°μ
νμ , μ μ½ μ‘°κ±΄, μμ νμμ λͺ μμ μΌλ‘ μ μνλ©΄ AIκ° μλͺ»λ κ°μ μ ν μ¬μ§κ° μ€μ΄λλλ€. μ΄λ ν둬ννΈ λ°μ μμ μλλ₯Ό λͺ νν ν©λλ€.
κΈλ‘λ² μμ: AIλ₯Ό μ¬μ©νμ¬ λ€μ΄μ€λ λ¬Έμλ₯Ό λΆλ₯νλ κ³ κ° μ§μ μ±λ΄. νμ -μΈμ΄ν ν둬ννΈ μμ€ν μ 'query_type'μ `['technical_support', 'billing_inquiry', 'product_inquiry', 'feedback']`κ³Ό κ°μ μ΄κ±°νμΌλ‘ μ μν μ μμ΅λλ€. μ¬μ©μμ μ λ ₯μ΄ μ΄κΈ° μμ°μ΄ μ΄ν΄(NLU) κ³μΈ΅μ κ±°μΉ ν μ΄ μ΄κ±°νμ λ²μ΄λλ λΆλ₯ κ²°κ³Όλ₯Ό λ³μΌλ©΄, μμ€ν μ μ΄λ₯Ό κ²ν νλλ‘ νμνκ±°λ λͺ ννλ₯Ό μμ²νμ¬ μ μΈκ³μ μΌλ‘ κ³ κ° μμ²μ΄ μλͺ» μ λ¬λλ κ²μ λ°©μ§ν©λλ€.
4. ν₯μλ AI μμ μ± λ° λ³΄μ
μ λ ₯ λ° μΆλ ₯ μ νμ μ νν¨μΌλ‘μ¨ νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ ν둬ννΈ μ£Όμ 곡격μ λ°©μ§νκ³ μ ν΄νκ±°λ λΆμ μ ν μ½ν μΈ μμ±μ μννλ λ° λμμ΄ λ μ μμ΅λλ€. μλ₯Ό λ€μ΄, AIκ° μ«μ λ±κΈλ§ μΆλ ₯νλλ‘ μμλλ κ²½μ°, μ μ± μ½λλ λ―Όκ°ν μ 보λ₯Ό μΆλ ₯νλλ‘ μμΌ μ μμ΅λλ€.
κΈλ‘λ² μμ: μ¨λΌμΈ ν¬λΌμ κ΄λ¦¬νλ λ° μ¬μ©λλ AI μμ€ν . μ¬μ©μ μμ± μ½ν μΈ λ₯Ό λΆμνλλ‘ μ€κ³λ ν둬ννΈλ νμ -μΈμ΄νμΌ μ μμΌλ©°, 'SAFE' μν λλ νΉμ 'violation_type'(μ: 'hate_speech', 'spam', 'harassment')μ΄ μλ 'VIOLATION' μνμ μΆλ ₯μ μμν©λλ€. μμ€ν μ μ΄ κ΅¬μ‘°νλ μ€ν€λ§λ₯Ό λ°λ₯΄μ§ μλ λͺ¨λ μΆλ ₯μ κ±°λΆνλλ‘ μ€κ³λμ΄, AI μμ²΄κ° μ ν΄ν μ½ν μΈ λ₯Ό μμ±νκ±°λ μ ν μλ ν μ€νΈλ₯Ό μΆλ ₯νλλ‘ μ‘°μλλ κ²μ λ°©μ§ν©λλ€.
5. κ°μ λ κ°λ°μ κ²½ν λ° μ μ§λ³΄μμ±
νμ μμ€ν μ κ°λ°μκ° AI μ ν리μΌμ΄μ μ λ μ½κ² μ΄ν΄νκ³ , ꡬμΆνκ³ , μ μ§ κ΄λ¦¬ν μ μλλ‘ ν©λλ€. λͺ ννκ² μ μλ μ€ν€λ§λ λ¬Έμ μν μ νλ©° μμ€ν μ λ€λ₯Έ λΆλΆ κ° λλ μΈκ° κ°λ°μμ AI κ°μ κ³μ½ μν μ ν©λλ€.
κΈλ‘λ² μμ: κΈλ‘λ² κΈμ΅ λΆμ νμ¬μμ μ¬λ¬ νμ΄ μμ₯ μμΈ‘, μν νκ°, ν¬νΈν΄λ¦¬μ€ μ΅μ νλ₯Ό μν AI λͺ¨λμ κ°λ°ν μ μμ΅λλ€. ν둬ννΈμ μΆλ ₯μ νμ€νλ νμ μμ€ν μ μ¬μ©νλ©΄ μ΄λ¬ν λͺ¨λμ΄ μννκ² ν΅ν©λ μ μμ΅λλ€. μλ₯Ό λ€μ΄ 'MarketData' νμ μ ν μ 체μ κ±Έμ³ μΌκ΄λκ² μ μλ μ μμΌλ©°, 'timestamp'(ISO 8601 νμ), 'stock_symbol'(λ¬Έμμ΄, μ: 'AAPL'), 'price'(μ€μ), 'volume'(μ μ), 'exchange'(μ΄κ±°ν: 'NASDAQ', 'NYSE', 'LSE')μ κ°μ νλλ₯Ό μ§μ ν©λλ€. μ΄λ μμ₯ μμΈ‘ λͺ¨λμμ μν νκ° λͺ¨λλ‘ μ λ¬λλ λ°μ΄ν°κ° μ΄λ€ νμ΄ κ° λΆλΆμ κ°λ°νλμ§μ κ΄κ³μμ΄ μμΈ‘ κ°λ₯νκ³ μ¬μ© κ°λ₯ν νμμμ 보μ₯ν©λλ€.
6. κ΅μ ν λ° νμ§ν μ΄μ§
μμ°μ΄λ λ³Έμ§μ μΌλ‘ νΉμ μΈμ΄μ λ¬Άμ¬ μμ§λ§, ꡬ쑰νλ λ°μ΄ν°μ νμ μ μλ λ 보νΈμ μΈ κΈ°λ°μ μ 곡ν©λλ€. κ·Έλ° λ€μ νμ§ν μμ μ κ° μΈμ΄μ λν΄ λ§€μ° λ€λ₯Έ ν둬ννΈ κ³΅μμ κ΄λ¦¬νλ λμ μ μ μλ ꡬ쑰 λ΄μμ νΉμ λ¬Έμμ΄ νλλ₯Ό λ²μνλ λ° μ§μ€ν μ μμ΅λλ€.
κΈλ‘λ² μμ: νμ§νλ λ§μΌν 문ꡬλ₯Ό μμ±νλ AI μμ€ν . ν둬ννΈλ 'product_name'(λ¬Έμμ΄), 'features'(λ¬Έμμ΄ λ°°μ΄), 'target_audience'(λ¬Έμμ΄), 'brand_voice'(μ΄κ±°ν: 'formal', 'casual', 'humorous')μ κ°μ νλλ₯Ό κ°μ§ 'Product' κ°μ²΄λ₯Ό μꡬν μ μμ΅λλ€. AIλ 'marketing_headline'(λ¬Έμμ΄)κ³Ό 'promotional_paragraph'(λ¬Έμμ΄)λ₯Ό μμ±νλλ‘ μ§μλ°μ΅λλ€. νλμ€μ΄ νμ§νλ₯Ό μν΄ μ λ ₯μ 'locale': 'fr-FR'μ μ§μ ν μ μμΌλ©° AIλ νλμ€μ΄ 문ꡬλ₯Ό μμ±ν©λλ€. νμ μμ μ±μ κΈ°λ³Έ μ ν μ λ³΄κ° λͺ¨λ νμ§νλ μΆλ ₯μμ μΌκ΄λκ² μ΄ν΄λκ³ μ μ©λλλ‘ λ³΄μ₯ν©λλ€.
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§ ꡬννκΈ°
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ μ€μ ꡬνμ μ¬λ¬ κ°μ§ λ°©λ²μΌλ‘ μ κ·Όν μ μμ΅λλ€:
1. μ¬λ°λ₯Έ λꡬμ νλ μμν¬ μ ν
ꡬ쑰νλ λ°μ΄ν° λ° μΆλ ₯ νμ±μ μ§μνλ κΈ°μ‘΄ λΌμ΄λΈλ¬λ¦¬ λ° νλ μμν¬λ₯Ό νμ©νμΈμ. λ§μ μ΅μ LLM μ€μΌμ€νΈλ μ΄μ λꡬλ μ΄λ₯Ό μΌλμ λκ³ λ§λ€μ΄μ‘μ΅λλ€.
- Pydantic: Pythonμμ Pydanticμ λ°μ΄ν° μ ν¨μ± κ²μ¬ κΈ°λ₯μ AI λͺ¨λΈμ μΆλ ₯ μ€ν€λ§ μν μ ν μ μλ λ°μ΄ν° λͺ¨λΈμ μ μνλ λ° λ리 μ¬μ©λ©λλ€.
- LangChain: ꡬ쑰νλ μΆλ ₯μ κ°μ ν μ μλ 'Output Parsers'μ 'Chains'λ₯Ό μ 곡ν©λλ€.
- LlamaIndex: ꡬ쑰νλ λ°μ΄ν°μ ν¨κ» μλν μ μλ 'Response Synthesis' λ° 'Data Connectors'λ₯Ό μ 곡ν©λλ€.
- OpenAI Assistants API: AIκ° νΈμΆν μ μλ ν¨μμ λν ꡬ쑰νλ μ λ ₯ λ° μΆλ ₯μ μ μνλ κ²μ λ³Έμ§μ μΌλ‘ ν¬ν¨νλ 'Tools'μ 'Function Calling'μ μ§μν©λλ€.
- JSON Schema: ν둬ννΈ λ° μΆλ ₯ μ€ν€λ§λ₯Ό μ μνλ λ° μ μ©ν JSON λ°μ΄ν° ꡬ쑰 μ μ νμ€μ λλ€.
2. κ²¬κ³ ν μ€ν€λ§ μ€κ³
ν둬ννΈ λ° μΆλ ₯ μ€ν€λ§λ₯Ό μ μ€νκ² μ€κ³νλ λ° μκ°μ ν¬μνμΈμ. μ¬κΈ°μλ λ€μμ΄ ν¬ν¨λ©λλ€:
- λλ©μΈ μ΄ν΄: AI μμ κ³Ό κ΄λ ¨λ κ°μ²΄μ κ΄κ³λ₯Ό λͺ ννκ² μ μν©λλ€.
- μ μ½ μ‘°κ±΄ μ§μ : μ΄κ±°ν, μ κ·μ ν¨ν΄, λ²μ κ²μ¬λ₯Ό μ¬μ©νμ¬ λ°μ΄ν° μ ν¨μ±μ κ°μ ν©λλ€.
- μ€ν€λ§ λ¬Έμν: μ€ν€λ§λ₯Ό κ³μ½μΌλ‘ μ·¨κΈνκ³ μ λ¬Έμνλλλ‘ ν©λλ€.
3. μ ν¨μ± κ²μ¬ κ³μΈ΅ ν΅ν©
μ€μν μ§μ μμ μ ν¨μ± κ²μ¬λ₯Ό ꡬννμΈμ:
- ν둬ννΈ μ μ ν¨μ± κ²μ¬: ν둬ννΈμ μΌλΆλ₯Ό ꡬμ±ν μ¬μ©μκ° μ 곡ν λͺ¨λ λ°μ΄ν°λ₯Ό κ²μ¦ν©λλ€.
- ν둬ννΈ κ΅¬μ‘° μ ν¨μ± κ²μ¬: ꡬ쑰νλ ν둬ννΈ μμ²΄κ° μ μλ μ€ν€λ§λ₯Ό μ€μνλμ§ νμΈν©λλ€.
- μλ΅ ν μ ν¨μ± κ²μ¬: AIμ μΆλ ₯μ μμ μΆλ ₯ μ€ν€λ§μ λν΄ κ²μ¦ν©λλ€. μ ν¨μ± κ²μ¬ μ€λ₯λ₯Ό μ μ νκ² μ²λ¦¬ν©λλ€(μ: ν둬ννΈ μ¬μλ, AIμ μ¬ν¬λ§· μμ², λλ μ¬λμ κ²ν λ₯Ό μν΄ νλκ·Έ μ§μ ).
4. νμ κ³Ό μ μ½ μ‘°κ±΄μ λ°λ³΅μ κ°μ
λͺ¨λ μννΈμ¨μ΄ κ°λ° νλ‘μΈμ€μ λ§μ°¬κ°μ§λ‘, μ€ν€λ§ μ€κ³ λ° νμ μ μλ λ°λ³΅μ΄ νμν μ μμ΅λλ€. μλ‘μ΄ μ£μ§ μΌμ΄μ€λ₯Ό λ§λκ±°λ λ¨μ μ κΉ¨λ¬μ λλ§λ€ μ€ν€λ§λ₯Ό κ·Έμ λ§κ² μ λ°μ΄νΈνμΈμ.
5. μμ°μ΄μ ꡬ쑰νλ λ°μ΄ν° μ°κ²°
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ΄ μμ°μ΄λ₯Ό μμ ν ν¬κΈ°νλ κ²μ μλ―Ένμ§λ μμ΅λλ€. μ’ μ’ νμ΄λΈλ¦¬λ μ κ·Ό λ°©μμ ν¬ν¨ν©λλ€:
- μλλ₯Ό μν μμ°μ΄, λ°μ΄ν°λ₯Ό μν ꡬ쑰: μ λ°μ μΈ μμ κ³Ό λ§₯λ½μ μ λ¬νκΈ° μν΄ μμ°μ΄λ₯Ό μ¬μ©νλ, νΉμ λ§€κ°λ³μμ λν΄μλ ꡬ쑰νλ λ°μ΄ν°λ₯Ό ν¬ν¨μν΅λλ€.
- λ²μμ μν AI: μμ°μ΄ μ λ ₯μ μ¬μ μ μλ μ€ν€λ§λ₯Ό μ€μνλ ꡬ쑰νλ νμμΌλ‘ λ³ννκ±°λ, ꡬ쑰νλ AI μΆλ ₯μ μ¬λμ΄ λ μ½κΈ° μ¬μ΄ μμ°μ΄λ‘ λ€μ λ²μνκΈ° μν΄ AIλ₯Ό μ¬μ©ν©λλ€.
μμ: μ¬μ©μκ° "λ€μ μ£Ό νμμΌμ λ°λ νλλ‘μμ μΆλ°νλ λμΏν λΉμ¦λμ€ ν΄λμ€ ν곡νΈμ μμ½ν΄ μ€."λΌκ³ λ§ν μ μμ΅λλ€. μμ€ν μ NLU λͺ¨λΈμ μ¬μ©νμ¬ κ°μ²΄λ₯Ό μΆμΆν λ€μ ꡬ쑰νλ JSON κ°μ²΄λ₯Ό ꡬμ±ν μ μμ΅λλ€:
{
"intent": "flight_booking",
"parameters": {
"destination": "Tokyo",
"departure_date": "(calculate next Tuesday)",
"cabin_class": "business",
"origin_airport": "LHR"
}
}
μ΄ κ΅¬μ‘°νλ κ°μ²΄λ μ²λ¦¬λ₯Ό μν΄ AI λλ λ°±μλ μλΉμ€λ‘ μ μ‘λ©λλ€. κ·Έλ° λ€μ AIμ νμΈ λ©μμ§λ μ¬μ μ μλ μΆλ ₯ μ€ν€λ§λ₯Ό κΈ°λ°μΌλ‘ μμ±λκ³ μ μ¬μ μΌλ‘ μμ°μ΄λ‘ λ²μλ μ μμ΅λλ€.
κ³Όμ λ° κ³ λ €μ¬ν
κ°λ ₯νμ§λ§, νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μλ κ³Όμ κ° μλ κ²μ μλλλ€:
- 볡μ‘μ±: 볡μ‘ν νμ μμ€ν κ³Ό μ€ν€λ§λ₯Ό μ€κ³νκ³ μ μ§ κ΄λ¦¬νλ κ²μ κ°λ° μ€λ²ν€λλ₯Ό μΆκ°ν μ μμ΅λλ€.
- κ²½μ§μ±: μ§λμΉκ² μ격ν μ€ν€λ§λ νΉν μ°½λ°μ νλμ΄ μꡬλλ μμ μμ AIμ μ μ°μ±κ³Ό μ°½μμ±μ μ νν μ μμ΅λλ€. μ¬λ°λ₯Έ κ· νμ μ°Ύλ κ²μ΄ μ€μν©λλ€.
- λꡬμ μ±μλ: λΉ λ₯΄κ² λ°μ νκ³ μμ§λ§, AI μνΈμμ©μμ μνν νμ κ°μ λ₯Ό μν λꡬλ μ ν΅μ μΈ μννΈμ¨μ΄ κ°λ°μ λΉν΄ μμ§ μ±μνλ λ¨κ³μ λλ€.
- μ€ν€λ§ μ§ν: AI λͺ¨λΈκ³Ό μ ν리μΌμ΄μ μ΄ μ§νν¨μ λ°λΌ μ€ν€λ§λ μ λ°μ΄νΈν΄μΌ νλ©°, μ΄λ λ²μ κ΄λ¦¬μ μ μ€ν κ΄λ¦¬λ₯Ό νμλ‘ ν©λλ€.
- μ€λ₯ μ²λ¦¬: μ ν¨μ± κ²μ¬ μ€ν¨λ₯Ό μ²λ¦¬νκΈ° μν κ²¬κ³ ν λ©μ»€λμ¦μ΄ νμμ μ λλ€. λ¨μν μ ν¨νμ§ μμ μΆλ ₯μ κ±°λΆνλ κ²λ§μΌλ‘λ μΆ©λΆνμ§ μμ μ μμΌλ©°, μμ λλ λ체 μ λ΅μ΄ νμν©λλ€.
νμ -μΈμ΄ν AI μνΈμμ©μ λ―Έλ
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ AI μνΈμμ©μ λ μ λ’°ν μ μκ³ , μμ νλ©°, νμ₯ κ°λ₯νκ² λ§λλ μ€μν λ¨κ³μ λλ€. AI μμ€ν μ΄ κΈμ΅, ν¬μ€μΌμ΄μμ λ¬Όλ₯, κ΅μ‘μ μ΄λ₯΄κΈ°κΉμ§ λ€μν κΈλ‘λ² λΆλ¬Έμ μ€μν μν¬νλ‘μ°μ λ λ§μ΄ ν΅ν©λ¨μ λ°λΌ μμΈ‘ κ°λ₯νκ³ μ μ΄ κ°λ₯ν AI νλμ λν μꡬλ λμ± μ¦κ°ν κ²μ λλ€.
μ΄ μ κ·Ό λ°©μμ AIμ λ₯λ ₯μ μ΅μ νλ κ²μ΄ μλλΌ ν¨κ³Όμ μΌλ‘ μ λνλ κ²μ λλ€. κ²¬κ³ ν μννΈμ¨μ΄ μμ§λμ΄λ§ μμΉμ μ°¨μ©ν¨μΌλ‘μ¨, μ°λ¦¬λ κ°λ ₯ν λΏλ§ μλλΌ μ λ’°ν μ μλ AI μ ν리μΌμ΄μ μ ꡬμΆν μ μμ΅λλ€. μ λμ μΈ AI νλ«νΌμμ ꡬ쑰νλ λ°μ΄ν°, ν¨μ νΈμΆ, μ μλ μΆλ ₯ νμμΌλ‘ λμκ°λ μΆμΈλ λͺ νν λ°©ν₯μ λνλ λλ€. νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ μ μΈκ³μ μΌλ‘ AIλ₯Ό μ± μκ° μκ³ ν¨κ³Όμ μΌλ‘ λ°°ν¬νλ €λ λͺ¨λ μ‘°μ§μκ² κΈ°λ³Έμ μΈ κ΄νμ΄ λ κ²μ λλ€.
κΈλ‘λ² νμ μν μ€ν κ°λ₯ν ν΅μ°°λ ₯
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ μ±ννλ €λ κ΅μ νμ μν΄:
- μκ² μμνκΈ°: μν¬νλ‘μ° λ΄μμ λͺ¨νΈμ±μ΄λ μ λ’°μ± λ¬Έμ λ‘ μ΄λ €μμ κ²ͺλ νΉμ νκ³ μ€μν AI μνΈμμ©μ μλ³νμΈμ. ν΄λΉ νΉμ μ¬μ© μ¬λ‘μ λν΄ λ¨Όμ νμ μμ μ±μ ꡬννμΈμ.
- μ€ν€λ§ νμ€ν: κΈλ‘λ² μ΄μκ³Ό κ΄λ ¨λ μΌλ°μ μΈ λ°μ΄ν° νμ (μ: μ£Όμ, λ μ§, ν΅ν, μ ν ID)μ λν νμ€νλ μ€ν€λ§ μΈνΈλ₯Ό κ°λ°νμΈμ.
- λꡬμ ν¬μνκΈ°: LangChainμ΄λ Pydanticκ³Ό κ°μ νλ μμν¬λ₯Ό νμνκ³ κ°λ° νμ΄νλΌμΈμ ν΅ν©νμΈμ. νμλ€μκ² μ΄λ¬ν λꡬλ₯Ό ν¨κ³Όμ μΌλ‘ μ¬μ©νλ λ°©λ²μ κ΅μ‘νμΈμ.
- μ μμ λν νμ : λ€κ΅μ κΈ°μ μ κ²½μ°, μ§μμ μ°¨μ΄(μ: λ€λ₯Έ λ μ§ νμ, ν΅ν κΈ°νΈ, κ·μ μꡬ μ¬ν)λ₯Ό κ³ λ €νκΈ° μν΄ λ€λ₯Έ μ§μμ λλ©μΈ μ λ¬Έκ°λ€μ΄ μ€ν€λ§ μ μμ νλ ₯νλλ‘ νμΈμ.
- μ€λ₯ μ²λ¦¬ μ°μ μμ μ§μ : νμ μ ν¨μ± κ²μ¬κ° μ€ν¨ν κ²½μ°λ₯Ό λλΉν΄ λͺ νν λ체 λ©μ»€λμ¦κ³Ό μΈμ κ²ν νλ‘μΈμ€λ₯Ό μ€κ³νμΈμ. μ΄λ μ΄μ μ°μμ±κ³Ό μ λ’°λ₯Ό μ μ§νλ λ° λ§€μ° μ€μν©λλ€.
- λͺ¨λ κ² λ¬ΈμννκΈ°: ν둬ννΈ μ€ν€λ§λ₯Ό μ€μν λ¬Έμλ‘ μ·¨κΈνμΈμ. μ κ·Ό κ°λ₯νκ³ , μ΄ν΄νκΈ° μ¬μ°λ©°, λ²μ κ΄λ¦¬λλλ‘ νμΈμ.
- μ§μμ μΈ νμ΅: AI λΆμΌλ λΉ λ₯΄κ² λ°μ νκ³ μμ΅λλ€. ν둬ννΈ μμ§λμ΄λ§ λ° AI μνΈμμ© μ€κ³μ μλ‘μ΄ λꡬ, κΈ°μ , λͺ¨λ² μ¬λ‘μ λν μ΅μ μ 보λ₯Ό μ μ§νμΈμ.
νμ -μΈμ΄ν ν둬ννΈ μμ§λμ΄λ§μ μμ©ν¨μΌλ‘μ¨ μ‘°μ§μ AIμ μ μ¬λ ₯μ μ΅λν λ°ννμ¬ μ§λ₯μ μΌ λΏλ§ μλλΌ μ μΈκ³ μ¬μ©μλ₯Ό μν΄ μ λ’°ν μ μκ³ μμ νλ©° μμΈ‘ κ°λ₯ν μ ν리μΌμ΄μ μ ꡬμΆν μ μμ΅λλ€.