Python

파이썬으로 AI 에이전트 만들기

Pro.Dev 2025. 2. 18. 22:25
반응형

AI 에이전트는 업무 자동화와 생산성을 높이는 데 큰 도움이 됩니다. 다양한 프레임워크 없이도, Python과 OpenAI API만으로 AI 에이전트를 만들 수 있습니다. 이 문서는 AI 에이전트 워크플로우를 구현하는 5가지 패턴을 쉽게 따라할 수 있도록 정리하였습니다.


1. 프롬프트 체이닝 (Prompt Chaining)

개념

여러 개의 프롬프트를 순차적으로 실행하여 점진적으로 더 정확한 답변을 얻는 방식입니다.

예제: 여행 일정 추천 AI

  1. 사용자 입력: "여름 휴가를 계획 중이고 따뜻한 날씨, 자연경관, 역사적인 장소를 좋아합니다."
  2. 1단계: 적합한 여행지 3곳 추천 (예: 그리스, 이탈리아, 일본)
  3. 2단계: 선택한 여행지에서 즐길 수 있는 5가지 활동 추천
  4. 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의 미래 직업 영향 분석

  1. AI가 대체할 가능성이 높은 직업은?
  2. AI 발전으로 새롭게 생길 직업은?
  3. 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가 생성한 결과물을 평가하고, 만족스러운 결과가 나올 때까지 반복 개선하는 방식입니다.

예제: 뉴스 기사 요약 평가

  1. AI가 뉴스 요약
  2. 평가 기준 (핵심 포함 여부, 정확성, 가독성 등) 체크
  3. 부족한 경우 피드백 반영 후 재요청

코드 예제

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 에이전트를 직접 만들어보세요!

반응형