Размер видео: 1280 X 720853 X 480640 X 360
Показать панель управления
Автовоспроизведение
Автоповтор
from typing import Dict, Anyimport loggingfrom openai import OpenAIimport requestsfrom bs4 import BeautifulSoupimport subprocesslogger = 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.contentclass 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 코드 공유합니다~!
Nice 👍👏😁
돌아와주셔서 감사합니다 JAY님!!!!!!
매일 올릴게요!
Thanks for the great video ❤
This is a great video on AI 👍🏻
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
코드 공유합니다~!
Nice 👍👏😁
돌아와주셔서 감사합니다 JAY님!!!!!!
매일 올릴게요!
Thanks for the great video ❤
This is a great video on AI 👍🏻