2025 ์คํ์์ค ์ปจํธ๋ฆฌ๋ทฐ์ ์์นด๋ฐ๋ฏธ(OSSCA) ์ฒดํํ ํ๋ก์ ํธ๋ก, Qodo์์ ๊ฐ๋ฐํ AI ๊ธฐ๋ฐ Pull Request ์๋ํ ๋๊ตฌ์ ํ ์คํธ ๋ฐ ๋ฌธ์ํ ๊ธฐ์ฌ๋ฅผ ์ํํ์ต๋๋ค.
- ์ ์ฒด: 2025.3.6 - 2025.5.27 (6์ฃผ)
- Git ์ฌํ ๊ณผ์ : 2025.4.14 - 2025.4.27
- ์คํ์์ค ์ฌํ ๋ฉํ ๋ง: 2025.4.28 - 2025.5.27
- /describe: PR์ ๋ํ ์๋ ์ค๋ช ์์ฑ ๋ฐ ๋ผ๋ฒจ๋ง
- /review: ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฐ ๋ณด์ ์ทจ์ฝ์ ๋ถ์
- /improve: ์ฝ๋ ๊ฐ์ ์ ์ ๋ฐ ์ต์ ํ ๋ฐฉ์ ์ ์
- /ask: ํน์ ์ง๋ฌธ์ ๋ํ AI ๊ธฐ๋ฐ ๋ต๋ณ ์ ๊ณต
# AI ๋ชจ๋ธ์๊ฒ ์ ๋ฌ๋๋ ํ๋กฌํํธ ๊ตฌ์กฐ ๋ถ์
def analyze_prompt_structure():
"""
- ํจ๊ณผ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ํ ํ๋กฌํํธ ์ต์ ํ
- ์ปจํ
์คํธ ์ ํ๊ณผ ํ ํฐ ๊ด๋ฆฌ ์ ๋ต
- ๋ค์ํ ์ ํ์ PR์์ ์ฑ๋ฅ ํ
์คํธ
"""
def test_clip_tokens_comprehensive():
"""
21๊ฐ์ ํฌ๊ด์ ์ธ ํ
์คํธ ์ผ์ด์ค ๊ตฌํ:
- ์ฃ์ง ์ผ์ด์ค ๊ฒ์ฆ
- ์๋ฌ ์ผ์ด์ค ์ฒ๋ฆฌ
- Unicode ๋ฌธ์ ์ฒ๋ฆฌ
- ๋งค๊ฐ๋ณ์ ์กฐํฉ ํ
์คํธ
"""
def clip_tokens(text: str, max_tokens: int, factor: float = 0.9) -> str:
"""
์์ ํ ํจ์ ๋ฌธ์ํ:
Args:
text (str): ํด๋ฆฌํํ ํ
์คํธ
max_tokens (int): ์ต๋ ํ ํฐ ์
factor (float): ์์ ๊ณ์ (๊ธฐ๋ณธ๊ฐ: 0.9)
Returns:
str: ํด๋ฆฌํ๋ ํ
์คํธ
Examples:
>>> clip_tokens("Hello world", 5)
"Hello"
"""
-
๊ธฐ๋ณธ ๊ธฐ๋ฅ ํ ์คํธ
- ์ ์์ ์ธ ํ ์คํธ ํด๋ฆฌํ
- ๋น ๋ฌธ์์ด ์ฒ๋ฆฌ
- None ๊ฐ ์ฒ๋ฆฌ
-
์ฃ์ง ์ผ์ด์ค ํ ์คํธ
- ๋งค์ฐ ๊ธด ํ ์คํธ ์ฒ๋ฆฌ
- ํน์ ๋ฌธ์ ํฌํจ ํ ์คํธ
- Unicode ๋ฌธ์ ์ฒ๋ฆฌ
-
๋งค๊ฐ๋ณ์ ๊ฒ์ฆ
- ๋ค์ํ factor ๊ฐ ํ ์คํธ
- ๊ฒฝ๊ณ๊ฐ ํ ์คํธ
- ์๋ชป๋ ๋งค๊ฐ๋ณ์ ์ฒ๋ฆฌ
# Python ๋ฒ ์คํธ ํ๋ํฐ์ค ์ ์ฉ
def test_empty_input_text(self):
"""Test that empty input returns empty string."""
assert clip_tokens("", 10) == ""
# ๊ฐ์ : == None โ is None
assert clip_tokens(None, 10) is None # mrT23๋ ํผ๋๋ฐฑ ๋ฐ์
# ์ ์ฅ์ ํฌํฌ ๋ฐ ํด๋ก
git clone https://github.com/TaskerJang/pr-agent.git
cd pr-agent
# ๊ฐ์ํ๊ฒฝ ์์ฑ
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# ์์กด์ฑ ์ค์น
pip install -r requirements.txt
# ๋จ์ ํ
์คํธ ์คํ
pytest tests/unittest/test_clip_tokens.py -v
# ์ ์ฒด ํ
์คํธ ์คํ
pytest tests/ -v
# ์ปค๋ฒ๋ฆฌ์ง ํ์ธ
pytest --cov=pr_agent tests/
TaskerJang ๊ธฐ์ฌ ์์ญ/
โโโ ํ
์คํธ ์์ง๋์ด๋ง/ # 21๊ฐ ํฌ๊ด์ ๋จ์ ํ
์คํธ ์์ฑ
โโโ ๊ธฐ์ ๋ฌธ์ํ/ # ์์ ํ ํจ์ ๋ฌธ์ํ ๊ตฌํ
โโโ ์ฝ๋ ํ์ง ๊ฐ์ / # Python ๋ฒ ์คํธ ํ๋ํฐ์ค ์ ์ฉ
โโโ ํ์ต ๊ธฐ๋ก ๋ฐ ๊ณต์ / # 10ํธ ๋ธ๋ก๊ทธ ํฌ์คํ
โโโ ์คํ์์ค ๊ธฐ์ฌ ํ๋ก์ธ์ค/ # Fork๋ถํฐ PR๊น์ง ์์ ์ ๋ณต
PR-Agent ๋ถ์ ์๋ฆฌ์ฆ
์คํ์์ค ๊ธฐ์ฌ ๊ฐ์ด๋
์ฃผ์ ๊ตฌํ ์ฌํญ
๋ฉ์ธํ ์ด๋ ํผ๋๋ฐฑ
|
๊ธฐ์ฌ ์์ญ | ์ธ๋ถ ๋ด์ฉ | ์ฑ๊ณผ |
---|---|---|
๋จ์ ํ ์คํธ | 21๊ฐ ํฌ๊ด์ ํ ์คํธ ์ผ์ด์ค | โ ์๋ฃ |
ํจ์ ๋ฌธ์ํ | ์์ ํ docstring ๋ฐ ์ฌ์ฉ ์์ | โ ์๋ฃ |
์ฝ๋ ํ์ง | Python ๋ฒ ์คํธ ํ๋ํฐ์ค ์ ์ฉ | โ ์๋ฃ |
ํ์ต ๊ธฐ๋ก | 10ํธ ๊ธฐ์ ๋ธ๋ก๊ทธ ํฌ์คํ | โ ์๋ฃ |
PR ์ฑ๊ณต | PR #1816 MERGED | โ ์ฑ๊ณต |
ํต์ฌ ์ฑ๊ณผ
- ๐ฅ PR #1816 MERGED: utils.py clip_tokens ํจ์ ๊ฐ์
- ๐ ์์ ํ ๋ฌธ์ํ: ๊ฐ๋ฐ์ ๊ฒฝํ ํฅ์์ ์ํ ์์ธ ๊ฐ์ด๋
- ๐งช 21๊ฐ ํ ์คํธ ์ผ์ด์ค: ๋ชจ๋ ์๋๋ฆฌ์ค ๊ฒ์ฆ ๋ฐ ์์ ์ฑ ํ๋ณด
- ๐ 10ํธ ๋ธ๋ก๊ทธ: ์ฒด๊ณ์ ํ์ต ๊ณผ์ ๊ธฐ๋ก ๋ฐ ์ง์ ๊ณต์
๐ค PR-Agent ์๋ณธ ์ ์ฅ์ | ๐ข Qodo ๊ณต์ ์ฌ์ดํธ | ๐ Qodo Merge ๋ฌธ์ |
๐ OpenAI API | ๐งช pytest ๋ฌธ์ | ๐ Python ๊ณต์ ๋ฌธ์ |