기업을 위한 Agentic AI 시대가 왔다! Magentic-One으로 복합 작업 자동화 배우기

Поделиться
HTML-код
  • Опубликовано: 15 янв 2025

Комментарии • 6

  • @CONNECT-AI-LAB
    @CONNECT-AI-LAB  4 дня назад +3

    from typing import Dict, Any
    import logging
    from openai import OpenAI
    import requests
    from bs4 import BeautifulSoup
    import subprocess
    logger = logging.getLogger(__name__)
    class BaseAgent:
    def __init__(self, config: Dict[str, Any]):
    self.config = config
    self.llm_client = OpenAI(api_key=config["llm_config"]["config"]["api_key"])
    def _call_llm(self, prompt: str) -> str:
    """LLM API 호출"""
    response = self.llm_client.chat.completions.create(
    model=self.config["llm_config"]["config"]["model"],
    messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message.content
    class WebSurferAgent(BaseAgent):
    def search(self, query: str) -> Dict[str, Any]:
    print(f"🔍 검색 중: {query}")
    # 유명한 시각화 라이브러리들을 기본값으로 설정
    default_libraries = [
    {
    "name": "matplotlib",
    "description": "Python plotting package",
    "html_url": "github.com/matplotlib/matplotlib"
    },
    {
    "name": "seaborn",
    "description": "Statistical data visualization",
    "html_url": "github.com/mwaskom/seaborn"
    },
    {
    "name": "plotly",
    "description": "Interactive graphing library for Python",
    "html_url": "github.com/plotly/plotly.py"
    }
    ]
    try:
    # GitHub API를 통한 검색
    search_url = f"api.github.com/search/repositories?q={query}+language:python+visualization"
    headers = {"Accept": "application/vnd.github.v3+json"}
    response = requests.get(search_url, headers=headers)
    if response.status_code == 200:
    repos = response.json()["items"][:3] # 상위 3개 저장소
    if not repos: # 검색 결과가 없으면 기본값 사용
    repos = default_libraries
    else:
    repos = default_libraries
    # LLM에게 최적의 라이브러리 선택 요청
    prompt = """다음 Python 시각화 라이브러리 중 가장 적합한 것을 선택하고,
    라이브러리 이름만 반환하세요 (예: 'matplotlib'):
    선택지:
    {choices}
    형식:
    """
    choices = "
    ".join([f"- {repo['name']}: {repo['description']}" for repo in repos])
    chosen = self._call_llm(prompt.format(choices=choices))
    # 선택된 라이브러리의 URL 찾기
    chosen_repo = next((repo for repo in repos if chosen.strip().lower() in repo['name'].lower()), repos[0])
    return {
    "results": repos,
    "chosen": chosen,
    "url": chosen_repo["html_url"]
    }
    except Exception as e:
    print(f"검색 중 오류 발생: {e}")
    # 오류 발생 시 기본값 반환
    return {
    "results": default_libraries,
    "chosen": "matplotlib",
    "url": "github.com/matplotlib/matplotlib"
    }
    class FileSurferAgent(BaseAgent):
    def inspect(self, repo_url: str) -> str:
    print(f"📄 저장소 분석 중: {repo_url}")
    # README 가져오기
    readme_url = f"{repo_url}/raw/main/README.md"
    response = requests.get(readme_url)
    if response.status_code == 200:
    readme_content = response.text
    # LLM에게 README 분석 요청
    prompt = f"""다음 README 내용을 분석하고 핵심 설치 방법을 추출하세요:
    {readme_content[:2000]} # 처음 2000자만 사용
    """
    analysis = self._call_llm(prompt)
    return analysis
    return "README를 찾을 수 없습니다."
    class CoderAgent(BaseAgent):
    def write_script(self, readme_content: str) -> str:
    print("🤖 설치 스크립트 생성 중...")
    prompt = """다음 README 분석 결과를 바탕으로 Python 패키지 설치를 위한
    pip 명령어만 생성하세요. 설명이나 주석 없이 실행 가능한 명령어만 반환하세요.
    README 내용:
    {content}
    형식: pip install
    예시 응답:
    pip install matplotlib
    """
    install_script = self._call_llm(prompt.format(content=readme_content))
    # pip install로 시작하지 않으면 기본값 사용
    if not install_script.strip().startswith("pip install"):
    install_script = "pip install matplotlib"
    return install_script.strip()
    class ComputerTerminalAgent(BaseAgent):
    def run(self, script: str) -> bool:
    print(f"💻 실행 중: {script}")
    try:
    # 실제 pip 명령어 실행
    result = subprocess.run(
    script.split(),
    capture_output=True,
    text=True,
    check=True
    )
    print(result.stdout)
    return True
    except subprocess.CalledProcessError as e:
    print(f"설치 실패: {e.stderr}")
    return False
    코드 공유합니다~!

  • @akromawrath7353
    @akromawrath7353 4 дня назад +1

    Nice 👍👏😁

  • @honon-cs2wl
    @honon-cs2wl 5 дней назад +1

    돌아와주셔서 감사합니다 JAY님!!!!!!

  • @Svet_dream
    @Svet_dream 4 дня назад +1

    Thanks for the great video ❤

  • @zacharikurbah6358
    @zacharikurbah6358 5 дней назад +1

    This is a great video on AI 👍🏻