Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/01   »
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
Tags more
Archives
Today
Total
관리 메뉴

혼자서 앱 만드는 개발자 함께하는 AI 세상

슬롯, 인텐트, GPT, RAG가 함께 작동하는 방식 본문

마이봇 chat GPT 오픈 프로젝트

슬롯, 인텐트, GPT, RAG가 함께 작동하는 방식

혼앱사 2024. 11. 13. 10:34
반응형

How Slots, Intents, GPT, and RAG Work Together

  1.  

1. Intent 인식:

사용자가 메시지를 보내면 시스템은 먼저 해당 메시지 뒤에 숨은 의도를 식별합니다.

예를 들어:
User: "다음 주에 도쿄행 비행기를 예약하고 싶어요."
인식된 의도: book_flight


2.슬롯 식별:
의도가 식별되면 시스템은 어느 슬롯을 채워야 하는지 알게 됩니다.
book_flight 인텐트용 슬롯에는 다음이 포함될 수 있습니다.

 

  • destination
  • departure_date
  • number_of_passengers

3. GPT로 슬롯 값 채우기:
시스템은 GPT를 사용하여 사용자 입력에서 슬롯 값을 추출하고 채웁니다.
GPT는 사용자의 텍스트에서 관련 정보를 찾으라는 메시지를 표시할 수 있습니다.
사용자: "다음 주 수요일에 두 사람이 도쿄로 가는 비행기가 필요해요."


GPT 추출물:

  • destination: 도쿄
  • departure_date: 다음 수요일(필요한 경우 실제 날짜로 변환)
  • number_of_passengers: 2

4. 추가 컨텍스트 또는 검증을 위해 RAG 사용:

특정 정보가 누락되거나 모호한 경우 시스템은 RAG를 사용하여 외부 기술 자료나 데이터베이스에 쿼리할 수 있습니다.
이는 다음에 도움이 됩니다:
추출된 정보 확인(예: 이용 가능한 항공편 일정 확인)
최신 지식이나 전문 지식을 바탕으로 보다 자세한 답변을 제공합니다.
예:
사용자가 "도쿄를 방문하기 가장 좋은 시기는 언제인가요?"라고 묻는 경우 시스템은 여행 가이드에서 최신 데이터를 검색하여 보다 정확한 답변을 제공할 수 있습니다.
GPT를 사용한 동적 슬롯 채우기:

5. GPT가 누락된 슬롯을 식별하면 사용자에게 동적으로 메시지를 표시할 수 있습니다.

 

bot(GPT 제공): "언제 출발하시겠습니까?"
User: "다음 주 수요일 아침."
GPT는 departure_date 슬롯을 '다음 주 수요일 오전'으로 채웁니다.
GPT 및 RAG를 사용한 슬롯 채우기 흐름 예시


다음은 Python의 개념적 구현입니다.

from datetime import datetime
import openai

# Sample slot structure
slots = {
    'intent': None,
    'destination': None,
    'departure_date': None,
    'number_of_passengers': None
}

def detect_intent(user_input):
    # Intent detection logic (simplified)
    if "flight" in user_input:
        return "book_flight"
    return "general_query"

def fill_slots_with_gpt(user_input):
    # OpenAI GPT prompt to extract slot values
    prompt = f"""
    Extract the following information:
    - Destination
    - Departure Date
    - Number of Passengers
    User Input: "{user_input}"
    Provide the details in JSON format.
    """

    response = openai.Completion.create(
        engine="gpt-4",
        prompt=prompt,
        max_tokens=50,
        temperature=0.5
    )
    
    # Parse GPT's response (assuming a JSON-like output)
    slot_values = response.choices[0].text.strip()
    return eval(slot_values)  # Convert the string to a dictionary

def handle_user_input(user_input):
    # Step 1: Detect Intent
    slots['intent'] = detect_intent(user_input)
    
    # Step 2: Use GPT to fill slot values
    gpt_filled_slots = fill_slots_with_gpt(user_input)
    
    # Step 3: Update slot dictionary with extracted values
    slots.update(gpt_filled_slots)
    
    # Step 4: Check if any slot is still missing
    for slot, value in slots.items():
        if slot != 'intent' and value is None:
            prompt_user_for_missing_slot(slot)
            return
    
    # Step 5: Optionally use RAG for further refinement or confirmation
    if slots['intent'] == 'book_flight' and not slots['departure_date']:
        retrieve_additional_info("flight_schedule")
    
    # Final Response
    generate_response(f"Flight booked to {slots['destination']} on {slots['departure_date']} for {slots['number_of_passengers']} passengers.")

# Example user input
user_input = "Book a flight to Tokyo next Wednesday for 2 people"
handle_user_input(user_input)
  • GPT 및 RAG로 슬롯 채우기의 주요 이점
    자연어 이해: GPT는 미묘하고 복잡한 사용자 입력을 처리하여 정보가 구조화되지 않은 방식으로 표시되는 경우에도 슬롯 값을 추출할 수 있습니다.
  • 상황 인식:GPT와 RAG의 조합을 통해 챗봇은 상황을 더 잘 이해하고 필요한 경우 추가 정보를 검색할 수 있습니다.
    동적 슬롯 관리:GPT는 사용자에게 자연어로 메시지를 표시하여 누락된 슬롯을 적응적으로 처리할 수 있으므로 상호 작용이 더욱 유연하고 덜 엄격해집니다.
  • 정확도 향상:RAG를 사용하면 시스템에서 추출된 데이터를 확인하여 봇의 응답이 정확하고 최신인지 확인할 수 있습니다.

 

  • 결론
    예, GPT를 사용하여 슬롯 값을 채울 수 있으며 상황 인식 응답을 위해 RAG를 사용하여 이 프로세스를 향상시킬 수 있습니다. 의도 감지, GPT 기반 슬롯 채우기 및 RAG의 통합으로 더욱 강력하고 유연하며 지능적인 대화 환경이 보장됩니다.

    이 접근 방식을 통해 챗봇은 사용자 의도를 원활하게 이해하고 필요한 세부 정보를 추출하며 관련성이 높고 개인화되었으며 정확한 응답을 제공할 수 있습니다.
728x90
반응형
Comments