Microsoft AI 에이전트 입문 과정: AI 에이전트의 메타인지(스스로 생각하기)
개요
AI 에이전트의 메타인지 과정에 오신 것을 환영합니다! 이 챕터는 AI 에이전트가 자신의 사고 과정에 대해 어떻게 생각하는지에 관심이 있는 초보자를 위해 설계되었습니다. 이 과정을 마치면 핵심 개념을 이해하고 AI 에이전트 설계에 메타인지를 적용한 실제 예제를 접할 수 있습니다.
학습 목표
이 과정을 완료하면 다음을 수행할 수 있습니다:
- 상담원 정의에서 추론 루프의 의미를 이해합니다.
- 계획 및 평가 기법을 사용하여 상담원을 자체 보정할 수 있습니다.
- 코드를 조작하여 작업을 수행할 수 있는 나만의 에이전트를 만드세요.
메타인지 소개
메타인지란 자신의 사고에 대해 생각하는 고차원적인 인지 과정을 말합니다. AI 에이전트의 경우, 이는 자기 인식과 과거 경험을 바탕으로 자신의 행동을 평가하고 조정할 수 있다는 것을 의미합니다. 메타인지, 즉 '사고에 대한 사고'는 에이전트 기반 AI 시스템 개발에서 중요한 개념입니다. 이는 AI 시스템이 자신의 내부 프로세스를 인식하고 그에 따라 행동을 모니터링, 조절 및 조정할 수 있는 능력을 포함합니다. 우리가 상황을 보거나 문제를 조사할 때와 마찬가지로 말입니다. 이러한 자기 인식은 AI 시스템이 더 나은 결정을 내리고 오류를 인식하며 시간이 지남에 따라 성능을 개선하는 데 도움이 될 수 있으며, 이는 다시 튜링 테스트와 AI가 인간을 대체할 것인지에 대한 논쟁으로 연결됩니다.
에이전트 기반 AI 시스템의 맥락에서 메타인지는 다음과 같은 몇 가지 문제를 해결하는 데 도움이 될 수 있습니다:
- 투명성: AI 시스템이 자신의 추론과 결정을 설명할 수 있도록 보장합니다.
- 추론: AI 시스템이 정보를 종합하고 합리적인 결정을 내릴 수 있는 능력을 향상시킵니다.
- 적응성: AI 시스템이 새로운 환경과 변화하는 상황에 적응할 수 있도록 합니다.
- 인식: AI 시스템이 주변 환경의 데이터를 인식하고 해석하는 정확도를 개선합니다.
메타인지란 무엇인가요?
메타인지 또는 '사고에 대한 사고'는 자기 인식과 인지 과정의 자기 조절을 포함하는 고차원적인 인지 과정입니다. AI에서 메타인지는 에이전트가 자신의 전략과 행동을 평가하고 조정하여 문제 해결과 의사 결정을 개선할 수 있게 해줍니다. 메타인지를 이해하면 더 똑똑할 뿐만 아니라 적응력과 효율성이 뛰어난 AI 에이전트를 설계할 수 있으며, 진정한 메타인지에서는 AI가 자신의 추론에 대해 명시적으로 추론하는 것을 볼 수 있습니다.
예를 들어 "...... 직항 항공편을 놓쳤을 수 있으니 다시 확인해 보겠습니다."와 같이 저렴한 항공편을 우선시합니다. . 특정 경로를 선택한 방법이나 이유를 추적하세요.
- 마지막 사용자 선호도에 지나치게 의존하는 실수를 저질렀기 때문에 최종 추천뿐만 아니라 의사 결정 전략도 수정했습니다.
- 진단 모델, 예를 들어 "사용자가 '너무 붐빈다'고 언급하는 것을 볼 때마다 특정 명소를 제거해야 할 뿐만 아니라, 항상 인기도에 따라 순위를 매긴다면 '인기 명소'를 선택하는 내 방식이 결함이 있습니다."
AI 에이전트에서 메타인지의 중요성
메타인지는 다음과 같은 이유로 AI 에이전트 설계에서 중요한 역할을 합니다:

- 자기 성찰: 상담원은 자신의 성과를 평가하고 개선이 필요한 부분을 파악할 수 있습니다.
- 적응성: 에이전트는 과거 경험과 변화하는 상황에 따라 전략을 수정할 수 있습니다.
- 오류 수정: 에이전트가 자율적으로 오류를 감지하고 수정하여 보다 정확한 결과를 얻을 수 있습니다.
- 리소스 관리: 상담원은 자신의 작업을 계획하고 평가하여 시간 및 컴퓨팅 성능과 같은 리소스 사용을 최적화할 수 있습니다.
AI 에이전트의 구성 요소
메타인지 프로세스에 대해 자세히 알아보기 전에 AI 에이전트의 기본 구성 요소를 이해하는 것이 중요합니다. AI 에이전트는 일반적으로 다음과 같은 부분으로 구성됩니다:
- 페르소나: 사용자와 상호작용하는 방식을 정의하는 상담원의 성격 및 특성입니다.
- 도구: 상담원이 수행할 수 있는 기능 및 기능입니다.
- 기술: 상담원이 보유한 지식과 전문성입니다.
이러한 구성 요소는 함께 작동하여 특정 작업을 수행할 수 있는 '전문화된 단위'를 만듭니다.
일반적인 예휴가를 계획할 뿐만 아니라 실시간 데이터와 과거 고객 여정 경험을 바탕으로 경로를 조정하는 에이전트 서비스인 여행 에이전트를 예로 들어보겠습니다.
예: 여행사 서비스에서의 메타인지
AI 기반 여행사 서비스를 설계하고 있다고 가정해 보겠습니다. 이 에이전트인 '여행 에이전트'는 사용자가 휴가를 계획하는 데 도움을 줍니다. 메타인지를 통합하려면 여행 에이전트는 자기 인식과 과거 경험을 바탕으로 자신의 행동을 평가하고 조정해야 합니다. 메타인지의 작동 원리는 다음과 같습니다:
현재 작업
현재 작업은 사용자가 파리 여행을 계획하는 데 도움을 주는 것입니다.
의무를 이행하기 위한 단계
- 사용자 기본 설정 수집사용자의 여행 날짜, 예산, 관심사(예: 박물관, 음식, 쇼핑) 및 특정 요구 사항을 묻습니다.
- 검색사용자 선호도에 맞는 항공편 옵션, 숙박 시설, 명소, 레스토랑을 검색하세요.
- 권장 사항 생성항공편 세부 정보, 호텔 예약 및 추천 액티비티가 포함된 맞춤형 여정을 제공합니다.
- 피드백에 따른 조정사용자에게 제안에 대한 피드백을 요청하고 필요한 조정을 수행합니다.
리소스 요구 사항
- 항공편 및 호텔 예약 데이터베이스에 액세스합니다.
- 파리의 명소와 레스토랑에 대한 정보입니다.
- 이전 상호작용에서 얻은 사용자 피드백 데이터.
경험 및 자기 성찰
여행 에이전트는 메타인지를 사용하여 성과를 평가하고 과거 경험으로부터 학습합니다. 예시:
- 사용자 피드백 분석여행사는 사용자 피드백을 검토하여 어떤 제안이 받아들여지고 어떤 제안이 받아들여지지 않았는지 결정합니다. 이에 따라 향후 권장 사항을 조정합니다.
- 유연성여행사는 앞으로 사용자가 이전에 혼잡한 장소를 좋아하지 않는다고 언급한 경우 피크 시간대에 인기 관광 명소를 추천하지 않습니다.
- 오류 수정여행사가 과거 예약에서 만석인 호텔을 추천하는 등 실수를 한 경우, 추천하기 전에 예약 가능 여부를 더 엄격하게 확인하는 방법을 학습합니다.
실제 개발자의 예
다음은 여행사 코드가 메타인지와 결합되었을 때 어떤 모습일지 보여주는 간단한 예시입니다:
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
# Search for flights, hotels, and attractions based on preferences
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
# Analyze feedback and adjust future recommendations
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Example usage
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)
메타인지가 중요한 이유
- 자기 성찰에이전트는 성능을 분석하고 개선이 필요한 영역을 식별할 수 있습니다.
- 유연성상담원은 피드백 및 변화하는 조건에 따라 정책을 수정할 수 있습니다.
- 오류 수정에이전트가 자율적으로 오류를 감지하고 수정할 수 있습니다.
- 리소스 관리에이전트는 시간 및 컴퓨팅 성능과 같은 리소스 사용을 최적화할 수 있습니다.
여행사는 메타인지를 통합하여 보다 개인화되고 정확한 여행 조언을 제공함으로써 전반적인 사용자 경험을 향상시킬 수 있습니다.
2. 에이전트에서 계획하기
계획은 AI 에이전트 행동의 핵심 요소입니다. 여기에는 현재 상태, 리소스 및 가능한 장애물을 고려하여 목표를 달성하는 데 필요한 단계의 윤곽을 그리는 것이 포함됩니다.
계획의 요소
- 현재 작업권한에 대한 명확한 정의.
- 의무를 이행하기 위한 단계작업을 관리 가능한 단계로 세분화하세요.
- 리소스 요구 사항필요한 리소스를 파악합니다.
- 경험과거 경험을 바탕으로 계획을 세우세요.
일반적인 예여행사가 사용자의 효과적인 여행 계획을 지원하기 위해 취해야 할 단계는 다음과 같습니다:
여행사 직원용 단계
- 사용자 기본 설정 수집
- 사용자에게 여행 날짜, 예산, 관심사 및 특정 요구 사항에 대한 세부 정보를 물어보세요.
- 예: "언제 여행할 계획이세요?" "예산 범위는 어떻게 되나요?" "휴가 기간 동안 어떤 활동을 즐기시나요?"
- 검색
- 사용자 선호도에 따라 관련 여행 옵션을 검색하세요.
- 예정된 항해사용자의 예산과 선호하는 여행 날짜에 맞는 이용 가능한 항공편을 찾습니다.
- 숙박위치, 가격, 편의시설 등 사용자의 선호도에 맞는 호텔 또는 임대 숙소를 찾아보세요.
- 관광 명소 및 레스토랑사용자의 관심사에 맞는 인기 명소, 액티비티 및 식사 옵션을 파악합니다.
- 권장 사항 생성
- 검색된 정보를 개인화된 여정으로 컴파일합니다.
- 항공편 옵션, 호텔 예약 및 추천 액티비티에 대한 세부 정보를 제공하면 사용자의 선호도에 맞게 맞춤화된 추천을 받을 수 있습니다.
- 사용자에게 여정 표시
- 추천 여정은 검토를 위해 사용자들과 공유됩니다.
- 예: "파리 여행을 위한 추천 여정입니다. 여기에는 항공편 세부 정보, 호텔 예약, 추천 액티비티 및 레스토랑 목록이 포함되어 있습니다. 여러분의 의견을 알려주세요!"
- 피드백 수집
- 제안된 여정에 대한 피드백을 사용자에게 요청하세요.
- 예: "항공편 옵션이 마음에 드세요?" "호텔이 마음에 드시나요?" "액티비티를 추가하거나 제거하시겠습니까?"
- 피드백에 따른 조정
- 사용자 피드백에 따라 여정을 수정합니다.
- 사용자 선호도에 더 잘 맞도록 항공편, 숙소 및 액티비티 추천을 변경합니다.
- 최종 확인
- 최종 확인을 위해 업데이트된 여정을 사용자에게 표시합니다.
- 예: "귀하의 피드백에 따라 일정을 조정했습니다. 여기 업데이트된 일정이 있습니다. 모두 괜찮나요?"
- 예약 및 예약 확인
- 사용자가 여정을 승인하면 항공편, 숙소 및 사전 계획된 액티비티 예약을 진행합니다.
- 사용자에게 확인 세부 정보를 보냅니다.
- 지속적인 지원 제공
- 여행 전과 여행 중 언제든지 변경 사항이나 기타 요청이 있을 경우 사용자를 지원하세요.
- 예: "여행 중 추가 도움이 필요하면 언제든지 저에게 연락주세요!"
상호 작용의 예
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Example usage within a booing request
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)
3. 수정된 RAG 시스템
먼저, 다음을 이해해 보겠습니다. RAG 도구와 사전 컨텍스트화된 로딩의 차이점.

검색 증강 생성(RAG)
RAG는 검색 시스템과 생성 모델을 결합합니다. 쿼리가 발생하면 검색 시스템은 외부 소스에서 관련 문서나 데이터를 가져오고 이 검색된 정보를 사용하여 생성 모델에 대한 입력을 보강합니다. 이렇게 하면 모델이 보다 정확하고 상황에 맞는 답변을 생성하는 데 도움이 됩니다.
RAG 시스템에서는 지능형 기관(에이전트)이 지식창고에서 관련 정보를 검색하고 이를 사용하여 적절한 응답이나 조치를 생성합니다.
수정된 RAG 방법
수정 RAG 접근 방식은 RAG 기술을 사용하여 오류를 수정하고 AI 인텔리전스(에이전트)의 정확도를 개선하는 데 중점을 둡니다. 여기에는 다음이 포함됩니다:
- 큐 기술상담원이 관련 정보를 검색할 수 있도록 안내하는 특정 프롬프트를 사용합니다.
- 인공물지능형 에이전트(에이전트)가 검색된 정보의 관련성을 평가하고 정확한 응답을 생성할 수 있는 알고리즘과 메커니즘을 구현합니다.
- 가치 평가지능체(에이전트)의 성능을 지속적으로 평가하고 정확성과 효율성을 개선하기 위해 조정합니다.
예: 검색 인텔리전스(에이전트)의 수정된 RAG
사용자 쿼리에 응답하기 위해 웹에서 정보를 검색하는 검색 인텔리전스(에이전트)를 생각해 보세요. 수정된 RAG 메서드에는 다음이 포함될 수 있습니다:
- 큐 기술사용자 입력을 기반으로 검색 쿼리를 구성합니다.
- 인공물자연어 처리 및 머신 러닝 알고리즘을 사용하여 검색 결과의 순위를 매기고 필터링합니다.
- 가치 평가사용자 피드백을 분석하여 검색된 정보의 부정확성을 파악하고 수정합니다.
여행 정보(에이전트)의 수정된 RAG
수정 RAG(검색 증강 생성)는 부정확한 정보를 수정하면서 정보를 검색하고 생성하는 AI의 능력을 향상시킵니다. 여행사에서 수정 RAG 접근 방식을 사용하여 보다 정확하고 관련성 높은 여행 추천을 제공하는 방법을 살펴보겠습니다.
여기에는 다음이 포함됩니다:
- 큐 기술: 특정 프롬프트를 사용하여 상담원이 관련 정보를 검색하도록 안내합니다.
- 도구: 지능형 에이전트(에이전트)가 검색된 정보의 관련성을 평가하고 정확한 응답을 생성할 수 있는 알고리즘과 메커니즘을 구현합니다.
- 평가: 인텔리전스(에이전트)의 성능을 지속적으로 평가하고 정확성과 효율성을 개선하기 위해 조정합니다.
여행사에서 수정된 RAG를 구현하는 단계
- 초기 사용자 상호작용
- 여행사는 목적지, 여행 날짜, 예산, 관심사 등 사용자로부터 초기 기본 설정을 수집합니다.
- 예시:
preferences = { "destination": "Paris", "dates": "2025-04-01 to 2025-04-10", "budget": "moderate", "interests": ["museums", "cuisine"] }
- 정보 검색
- 여행사는 사용자 선호도에 따라 항공편, 숙박, 관광 명소 및 레스토랑에 대한 정보를 검색합니다.
- 예시:
flights = search_flights(preferences) hotels = search_hotels(preferences) attractions = search_attractions(preferences)
- 초기 권장 사항 생성
- 여행사는 검색된 정보를 사용하여 개인화된 여정을 생성합니다.
- 예시:
itinerary = create_itinerary(flights, hotels, attractions) print("Suggested Itinerary:", itinerary)
- 사용자 피드백 수집
- 여행사는 사용자에게 초기 추천에 대한 피드백을 요청합니다.
- 예시:
feedback = { "liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"] }
- 수정된 RAG 프로세스
- 큐 기술여행사: 사용자 피드백을 기반으로 새로운 검색어를 개발합니다.
- 예시:
if "disliked" in feedback: preferences["avoid"] = feedback["disliked"]
- 예시:
- 인공물여행사는 알고리즘을 사용하여 새 검색 결과의 순위를 매기고 필터링하며 사용자 피드백을 기반으로 관련성을 강조합니다.
- 예시:
new_attractions = search_attractions(preferences) new_itinerary = create_itinerary(flights, hotels, new_attractions) print("Updated Itinerary:", new_itinerary)
- 예시:
- 가치 평가여행사는 사용자 피드백을 분석하고 필요에 따라 조정하여 추천의 관련성과 정확성을 지속적으로 평가합니다.
- 예시:
def adjust_preferences(preferences, feedback): if "liked" in feedback: preferences["favorites"] = feedback["liked"] if "disliked" in feedback: preferences["avoid"] = feedback["disliked"] return preferences preferences = adjust_preferences(preferences, feedback)
- 예시:
- 큐 기술여행사: 사용자 피드백을 기반으로 새로운 검색어를 개발합니다.
실제 사례
다음은 여행사가 수정된 RAG 접근 방식을 사용하는 간단한 Python 코드 예제입니다:
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
new_itinerary = self.generate_recommendations()
return new_itinerary
# Example usage
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
new_itinerary = travel_agent.adjust_based_on_feedback(feedback)
print("Updated Itinerary:", new_itinerary)
사전 컨텍스트화된 로딩
사전 컨텍스트 로딩은 쿼리가 처리되기 전에 관련 컨텍스트 또는 배경 정보를 모델에 로드하는 것을 포함합니다. 즉, 모델이 처음부터 이 정보에 액세스할 수 있으므로 처리 중에 추가 데이터를 검색할 필요 없이 더 많은 정보에 기반한 응답을 생성하는 데 도움이 될 수 있습니다.
다음은 여행 상담원 애플리케이션에서 사전 컨텍스트 로딩을 파이썬으로 구현한 간단한 예제입니다:
class TravelAgent:
def __init__(self):
# Pre-load popular destinations and their information
self.context = {
"Paris": {"country": "France", "currency": "Euro", "language": "French", "attractions": ["Eiffel Tower", "Louvre Museum"]},
"Tokyo": {"country": "Japan", "currency": "Yen", "language": "Japanese", "attractions": ["Tokyo Tower", "Shibuya Crossing"]},
"New York": {"country": "USA", "currency": "Dollar", "language": "English", "attractions": ["Statue of Liberty", "Times Square"]},
"Sydney": {"country": "Australia", "currency": "Dollar", "language": "English", "attractions": ["Sydney Opera House", "Bondi Beach"]}
}
def get_destination_info(self, destination):
# Fetch destination information from pre-loaded context
info = self.context.get(destination)
if info:
return f"{destination}:\nCountry: {info['country']}\nCurrency: {info['currency']}\nLanguage: {info['language']}\nAttractions: {', '.join(info['attractions'])}"
else:
return f"Sorry, we don't have information on {destination}."
# Example usage
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
지침
- 초기화(
__init__
메서드)::TravelAgent
클래스에는 파리, 도쿄, 뉴욕, 시드니와 같은 인기 여행지에 대한 정보가 포함된 사전이 미리 로드되어 있습니다. 사전에는 각 목적지의 국가, 통화, 언어 및 주요 명소에 대한 자세한 정보가 포함되어 있습니다. - 정보 검색(
get_destination_info
메서드)사용자가 특정 대상에 대해 쿼리하면get_destination_info
메서드는 미리 로드된 컨텍스트 사전에서 관련 정보를 가져옵니다.
컨텍스트를 미리 로드하면 여행사 애플리케이션은 외부 소스에서 이 정보를 실시간으로 검색할 필요 없이 사용자 쿼리에 신속하게 응답할 수 있습니다. 따라서 애플리케이션의 효율성과 응답성이 향상됩니다.
반복 전에 목표 지향적 계획 사용
목표 지향적 계획을 사용하려면 처음부터 명확한 목표 또는 원하는 결과를 염두에 두어야 합니다. 이 목표를 미리 정의함으로써 모델은 반복 프로세스 전반에 걸쳐 이를 지침 원칙으로 사용할 수 있습니다. 이렇게 하면 각 반복이 원하는 결과를 달성하는 데 더 가까워지므로 프로세스가 더 효율적이고 집중적으로 진행될 수 있습니다.
다음은 반복하기 전에 여행사에 Python에서 목표 지향적 여행 계획을 사용하는 방법을 보여주는 예제입니다:
take
여행사는 고객을 위한 맞춤형 휴가를 계획하고자 합니다. 목표는 고객의 선호도와 예산에 따라 여행 일정을 만들어 고객 만족도를 극대화하는 것입니다.
이동
- 고객 선호도와 예산을 정의합니다.
- 이러한 기본 설정에 따라 초기 계획을 조정하세요.
- 반복적으로 계획을 최적화하여 고객 만족도를 극대화하세요.
파이썬 코드
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def bootstrap_plan(self, preferences, budget):
plan = []
total_cost = 0
for destination in self.destinations:
if total_cost + destination['cost'] <= budget and self.match_preferences(destination, preferences):
plan.append(destination)
total_cost += destination['cost']
return plan
def match_preferences(self, destination, preferences):
for key, value in preferences.items():
if destination.get(key) != value:
return False
return True
def iterate_plan(self, plan, preferences, budget):
for i in range(len(plan)):
for destination in self.destinations:
if destination not in plan and self.match_preferences(destination, preferences) and self.calculate_cost(plan, destination) <= budget:
plan[i] = destination
break
return plan
def calculate_cost(self, plan, new_destination):
return sum(destination['cost'] for destination in plan) + new_destination['cost']
# Example usage
destinations = [
{"name": "Paris", "cost": 1000, "activity": "sightseeing"},
{"name": "Tokyo", "cost": 1200, "activity": "shopping"},
{"name": "New York", "cost": 900, "activity": "sightseeing"},
{"name": "Sydney", "cost": 1100, "activity": "beach"},
]
preferences = {"activity": "sightseeing"}
budget = 2000
travel_agent = TravelAgent(destinations)
initial_plan = travel_agent.bootstrap_plan(preferences, budget)
print("Initial Plan:", initial_plan)
refined_plan = travel_agent.iterate_plan(initial_plan, preferences, budget)
print("Refined Plan:", refined_plan)
코드 설명
- 초기화(
__init__
메서드)::TravelAgent
클래스는 이름, 비용 및 활동 유형과 같은 속성이 있는 잠재적 목적지 목록을 사용하여 초기화됩니다. - 오리엔테이션 프로그램 (
bootstrap_plan
메서드)이 방법은 고객의 선호도와 예산에 따라 초기 여행 계획을 생성합니다. 목적지 목록을 반복하여 고객의 선호도와 일치하고 예산에 맞는 경우 계획에 추가합니다. - 기본 설정 일치(
match_preferences
메서드)목적지가 고객의 기본 설정과 일치하는지 확인하는 방법입니다. - 반복 계획(
iterate_plan
메서드)이 방법은 고객의 선호도와 예산 제약을 고려하여 요금제의 각 목적지를 더 적합한 것으로 대체하여 초기 요금제를 최적화합니다. - 비용 계산(
calculate_cost
메서드)이 방법은 잠재적인 새 목적지를 포함하여 현재 프로그램의 총 비용을 계산합니다.
샘플 사용법
- 초기 계획여행사는 고객의 관광 선호도와 2,000달러의 예산에 따라 초기 계획을 수립합니다.
- 최적화 계획고객 선호도와 예산에 최적화된 여행사 반복 프로그램.
여행사는 명확한 목표(예: 고객 만족도 극대화)를 통해 계획을 안내하고 반복적으로 계획을 최적화함으로써 고객을 위해 맞춤형으로 최적화된 여행 일정을 만듭니다. 이러한 접근 방식을 통해 여행 계획은 처음부터 고객의 선호도와 예산에 맞게 조정되고 반복할 때마다 개선됩니다.
대규모 언어 모델(LLM)로 재정렬 및 채점하기
LLM(대규모 언어 모델)은 검색된 문서나 생성된 응답의 관련성과 품질을 평가하여 순서를 바꾸고 점수를 매기는 데 사용할 수 있습니다. 다음과 같이 작동합니다:
검색되었습니다: 초기 검색 단계에서는 쿼리를 기반으로 후보 문서 또는 응답 집합을 가져옵니다.
재주문: LLM은 이러한 후보를 평가하고 관련성과 품질에 따라 순서를 재조정합니다. 이 단계를 통해 가장 관련성이 높고 품질이 높은 정보가 먼저 표시되도록 합니다.
등급: LLM은 각 후보 개체에 관련성과 품질을 반영하여 점수를 부여합니다. 이를 통해 사용자에게 가장 적합한 응답 또는 문서를 선택하는 데 도움이 됩니다.
재주문 및 채점에 LLM을 활용함으로써 시스템은 보다 정확하고 맥락에 맞는 정보를 제공하여 전반적인 사용자 경험을 개선할 수 있습니다.
다음은 여행사가 파이썬에서 대규모 언어 모델(LLM)을 사용하여 사용자 선호도에 따라 목적지를 재주문하고 평가하는 방법의 예시입니다:
시나리오 - 선호도 기반 여행
여행사는 고객의 선호도에 따라 최적의 여행지를 추천하고자 하며, LLM은 가장 관련성이 높은 옵션이 표시되도록 여행지를 재정렬하고 평가하는 데 도움을 줍니다.
단계:
- 사용자 기본 설정을 수집합니다.
- 잠재적인 여행 목적지 목록을 검색합니다.
- LLM을 사용하여 사용자 선호도에 따라 목적지를 재주문하고 평가하세요.
이전 예제를 업데이트하여 Azure OpenAI 서비스를 사용하는 방법은 다음과 같습니다:
요청
- Azure 구독이 있어야 합니다.
- Azure OpenAI 리소스를 만들고 API 키를 받으세요.
파이썬 코드 샘플
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# 为 Azure OpenAI 生成提示
prompt = self.generate_prompt(preferences)
# 定义请求的标头和负载
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# 调用 Azure OpenAI API 以获取重新排序和评分的目的地
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# 提取并返回建议
recommendations = response_data['choices'][0]['text'].strip().split('\n')
return recommendations
def generate_prompt(self, preferences):
prompt = "以下是根据以下用户偏好排名和评分的旅游目的地:\n"
for key, value in preferences.items():
prompt += f"{key}: {value}\n"
prompt += "\n目的地:\n"
for destination in self.destinations:
prompt += f"- {destination['name']}: {destination['description']}\n"
return prompt
# 示例用法
destinations = [
{"name": "Paris", "description": "光之城,以其艺术、时尚和文化而闻名。"},
{"name": "Tokyo", "description": "充满活力的城市,以其现代性和传统寺庙而闻名。"},
{"name": "New York", "description": "不夜城,拥有标志性地标和多元文化。"},
{"name": "Sydney", "description": "美丽的海港城市,以其歌剧院和迷人的海滩而闻名。"},
]
preferences = {"activity": "sightseeing", "culture": "diverse"}
api_key = 'your_azure_openai_api_key'
endpoint = 'https://your-endpoint.com/openai/deployments/your-deployment-name/completions?api-version=2022-12-01'
travel_agent = TravelAgent(destinations)
recommendations = travel_agent.get_recommendations(preferences, api_key, endpoint)
print("推荐目的地:")
for rec in recommendations:
print(rec)
코드 설명 - 기본 설정 예약자
- 초기화::
TravelAgent
클래스는 이름 및 설명과 같은 속성이 있는 잠재적 여행 목적지 목록을 사용하여 초기화됩니다. - 조언 받기(
get_recommendations
(방법)이 메서드는 사용자의 기본 설정에 따라 Azure OpenAI 서비스에 대한 프롬프트를 생성하고 대상 재주문 및 점수 매기기를 위해 Azure OpenAI API에 HTTP POST 요청을 보냅니다. - 프롬프트 생성(
generate_prompt
(방법)이 메서드는 사용자의 기본 설정과 대상 목록이 포함된 Azure OpenAI용 프롬프트를 빌드합니다. 이 큐는 제공된 기본 설정에 따라 목적지의 순서를 바꾸고 점수를 매기도록 모델에 지시합니다. - API 호출::
requests
라이브러리를 사용하여 Azure OpenAI API 엔드포인트에 HTTP POST 요청을 할 수 있습니다. 응답에는 재순서화되고 점수가 매겨진 대상이 포함됩니다. - 샘플 사용법여행사는 사용자 선호도(예: 관광 및 다문화에 대한 관심도)를 수집하고 Azure OpenAI 서비스를 사용하여 여행 목적지에 대한 순위 및 등급 제안을 얻습니다.
다음을 보장합니다. your_azure_openai_api_key
실제 Azure OpenAI API 키로 교체하고 https://your-endpoint.com/...
Azure OpenAI 배포의 실제 엔드포인트 URL로 바꿉니다.
여행사는 재주문 및 채점에 LLM을 활용함으로써 고객에게 보다 개인화되고 관련성 높은 여행 조언을 제공하여 전반적인 경험을 향상시킬 수 있습니다.
{기술 도메인 비평가 샤프: 위의 코드 예제는 대규모 언어 모델을 사용하여 콘텐츠를 재정렬하고 채점하는 방법을 명확하게 보여 줍니다. 이는 다음을 구성하여 달성할 수 있습니다. TravelAgent
클래스와 결합하여 사용자 선호도에 따라 개인화된 여행 추천을 효과적으로 제공할 수 있습니다. 이 접근 방식은 추천의 정확도를 향상시킬 뿐만 아니라 사용자 환경을 개선합니다.}
RAG: 프롬프트 기법 및 도구
검색 증강 생성(RAG)은 AI 에이전트 개발에서 프롬프트 기술이자 도구가 될 수 있습니다. 이 둘의 차이점을 이해하면 프로젝트에서 RAG를 보다 효과적으로 활용할 수 있습니다.
프롬프트 기법으로서의 RAG
무슨 일이죠?
- 프롬프트 기법으로서 RAG는 대규모 말뭉치 또는 데이터베이스에서 관련 정보를 검색하도록 안내하는 특정 쿼리 또는 프롬프트의 공식화를 포함합니다. 그런 다음 이 정보를 사용하여 응답이나 작업을 생성합니다.
작동 방식:
- 개발 팁현재 작업 또는 사용자 입력에 따라 잘 구조화된 프롬프트 또는 쿼리를 만듭니다.
- 검색프롬프트를 사용하여 기존 지식창고 또는 데이터 세트에서 관련 데이터를 검색합니다.
- 응답 생성하기검색된 정보를 생성형 AI 모델과 결합하여 포괄적이고 일관된 응답을 생성합니다.
여행사 예시::
- 사용자 의견 "파리의 박물관을 방문하고 싶어요."
- 큐: "파리 최고의 박물관을 찾아보세요."
- 검색된 정보: 루브르 박물관, 오르세 미술관 등에 대한 자세한 정보입니다.
- "파리 최고의 박물관인 루브르 박물관, 오르세 미술관, 퐁피두 센터를 소개합니다." 라는 반응을 생성했습니다.
도구로서의 RAG
무슨 일이죠?
- RAG는 검색 및 생성 프로세스를 자동화하는 통합 시스템으로, 개발자가 각 쿼리에 대한 프롬프트를 수동으로 생성할 필요 없이 복잡한 AI 기능을 쉽게 구현할 수 있도록 도와줍니다.
작동 방식:
- 집적(집적 회로에서와 같이)RAG를 AI 에이전트의 아키텍처에 포함하면 검색 및 생성 작업을 자동화할 수 있습니다.
- 자동이 도구는 각 단계마다 명시적인 프롬프트를 제공할 필요 없이 사용자 입력 수신부터 최종 응답 생성까지 전체 프로세스를 관리합니다.
- 효율성더 빠르고 정확한 응답을 위해 검색 및 생성 프로세스를 간소화하여 상담원 성능을 향상하세요.
여행사 예시::
- 사용자 의견 "파리의 박물관을 방문하고 싶어요."
- RAG 도구: 박물관에 대한 정보를 자동으로 검색하고 응답을 생성합니다.
- "파리 최고의 박물관인 루브르 박물관, 오르세 미술관, 퐁피두 센터를 소개합니다." 라는 반응을 생성했습니다.
{기술 비평가의 의견: RAG를 힌트 기법으로 설명하는 것과 도구로 설명하는 것 사이에는 중요한 차이가 있습니다. 힌트 기법으로서 RAG는 수동으로 쿼리를 공식화하는 것의 중요성을 강조하고, 도구로서 RAG는 자동화와 통합을 강조합니다. 두 가지 접근 방식 모두 장점이 있으며 특정 요구에 따라 유연하게 선택할 수 있습니다.}
비교
관점 | 큐 기술 | 인공물 |
---|---|---|
수동 대 자동 | 각 쿼리에 대한 프롬프트를 수동으로 개발합니다. | 검색 및 생성 프로세스를 자동화하세요. |
격리 | 검색 프로세스를 더 잘 제어할 수 있습니다. | 간소화되고 자동화된 검색 및 생성. |
손재주 | 특정 요구에 맞게 프롬프트를 사용자 지정할 수 있습니다. | 보다 효율적인 대규모 구현. |
정교함 | 팁을 생성하고 조정해야 합니다. | AI 에이전트 아키텍처에 쉽게 통합할 수 있습니다. |
실제 사례
큐잉 기법의 예시입니다:
def search_museums_in_paris():
prompt = "Find top museums in Paris"
search_results = search_web(prompt)
return search_results
museums = search_museums_in_paris()
print("Top Museums in Paris:", museums)
도구 예제:
class Travel_Agent:
def __init__(self):
self.rag_tool = RAGTool()
def get_museums_in_paris(self):
user_input = "I want to visit museums in Paris."
response = self.rag_tool.retrieve_and_generate(user_input)
return response
travel_agent = Travel_Agent()
museums = travel_agent.get_museums_in_paris()
print("Top Museums in Paris:", museums)
결론: 표와 구체적인 코드 예제를 비교하면 힌트 기법과 도구의 차이점을 명확하게 알 수 있습니다. 힌트를 수동으로 구성하면 더 많은 유연성과 제어가 가능한 반면, 도구는 자동화를 통해 효율성을 높입니다. 이를 통해 개발자는 프로젝트 요구 사항과 리소스에 따라 더 많은 정보에 입각한 선택을 할 수 있습니다.
관련성 평가
관련성 평가는 AI 에이전트 성능의 핵심 요소입니다. 이는 에이전트가 검색하고 생성한 정보가 적절하고 정확하며 사용자에게 유용한지 확인하는 것입니다. 실용적인 예와 팁을 포함하여 AI 에이전트에서 관련성을 평가하는 방법을 살펴보세요.
관련성 평가를 위한 주요 개념
- 상황 인식::
- 상담원은 관련 정보를 검색하고 생성하기 위해 사용자 쿼리의 컨텍스트를 이해해야 합니다.
- 예: 사용자가 "파리 최고의 레스토랑"을 요청하는 경우 상담원은 요리 종류 및 예산 등 사용자의 선호도를 고려해야 합니다.
- 정확성::
- 에이전트가 제공하는 정보는 사실에 근거한 정확한 최신 정보여야 합니다.
- 예: 오래되었거나 문을 닫은 레스토랑이 아닌 현재 영업 중이며 좋은 평가를 받은 레스토랑을 추천합니다.
- 사용자 의도::
- 상담원은 사용자의 쿼리 의도를 유추하여 가장 관련성 높은 정보를 제공해야 합니다.
- 예: 사용자가 '저렴한 호텔'을 요청하는 경우 상담원은 저렴한 옵션을 우선적으로 추천해야 합니다.
- 피드백 루프::
- 사용자 피드백을 지속적으로 수집하고 분석하면 상담원이 관련성 평가 프로세스를 개선하는 데 도움이 됩니다.
- 예: 사용자 평점과 이전 권장 사항에 대한 피드백을 결합하여 향후 응답을 개선합니다.
관련성 평가를 위한 실용적인 팁
- 관련성 점수::
- 각 검색 항목에는 사용자의 검색어 및 선호도와 얼마나 잘 일치하는지에 따라 관련성 점수가 할당됩니다.
- 예시:
def relevance_score(item, query): score = 0 if item['category'] in query['interests']: score += 1 if item['price'] <= query['budget']: score += 1 if item['location'] == query['destination']: score += 1 return score
- 필터링 및 정렬::
- 관련성이 없는 항목을 필터링하고 관련성 점수를 기준으로 나머지 항목의 순위를 매깁니다.
- 예시:
def filter_and_rank(items, query): ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True) return ranked_items[:10] # 返回前 10 个相关项目
- 자연어 처리(NLP)::
- NLP 기술을 사용하여 사용자 쿼리를 이해하고 관련 정보를 검색하세요.
- 예시:
def process_query(query): # 使用 NLP 从用户的查询中提取关键信息 processed_query = nlp(query) return processed_query
- 사용자 피드백 통합::
- 제공된 조언에 대한 사용자 피드백을 수집하여 향후 관련성 평가를 조정하는 데 활용하세요.
- 예시:
def adjust_based_on_feedback(feedback, items): for item in items: if item['name'] in feedback['liked']: item['relevance'] += 1 if item['name'] in feedback['disliked']: item['relevance'] -= 1 return items
예: 여행사에서 관련성 평가하기
다음은 여행사가 여행 추천의 관련성을 평가하는 실제 사례입니다:
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
ranked_hotels = self.filter_and_rank(hotels, self.user_preferences)
itinerary = create_itinerary(flights, ranked_hotels, attractions)
return itinerary
def filter_and_rank(self, items, query):
ranked_items = sorted(items, key=lambda item: self.relevance_score(item, query), reverse=True)
return ranked_items[:10] # 返回前 10 个相关项目
def relevance_score(self, item, query):
score = 0
if item['category'] in query['interests']:
score += 1
if item['price'] <= query['budget']:
score += 1
if item['location'] == query['destination']:
score += 1
return score
def adjust_based_on_feedback(self, feedback, items):
for item in items:
if item['name'] in feedback['liked']:
item['relevance'] += 1
if item['name'] in feedback['disliked']:
item['relevance'] -= 1
return items
# 示例用法
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_items = travel_agent.adjust_based_on_feedback(feedback, itinerary['hotels'])
print("Updated Itinerary with Feedback:", updated_items)
의도적 검색
의도적 검색은 가장 관련성이 높고 유용한 정보를 검색하고 생성하기 위해 사용자 쿼리의 근본적인 목적이나 목표를 이해하고 해석하는 것을 포함합니다. 이 접근 방식은 단순히 키워드를 일치시키는 것을 넘어 사용자의 실제 요구와 맥락을 파악하는 데 중점을 둡니다.
의도적 검색의 주요 개념
- 사용자 의도 이해::
- 사용자 의도는 정보 제공, 탐색, 트랜잭션의 세 가지 주요 유형으로 분류할 수 있습니다.
- 정보 제공 의도특정 주제에 대한 정보를 찾는 사용자(예: "파리에서 가장 좋은 박물관은 어디인가요?"). .
- 탐색 의도사용자가 특정 웹사이트 또는 페이지(예: "루브르 박물관 공식 웹사이트")로 이동하려고 합니다.
- 거래 의도사용자가 항공편 예약 또는 구매(예: "파리행 항공편 예약")와 같은 거래를 수행하려는 목적.
- 사용자 의도는 정보 제공, 탐색, 트랜잭션의 세 가지 주요 유형으로 분류할 수 있습니다.
- 상황 인식::
- 사용자 쿼리의 문맥을 분석하면 사용자의 의도를 정확하게 파악하는 데 도움이 됩니다. 여기에는 이전 상호 작용, 사용자 기본 설정, 현재 쿼리의 구체적인 세부 사항을 고려하는 것이 포함됩니다.
- 자연어 처리(NLP)::
- NLP 기술은 사용자가 제공한 자연어 쿼리를 이해하고 해석하는 데 사용됩니다. 여기에는 엔티티 인식, 감성 분석 및 쿼리 구문 분석과 같은 작업이 포함됩니다.
- 개인화::
- 사용자 기록, 선호도 및 피드백을 기반으로 검색 결과를 개인화하면 검색된 정보의 관련성을 높일 수 있습니다.
실제 사례: 여행사 내 의도적 검색
의도적 검색을 달성하는 방법의 예로 '여행사'를 살펴보겠습니다.
- 사용자 기본 설정 수집
class Travel_Agent: def __init__(self): self.user_preferences = {} def gather_preferences(self, preferences): self.user_preferences = preferences
- 사용자 의도 이해
def identify_intent(query): if "book" in query or "purchase" in query: return "transactional" elif "website" in query or "official" in query: return "navigational" else: return "informational"
- 상황 인식
def analyze_context(query, user_history): # 将当前查询与用户历史记录相结合以理解情境 context = { "current_query": query, "user_history": user_history } return context
- 검색 및 개인화된 결과
def search_with_intent(query, preferences, user_history): intent = identify_intent(query) context = analyze_context(query, user_history) if intent == "informational": search_results = search_information(query, preferences) elif intent == "navigational": search_results = search_navigation(query) elif intent == "transactional": search_results = search_transaction(query, preferences) personalized_results = personalize_results(search_results, user_history) return personalized_results def search_information(query, preferences): # 信息型意图的示例搜索逻辑 results = search_web(f"best {preferences['interests']} in {preferences['destination']}") return results def search_navigation(query): # 导航型意图的示例搜索逻辑 results = search_web(query) return results def search_transaction(query, preferences): # 交易型意图的示例搜索逻辑 results = search_web(f"book {query} to {preferences['destination']}") return results def personalize_results(results, user_history): # 示例个性化逻辑 personalized = [result for result in results if result not in user_history] return personalized[:10] # 返回前 10 个个性化结果
- 샘플 사용법
travel_agent = Travel_Agent() preferences = { "destination": "Paris", "interests": ["museums", "cuisine"] } travel_agent.gather_preferences(preferences) user_history = ["Louvre Museum website", "Book flight to Paris"] query = "best museums in Paris" results = search_with_intent(query, preferences, user_history) print("Search Results:", results)
4. 도구로 코드 생성하기
코드 생성 지능(에이전트)은 AI 모델을 사용하여 코드를 작성 및 실행하고, 복잡한 문제를 해결하고, 작업을 자동화합니다.
코드 생성 인텔리전스
코드 생성 인텔리전스는 생성형 AI 모델을 사용하여 코드를 작성하고 실행합니다. 이러한 인텔리전스는 다양한 프로그래밍 언어로 코드를 생성하고 실행하여 복잡한 문제를 해결하고, 작업을 자동화하며, 귀중한 인사이트를 제공할 수 있습니다.
실제 적용
- 자동화된 코드 생성데이터 분석, 웹 크롤링 또는 머신 러닝과 같은 특정 작업을 위한 코드 스니펫을 생성합니다.
- RAG로 SQLSQL 쿼리를 사용하여 데이터베이스에서 데이터를 검색하고 조작합니다.
- 문제 해결알고리즘 최적화 또는 데이터 분석과 같은 특정 문제를 해결하기 위한 코드를 작성하고 실행합니다.
예: 데이터 분석을 위한 코드 생성 인텔리전스
코드를 생성하는 인텔리전스를 설계한다고 가정해 보겠습니다. 작동 방식은 다음과 같습니다:
- 명령데이터 세트를 분석하여 트렌드와 패턴을 파악합니다.
- 이동::
- 데이터 분석 도구에 데이터 집합을 로드합니다.
- SQL 쿼리를 생성하여 데이터를 필터링하고 집계합니다.
- 쿼리를 실행하고 결과를 검색합니다.
- 결과를 사용하여 시각화 및 인사이트를 생성하세요.
- 리소스 요구 사항데이터 세트, 데이터 분석 도구 및 SQL 함수에 액세스합니다.
- 경험과거 분석을 사용하여 향후 분석의 정확성과 관련성을 개선합니다.
예: 여행사를 위한 코드 생성 인텔리전스
이 예에서는 코드를 생성하고 실행하여 사용자의 여행 계획을 지원하는 코드 생성 인텔리전스인 Travel Agent를 설계해 보겠습니다. 이 인텔리전스는 생성 AI를 사용하여 여행 옵션 가져오기, 결과 필터링, 여정 컴파일과 같은 작업을 처리할 수 있습니다.
코드 생성 인텔리전스 개요
- 사용자 기본 설정 수집목적지, 여행 날짜, 예산, 관심사 등 사용자 입력을 수집합니다.
- 데이터를 가져오는 코드 생성코드 스니펫을 생성하여 항공편, 호텔 및 명소에 대한 데이터를 검색하세요.
- 생성된 코드 실행: 생성된 코드를 실행하여 실시간 정보를 얻습니다.
- 여행 생성수집한 데이터를 개인 맞춤형 여행 계획으로 컴파일합니다.
- 피드백에 따른 조정사용자 피드백을 수신하고 필요한 경우 코드를 다시 생성하여 결과를 최적화합니다.
단계별
- 사용자 기본 설정 수집
class Travel_Agent: def __init__(self): self.user_preferences = {} def gather_preferences(self, preferences): self.user_preferences = preferences
- 데이터를 가져오는 코드 생성
def generate_code_to_fetch_data(preferences): # 示例:生成代码以根据用户偏好搜索航班 code = f""" def search_flights(): import requests response = requests.get('https://api.example.com/flights', params={preferences}) return response.json() """ return code def generate_code_to_fetch_hotels(preferences): # 示例:生成代码以搜索酒店 code = f""" def search_hotels(): import requests response = requests.get('https://api.example.com/hotels', params={preferences}) return response.json() """ return code
- 생성된 코드 실행
def execute_code(code): # 使用 exec 执行生成的代码 exec(code) result = locals() return result travel_agent = Travel_Agent() preferences = { "destination": "Paris", "dates": "2025-04-01 to 2025-04-10", "budget": "moderate", "interests": ["museums", "cuisine"] } travel_agent.gather_preferences(preferences) flight_code = generate_code_to_fetch_data(preferences) hotel_code = generate_code_to_fetch_hotels(preferences) flights = execute_code(flight_code) hotels = execute_code(hotel_code) print("Flight Options:", flights) print("Hotel Options:", hotels)
- 여행 생성
def generate_itinerary(flights, hotels, attractions): itinerary = { "flights": flights, "hotels": hotels, "attractions": attractions } return itinerary attractions = search_attractions(preferences) itinerary = generate_itinerary(flights, hotels, attractions) print("Suggested Itinerary:", itinerary)
- 피드백에 따른 조정
def adjust_based_on_feedback(feedback, preferences): # 根据用户反馈调整偏好 if "liked" in feedback: preferences["favorites"] = feedback["liked"] if "disliked" in feedback: preferences["avoid"] = feedback["disliked"] return preferences feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]} updated_preferences = adjust_based_on_feedback(feedback, preferences) # 使用更新的偏好重新生成并执行代码 updated_flight_code = generate_code_to_fetch_data(updated_preferences) updated_hotel_code = generate_code_to_fetch_hotels(updated_preferences) updated_flights = execute_code(updated_flight_code) updated_hotels = execute_code(updated_hotel_code) updated_itinerary = generate_itinerary(updated_flights, updated_hotels, attractions) print("Updated Itinerary:", updated_itinerary)
환경 인식 및 추론 사용
테이블 스키마에 따르면, 컨텍스트 인식 및 추론을 활용하여 쿼리 생성 프로세스를 실제로 향상시킬 수 있습니다.
다음은 이를 달성하는 방법의 예입니다:
- 패턴 이해시스템에서 테이블의 스키마를 이해하고 이 정보를 사용하여 쿼리 생성의 기초를 결정합니다.
- 피드백에 따른 조정업데이트가 필요한 스키마의 필드에 대한 피드백과 이유를 기반으로 시스템이 사용자 기본 설정을 조정합니다.
- 쿼리 생성 및 실행시스템이 새로운 환경설정에 따라 업데이트된 항공편 및 호텔 데이터를 얻기 위한 쿼리를 생성하고 실행합니다.
다음은 이러한 개념을 통합한 업데이트된 Python 코드 예제입니다:
def adjust_based_on_feedback(feedback, preferences, schema):
# 根据用户反馈调整偏好
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# 根据模式进行推理以调整其他相关偏好
for field in schema:
if field in preferences:
preferences[field] = adjust_based_on_environment(feedback, field, schema)
return preferences
def adjust_based_on_environment(feedback, field, schema):
# 根据模式和反馈调整偏好的自定义逻辑
if field in feedback["liked"]:
return schema[field]["positive_adjustment"]
elif field in feedback["disliked"]:
return schema[field]["negative_adjustment"]
return schema[field]["default"]
def generate_code_to_fetch_data(preferences):
# 生成代码以根据更新的偏好获取航班数据
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# 生成代码以根据更新的偏好获取酒店数据
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# 模拟代码执行并返回模拟数据
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# 根据航班、酒店和景点生成行程
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# 示例模式
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# 示例用法
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# 使用更新的偏好重新生成并执行代码
updated_flight_code = generate_code_to_fetch_data(updated_preferences)
updated_hotel_code = generate_code_to_fetch_hotels(updated_preferences)
updated_flights = execute_code(updated_flight_code)
updated_hotels = execute_code(updated_hotel_code)
updated_itinerary = generate_itinerary(updated_flights, updated_hotels, feedback["liked"])
print("Updated Itinerary:", updated_itinerary)
설명 - 피드백 기반 예약
- 패턴 인식::
schema
이 사전은 피드백에 따라 환경설정을 조정하는 방법을 정의합니다. 여기에는 다음이 포함됩니다.favorites
노래로 응답avoid
등 필드와 그에 따른 조정 사항을 입력합니다. - 기본 설정 조정(
adjust_based_on_feedback
메서드)이 방법은 사용자 피드백과 패턴에 따라 환경설정을 조정합니다. - 환경 기반 조정(
adjust_based_on_environment
메서드)이 방법은 모드와 피드백에 맞게 맞춤 조정됩니다. - 쿼리 생성 및 실행시스템은 조정된 기본 설정에 따라 업데이트된 항공편 및 호텔 데이터를 가져오는 코드를 생성하고 이러한 쿼리 실행을 시뮬레이션합니다.
- 여행 생성시스템은 새로운 항공편, 호텔 및 명소 데이터를 기반으로 업데이트된 여정을 생성합니다.
시스템이 컨텍스트를 인식하고 패턴을 기반으로 추론함으로써 보다 정확하고 관련성 높은 검색어를 생성하여 더 나은 여행 조언과 개인화된 사용자 경험을 제공할 수 있습니다.
검색 증강 생성(RAG) 기법으로 SQL 사용
SQL(구조화된 쿼리 언어)은 데이터베이스와 상호 작용하기 위한 강력한 도구입니다. SQL을 검색 증강 생성(RAG) 접근 방식의 일부로 사용하면 데이터베이스에서 관련 데이터를 검색하여 AI 인텔리전스에 정보를 제공하고 응답 또는 조치를 생성할 수 있습니다. 여행사의 맥락에서 SQL을 RAG 기법으로 사용하는 방법을 살펴보겠습니다.
주요 개념
- 데이터베이스 상호 작용::
- SQL은 데이터베이스를 쿼리하고, 관련 정보를 검색하고, 데이터를 조작하는 데 사용됩니다.
- 예: 여행 데이터베이스에서 항공편 세부 정보, 호텔 정보 및 관광 명소 가져오기.
- RAG와 통합::
- 사용자 입력 및 기본 설정을 기반으로 SQL 쿼리를 생성합니다.
- 검색된 데이터는 개인화된 추천 또는 작업을 생성하는 데 사용됩니다.
- 동적 쿼리 생성::
- AI 인텔리전스는 컨텍스트와 사용자 요구 사항에 따라 동적 SQL 쿼리를 생성합니다.
- 예: 예산, 날짜 및 관심사별로 결과를 필터링하도록 SQL 쿼리를 사용자 지정합니다.
어플라이언스
- 자동화된 코드 생성: 특정 작업에 대한 코드 스니펫을 생성합니다.
- RAG로 SQLSQL 쿼리를 사용하여 데이터를 조작합니다.
- 문제 해결: 문제를 해결하기 위한 코드를 작성하고 실행합니다.
일반적인 예데이터 분석 인텔리전스 기관:
- 명령데이터 집합을 분석하여 추세를 찾습니다.
- 이동::
- 데이터 집합을 로드합니다.
- SQL 쿼리를 생성하여 데이터를 필터링합니다.
- 쿼리를 실행하고 결과를 검색합니다.
- 시각화 및 인사이트를 생성합니다.
- 자원(예: 인력 또는 관광)데이터 집합 액세스, SQL 함수.
- 경험과거 결과를 사용하여 향후 분석을 개선합니다.
실무 예시: 여행사에서 SQL 사용
- 사용자 기본 설정 수집
class Travel_Agent: def __init__(self): self.user_preferences = {} def gather_preferences(self, preferences): self.user_preferences = preferences
- SQL 쿼리 생성
def generate_sql_query(table, preferences): query = f"SELECT * FROM {table} WHERE " conditions = [] for key, value in preferences.items(): conditions.append(f"{key}='{value}'") query += " AND ".join(conditions) return query
- SQL 쿼리 실행
import sqlite3 def execute_sql_query(query, database="travel.db"): connection = sqlite3.connect(database) cursor = connection.cursor() cursor.execute(query) results = cursor.fetchall() connection.close() return results
- 권장 사항 생성
def generate_recommendations(preferences): flight_query = generate_sql_query("flights", preferences) hotel_query = generate_sql_query("hotels", preferences) attraction_query = generate_sql_query("attractions", preferences) flights = execute_sql_query(flight_query) hotels = execute_sql_query(hotel_query) attractions = execute_sql_query(attraction_query) itinerary = { "flights": flights, "hotels": hotels, "attractions": attractions } return itinerary travel_agent = Travel_Agent() preferences = { "destination": "Paris", "dates": "2025-04-01 to 2025-04-10", "budget": "moderate", "interests": ["museums", "cuisine"] } travel_agent.gather_preferences(preferences) itinerary = generate_recommendations(preferences) print("Suggested Itinerary:", itinerary)
샘플 SQL 쿼리
- 항공편 문의
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-04-10' AND budget='moderate';
- 호텔 문의
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
- 관광 명소 문의
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
검색 증강 생성(RAG) 기술의 일부인 SQL을 활용하면 여행사와 같은 인공지능이 관련 데이터를 동적으로 검색하고 활용하여 정확하고 개인화된 추천을 제공할 수 있습니다.
메타인지의 예
메타인지의 구현을 보여주기 위해 다음과 같은 경우 문제를 해결하는 간단한 지능을 만들어 보겠습니다.의사 결정 과정에 대한 성찰. 이 예제에서는 지능형 기관이 호텔 선택을 최적화하려고 시도한 다음 자체 추론을 평가하고 잘못되거나 차선의 선택을 할 경우 전략을 조정하는 시스템을 구축합니다.
인텔리전스가 가격과 품질을 조합하여 호텔을 선택하지만 결정에 '반영'하고 그에 따라 조정하는 기본 예제를 사용하여 이를 시뮬레이션해 보겠습니다.
메타인지를 어떻게 설명할 수 있을까요?
- 초기 의사 결정지식인은 품질에 관계없이 가장 저렴한 호텔을 선택합니다.
- 반영 및 평가: 초기 선택을 한 후 스마트 바디는 사용자 피드백을 사용하여 호텔이 "나쁜" 선택인지 여부를 확인합니다. 호텔의 품질이 너무 낮다고 판단되면 추론에 반영합니다.
- 전략 정렬인텔리전스는 반영된 내용을 바탕으로 전략을 조정하여 "가장 저렴한"에서 "최고 품질"로 전환하여 향후 반복 작업에서 의사 결정 프로세스를 개선합니다.
예시는 아래와 같습니다:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # 存储之前选择的酒店
self.corrected_choices = [] # 存储更正后的选择
self.recommendation_strategies = ['cheapest', 'highest_quality'] # 可用策略
def recommend_hotel(self, hotels, strategy):
"""
根据所选策略推荐酒店。
策略可以是“最便宜”或“最高质量”。
"""
if strategy == 'cheapest':
recommended = min(hotels, key=lambda x: x['price'])
elif strategy == 'highest_quality':
recommended = max(hotels, key=lambda x: x['quality'])
else:
recommended = None
self.previous_choices.append((strategy, recommended))
return recommended
def reflect_on_choice(self):
"""
反思上次做出的选择,并决定智能体是否应调整其策略。
智能体会考虑之前的选择是否导致了较差的结果。
"""
if not self.previous_choices:
return "尚未做出选择。"
last_choice_strategy, last_choice = self.previous_choices[-1]
# 假设我们有一些用户反馈告诉我们上次的选择是好是坏
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# 如果之前的选择不令人满意,则调整策略
new_strategy = 'highest_quality' if last_choice_strategy == 'cheapest' else 'cheapest'
self.corrected_choices.append((new_strategy, last_choice))
return f"反思选择。将策略调整为 {new_strategy}。"
else:
return "选择很好。无需调整。"
def get_user_feedback(self, hotel):
"""
模拟基于酒店属性的用户反馈。
为简单起见,假设如果酒店太便宜,则反馈为“差”。
如果酒店质量低于 7,则反馈为“差”。
"""
if hotel['price'] < 100 or hotel['quality'] < 7:
return "bad"
return "good"
# 模拟酒店列表(价格和质量)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# 创建一个智能体
agent = HotelRecommendationAgent()
# 第 1 步:智能体使用“最便宜”策略推荐酒店
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"推荐酒店(最便宜):{recommended_hotel['name']}")
# 第 2 步:智能体反思选择并在必要时调整策略
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# 第 3 步:智能体再次推荐,这次使用调整后的策略
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"调整后的酒店推荐(最高质量):{adjusted_recommendation['name']}")
지능적인 신체 대사의 인지 능력(IBM)
여기서 핵심은 인텔리전스의 능력입니다:
- 사전 선택 및 의사 결정 과정을 평가합니다.
- 이러한 성찰을 바탕으로 전략을 조정하는 것, 즉 메타인지를 실제로 적용하는 것입니다.
이것은 시스템이 내부 피드백에 반응하여 추론 과정을 조정할 수 있는 간단한 형태의 메타인지입니다.
평결에 도달하기
메타인지는 AI 지능의 기능을 크게 향상시킬 수 있는 강력한 도구입니다. 메타인지 프로세스를 통합하면 더 스마트하고 적응력이 뛰어나며 효율적인 인텔리전스를 설계할 수 있습니다. 다른 리소스를 사용하여 AI 지능의 메타인지라는 매혹적인 세계를 더 자세히 살펴보세요.
© 저작권 정책
이 글은 저작권이 있으며 무단으로 복제해서는 안 됩니다.
관련 문서
댓글 없음...