반응형
AI 에이전트는 업무 자동화와 생산성을 높이는 데 큰 도움이 됩니다. 다양한 프레임워크 없이도, Python과 OpenAI API만으로 AI 에이전트를 만들 수 있습니다. 이 문서는 AI 에이전트 워크플로우를 구현하는 5가지 패턴을 쉽게 따라할 수 있도록 정리하였습니다.
1. 프롬프트 체이닝 (Prompt Chaining)
개념
여러 개의 프롬프트를 순차적으로 실행하여 점진적으로 더 정확한 답변을 얻는 방식입니다.
예제: 여행 일정 추천 AI
- 사용자 입력: "여름 휴가를 계획 중이고 따뜻한 날씨, 자연경관, 역사적인 장소를 좋아합니다."
- 1단계: 적합한 여행지 3곳 추천 (예: 그리스, 이탈리아, 일본)
- 2단계: 선택한 여행지에서 즐길 수 있는 5가지 활동 추천
- 3단계: 하루 일정을 오전, 오후, 저녁으로 나누어 계획
코드 예제
from openai import OpenAI
def prompt_chain(user_input):
prompts = [
f"{user_input}에 맞는 여행지 3곳을 추천해줘.",
"선택한 여행지에서 할 수 있는 5가지 활동을 추천해줘.",
"오전, 오후, 저녁으로 나누어 일정을 짜줘."
]
responses = []
for prompt in prompts:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}]
)
responses.append(response["choices"][0]["message"]["content"])
return responses[-1]
2. 라우팅 (Routing)
개념
질문의 난이도와 유형에 따라 적절한 AI 모델을 선택하는 방식입니다.
예제: AI 모델 자동 선택
- 단순 연산 (예: "1+1은?" → GPT-4 미니)
- 일반 질문 (예: "여행 일정을 짜줘" → GPT-4)
- 복잡한 문제 해결 (예: "Python으로 웹 API 만들어줘" → GPT-4 Turbo)
코드 예제
def route_query(user_query):
model_selection_prompt = (
f"다음 질문을 분석하고, 적절한 AI 모델을 선택해줘: {user_query}\n"
"1. 단순 연산 -> GPT-4 미니\n"
"2. 일반 질문 -> GPT-4\n"
"3. 복잡한 문제 해결 -> GPT-4 Turbo"
)
model_choice = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": model_selection_prompt}]
)
selected_model = model_choice["choices"][0]["message"]["content"]
response = openai.ChatCompletion.create(
model=selected_model,
messages=[{"role": "user", "content": user_query}]
)
return response["choices"][0]["message"]["content"]
3. 병렬 처리 (Parallel Processing)
개념
여러 개의 AI 모델에 동시에 요청을 보내고, 최종적으로 가장 적합한 응답을 선택하는 방식입니다.
예제: 문장 번역 AI
- 동일한 문장을 GPT-4, GPT-4 미니, GPT-4 Turbo에 동시 요청 후, 최적의 번역을 선택
코드 예제
import asyncio
async def call_llm(model, prompt):
response = await openai.ChatCompletion.acreate(
model=model,
messages=[{"role": "user", "content": prompt}]
)
return response["choices"][0]["message"]["content"]
async def parallel_translation(text):
models = ["gpt-4", "gpt-4-mini", "gpt-4-turbo"]
tasks = [call_llm(model, f"'{text}' 문장을 한국어로 번역해줘.") for model in models]
results = await asyncio.gather(*tasks)
return max(results, key=len) # 가장 긴 응답 선택
4. 오케스트레이터 & 워커 (Orchestrator & Worker)
개념
하나의 질문을 여러 개의 하위 질문으로 나누어 각 질문을 별도의 AI 모델이 처리한 후, 최종적으로 결과를 조합하는 방식입니다.
예제: AI의 미래 직업 영향 분석
- AI가 대체할 가능성이 높은 직업은?
- AI 발전으로 새롭게 생길 직업은?
- AI로 인해 요구되는 기술 변화는?
코드 예제
def orchestrate_task(main_query):
subqueries = [
f"{main_query}와 관련된 하위 질문 3개를 생성해줘.",
]
sub_tasks = [
openai.ChatCompletion.create(model="gpt-4", messages=[{"role": "user", "content": q}])
for q in subqueries
]
results = [task["choices"][0]["message"]["content"] for task in sub_tasks]
return "\n".join(results)
5. 평가 및 최적화 (Evaluation & Optimization)
개념
AI가 생성한 결과물을 평가하고, 만족스러운 결과가 나올 때까지 반복 개선하는 방식입니다.
예제: 뉴스 기사 요약 평가
- AI가 뉴스 요약
- 평가 기준 (핵심 포함 여부, 정확성, 가독성 등) 체크
- 부족한 경우 피드백 반영 후 재요청
코드 예제
def evaluate_summary(summary):
eval_prompt = f"'{summary}'의 요약 정확성을 평가하고, 부족한 점을 피드백 해줘."
evaluation = openai.ChatCompletion.create(model="gpt-4", messages=[{"role": "user", "content": eval_prompt}])
return evaluation["choices"][0]["message"]["content"]
def optimize_summary(article):
summary = call_llm("gpt-4", f"기사 내용을 요약해줘: {article}")
for _ in range(5):
feedback = evaluate_summary(summary)
if "패스" in feedback:
return summary
summary = call_llm("gpt-4", f"피드백 반영하여 다시 요약해줘: {feedback}")
return summary
이제, 위의 패턴을 활용하여 AI 에이전트를 직접 만들어보세요!
반응형
'Python' 카테고리의 다른 글
Solapi 사용 가이드: 카카오톡 메시지 API 활용하기 (0) | 2025.01.02 |
---|---|
Python으로 Google Trends 활용해 트렌드 분석하기 (3) | 2024.12.16 |
Google Trends의 실시간 트렌드 가져오기 - Python (2) | 2024.12.13 |
코랩에서 구글 드라이브의 csv 파일 읽기 - 파이썬 머신러닝, 인공지능 (1) | 2020.12.08 |
윈도우즈에서, 주피터 노트북 실행법 (0) | 2020.12.08 |