TreeLLM์ USENIX Guidelines๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ AI Agent ์์คํ ์ ํตํด ํ์ ๋ ผ๋ฌธ์ ์๋ ๋ถ์ํ๊ณ ๊ฐ์ ์ ์์ ์ ๊ณตํ๋ ๋๊ตฌ์ ๋๋ค.
- OriginalityAgent: USENIX Original Ideas ๊ธฐ์ค์ผ๋ก ๋ ์ฐฝ์ฑ ํ๊ฐ
- LessonExtractionAgent: USENIX Lessons ๊ธฐ์ค์ผ๋ก ๊ตํ ์ถ์ถ ๋ถ์
- AssumptionAgent: Method & Experiments์ ๊ฐ์ ์ฌํญ ๊ฒ์ฆ
- RelatedPaperComparisonAgent: ์ ๋ก๋ํ ๊ด๋ จ ๋ ผ๋ฌธ๊ณผ ๋น๊ต ๋ถ์
- Original Ideas: ๋ฌธ์ ์ ์, ๊ธฐ์กด ๊ธฐ์ ํ๊ณ, ์์ด๋์ด ์ค์์ฑ, ์ฐจ๋ณ์ฑ
- Reality: ์ค์ ๊ตฌํ ์ฌ๋ถ, ๊ตฌํ ์์ฑ๋, ์ค์ฉ์ ์ค์์ฑ
- Lessons: ๊ตํ ๋ช ํ์ฑ, ์ผ๋ฐ์ ์ ์ฉ๊ฐ๋ฅ์ฑ, ์ ์ ์กฐ๊ฑด ๋ช ์
- ํ ์คํธ ์ง์ ์ ๋ ฅ
- PDF ํ์ผ ์๋ ์น์ ์ถ์ถ
- ๊ด๋ จ ๋ ผ๋ฌธ PDF ์ ๋ก๋๋ฅผ ํตํ ๋น๊ต ๋ถ์
- Agent๋ณ ํ์ ์น์ ๋ง ์ ๋ณ ์ ๋ ฅ (ํ ํฐ ํจ์จ์ฑ)
- Introduction + Related Work โ OriginalityAgent
- Method + Experiments โ AssumptionAgent
- Conclusion โ LessonExtractionAgent
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/treellm/treellm.git
cd TreeLLM
# ์์กด์ฑ ์ค์น
pip install -r requirements.txt
# LLM API ํค ์ค์
export OPENAI_API_KEY="your-openai-api-key"
# ๋๋
export ANTHROPIC_API_KEY="your-anthropic-api-key"from src.core import PaperSections
from treellm_system import TreeLLMSystem
# ๋
ผ๋ฌธ ์น์
๋ฐ์ดํฐ ์ค๋น
paper = PaperSections(
introduction="๋ณธ ์ฐ๊ตฌ๋...",
related_work="๊ธฐ์กด ์ฐ๊ตฌ๋ค์...",
method="์ ์ํ๋ ๋ฐฉ๋ฒ์...",
experiments="์คํ ๊ฒฐ๊ณผ...",
conclusion="๊ฒฐ๋ก ์ ์ผ๋ก..."
)
# TreeLLM ์์คํ
์ด๊ธฐํ ๋ฐ ๋ถ์
treellm = TreeLLMSystem()
results = treellm.analyze_paper(
paper_sections=paper,
selected_agents=["OriginalityAgent", "LessonExtractionAgent"]
)
# ๊ฒฐ๊ณผ ํ์ธ
print(f"์ ์ฒด ์ ์: {results['integrated_summary']['overall_score']:.2f}/5.0")# Streamlit ์น ์ฑ ์คํ
streamlit run web_interface.py# ๋ค์ํ ์ฌ์ฉ ์์ ํ์ธ
python example_usage.pyTreeLLM/
โโโ src/ # ๋ฉ์ธ ์์ค ์ฝ๋
โ โโโ core/ # ํต์ฌ ๋ชจ๋
โ โ โโโ data_models.py # ๋ฐ์ดํฐ ํด๋์ค
โ โ โโโ guideline_manager.py # USENIX ๊ฐ์ด๋๋ผ์ธ ๊ด๋ฆฌ
โ โ โโโ section_extractor.py # Agent๋ณ ์น์
๋งคํ
โ โโโ agents/ # Agent ๋ชจ๋
โ โโโ base_agent.py # ๊ธฐ๋ณธ Agent ํด๋์ค
โ โโโ usenix_agents.py # USENIX ์ ์ฉ Agent๋ค
โ โโโ comparison_agents.py # ๊ด๋ จ๋
ผ๋ฌธ ๋น๊ต Agent
โโโ utils/ # ์ ํธ๋ฆฌํฐ
โ โโโ pdf_processor.py # PDF ์ฒ๋ฆฌ
โ โโโ llm_interface.py # LLM API ์ธํฐํ์ด์ค
โโโ tests/ # ํ
์คํธ
โ โโโ test_agents.py # Agent ํ
์คํธ
โโโ treellm_system.py # ๋ฉ์ธ ์์คํ
โโโ example_usage.py # ์ฌ์ฉ ์์
โโโ web_interface.py # Streamlit ์น ์ธํฐํ์ด์ค
โโโ requirements.txt # ์์กด์ฑ
โโโ setup.py # ํจํค์ง ์ค์
| Agent | ์ ๋ ฅ ์น์ | ๋ถ์ ๋ด์ฉ | USENIX ๊ธฐ์ค |
|---|---|---|---|
| OriginalityAgent | Introduction + Related Work | ๋ ์ฐฝ์ฑ, ์ฐจ๋ณ์ , ๋ฌธ์ ์ ์ | Original Ideas |
| LessonExtractionAgent | Conclusion | ๊ตํ ์ถ์ถ, ์ผ๋ฐํ ๊ฐ๋ฅ์ฑ | Lessons |
| AssumptionAgent | Method + Experiments | ๊ฐ์ ์ฌํญ, ์ ์ ์กฐ๊ฑด | - |
| RelatedPaperComparisonAgent | ์ ์ฒด + ์ ๋ก๋ ๋ ผ๋ฌธ | ๊ด๋ จ์ฐ๊ตฌ ๋น๊ต, ํฌ์ง์ ๋ | - |
# ๊ฐ๋จํ ๋
ผ๋ฌธ ๋ถ์
results = treellm.analyze_paper(paper_sections=paper)# ๊ด๋ จ ๋
ผ๋ฌธ ์ ๋ณด ์ค๋น
related_papers = [
{"title": "Related Work 1", "year": 2023, "authors": ["Smith et al."]},
{"title": "Related Work 2", "year": 2022, "authors": ["Johnson et al."]}
]
# ๋น๊ต ๋ถ์ ์คํ
results = treellm.analyze_paper(
paper_sections=paper,
uploaded_papers=related_papers
)from utils.pdf_processor import PDFProcessor
# PDF์์ ์น์
์๋ ์ถ์ถ
sections_dict = PDFProcessor.extract_sections_from_pdf("paper.pdf")
paper = PaperSections(**sections_dict)
# ๋ถ์ ์คํ
results = treellm.analyze_paper(paper_sections=paper){
"usenix_analysis": {
"OriginalityAgent": {
"scores": {
"๋ฌธ์ ์ ์ ๋ช
ํ์ฑ": 4.2,
"๊ธฐ์กด ๊ธฐ์ ํ๊ณ ์ค๋ช
": 3.8,
"์์ด๋์ด ์ค์์ฑ": 4.0,
"๊ธฐ์กด ์ฐ๊ตฌ์ ์ฐจ๋ณ์ฑ": 3.5
},
"findings": ["๋ฐ๊ฒฌ์ฌํญ1", "๋ฐ๊ฒฌ์ฌํญ2"],
"suggestions": ["๊ฐ์ ์ ์1", "๊ฐ์ ์ ์2"]
}
},
"integrated_summary": {
"overall_score": 3.95,
"total_suggestions": 8,
"priority_improvements": ["์ฐ์ ๊ฐ์ 1", "์ฐ์ ๊ฐ์ 2"]
}
}# Agent ํ
์คํธ ์คํ
python tests/test_agents.py
# ๋๋ pytest ์ฌ์ฉ
pytest tests/- OpenAI GPT-4/GPT-3.5:
LLMFactory.create_llm("openai") - Anthropic Claude:
LLMFactory.create_llm("anthropic") - Mock LLM: ํ
์คํธ์ฉ
MockLLMInterface()
# Agent๋ณ ํ ํฐ ์ฌ์ฉ๋ ํ์ธ
token_usage = treellm.get_agent_token_usage()
print(token_usage)
# ์ถ๋ ฅ ์์:
# {
# 'OriginalityAgent': 3500, # Introduction + Related Work
# 'LessonExtractionAgent': 1000, # Conclusion๋ง
# 'AssumptionAgent': 5500 # Method + Experiments
# }- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
- TreeLLM Team - ์ด๊ธฐ ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์
- v0.1.0 - ์ด๊ธฐ ๋ฆด๋ฆฌ์ฆ
- USENIX Guidelines ๊ธฐ๋ฐ Agent ์์คํ
- PDF ์๋ ์ฒ๋ฆฌ
- ์น ์ธํฐํ์ด์ค
- ๊ด๋ จ ๋ ผ๋ฌธ ๋น๊ต ๊ธฐ๋ฅ
๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์ง๋ฌธ์ด ์์ผ์๋ฉด Issues์ ๋ฑ๋กํด ์ฃผ์ธ์.
TreeLLM์ผ๋ก ๋ ๋์ ๋ ผ๋ฌธ์ ์์ฑํ์ธ์! ๐