CodeGen
Főnév
CodeGen (tsz. CodeGens)
- (informatika) A CodeGen egy nagy nyelvi modell (LLM), amelyet kifejezetten programkód generálására fejlesztettek ki a Salesforce AI Research csapata által. A modell célja, hogy szabad szöveges leírásokból vagy részleges kód alapján működő programokat generáljon, támogassa a fejlesztők munkáját, és oktatási, kutatási célokra is használható legyen.
A CodeGen különlegessége, hogy:
- szövegről kódra tanult,
- több nyelvet támogat (Python, C, Java, JavaScript stb.),
- és nyílt forráskódú.
📜 Történeti háttér
- 2022-ben jelent meg először.
- A modellt a GPT-2/GPT-3 architektúra alapján építették tovább.
- Oktatás során szöveg + kód kombinációját használták, majd finomhangolták csak kódra.
- Fő cél: kutatási célra nyitott alternatívát nyújtani a zárt modellekkel (pl. Codex, Copilot) szemben.
⚙️ Hogyan működik?
A CodeGen egy Transformer-alapú nyelvi modell, amely autoregresszív módon generál kódot. Ez azt jelenti, hogy minden új tokent az előzőek alapján jósol meg.
Képzési lépések:
- Preambulum: Nyelvi adatokon történő előképzés (pl. angol Wikipédia)
- Finomhangolás:
- Vegyes kód-adathalmazon (GitHub, BigQuery, stb.)
- Majd célzottan programozási nyelveken
Tokenizáció:
A kód tokenizálása eltér a természetes nyelvtől – figyelembe veszi a szintaktikai egységeket (pl. def, class, {}, return, :).
📦 Modellváltozatok
| Modellváltozat | Méret (paraméter) | Specializáció |
|---|---|---|
| CodeGen-2.5B | 2,5 milliárd | Könnyű futtatás, alapfeladatok |
| CodeGen-6B | 6 milliárd | Erősebb, jó Python-képeség |
| CodeGen-16B | 16 milliárd | Nagy pontosság, több nyelven |
A modellek elérhetők Hugging Face-en, és futtathatók PyTorch/TensorFlow/JAX alatt.
🧩 Mire használható?
- Kódgenerálás szöveges leírás alapján
- Kódkiegészítés (auto-complete)
- Hibakeresés, javítás
- Kódmagyarázat
- Tesztgenerálás
- Algoritmus-implementáció
Támogatott nyelvek: Python, Java, JavaScript, C, C++, Go, Fortran, Shell, TypeScript
🧪 Példa
Prompt:
# Írj egy Python függvényt, amely eldönti, hogy egy szám prímszám-e.
Generált kód:
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
📊 Teljesítmény – Benchmarkok
| Benchmark | CodeGen-16B | Megjegyzés |
|---|---|---|
| HumanEval (Python) | ~29–30% | pass@1 metrika szerint |
| MBPP | ~35–40% | Több lépéses problémák |
| BigCode benchmark | Középerős | Nem a legmodernebb, de stabil |
Megjegyzés: A DeepSeek-Coder, Code Llama, StarCoder modellek azóta magasabb pontosságot mutatnak.
✅ Előnyök
- Nyílt licencű → kutatásban, oktatásban szabadon használható
- Több nyelvet ismer, nem csak Pythonra korlátozódik
- Egyszerűen használható, jól dokumentált Hugging Face-en
- Offline futtatható → nincs szükség API-hívásra
- Kisebb modellek is elérhetők gyengébb gépekre
⚠️ Hátrányok
- Nem Instruct-típusú: nem ideális természetes nyelvű kérdés-válaszra
- Nem optimalizált RLHF-fel (mint pl. GPT-4 vagy Copilot)
- Kevésbé pontos a legmodernebb modellekhez képest
- Nem mindig ad pontos vagy hatékony megoldást – érdemes ellenőrizni a kódot
🔧 Használat (Pythonban, Hugging Face)
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
model_id = "Salesforce/codegen-6B-multi"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
codegen = pipeline("text-generation", model=model, tokenizer=tokenizer)
prompt = "# Python: Fibonacci-sorozat kiszámítása"
result = codegen(prompt, max_length=100, temperature=0.2)
print(result[0]["generated_text"])
🛠️ Hol használható?
| Alkalmazás | Példa |
|---|---|
| Oktatás | Algoritmusgyakorlatok, példakód generálása |
| Kutatás | Kód-adat finomhangolás, új architektúrák |
| Fejlesztői asszisztens | IDE-be integrálható kódkiegészítőként |
| Automatizálás | Scriptgenerálás, sablonkód előállítása |
🔮 Jövőkép
Bár a CodeGen nem a legmodernebb modell 2024–2025-ben, továbbra is:
- hasznos tanulási és kutatási célokra,
- kiváló alap finomhangoláshoz (pl. saját nyelv, céges kód),
- fontos lépés volt a nyílt generatív kódmodellek fejlődésében.
A Salesforce csapata több frissítést is kilátásba helyezett – így várható újabb CodeGen 2 változat is.
🧾 Összefoglalás
| Tulajdonság | Leírás |
|---|---|
| Fejlesztő | Salesforce AI Research |
| Licenc | Nyílt (Apache 2.0) |
| Támogatott nyelvek | Python, Java, JS, C, C++, Go, Fortran… |
| Legnagyobb modell | 16B paraméter |
| Használat | Szövegből kód, kódkiegészítés, oktatás |
| Alternatívák | Code Llama, DeepSeek-Coder, StarCoder |
Ha szeretnéd, bemutathatom:
- hogyan lehet a CodeGen-t saját gépen finomhangolni,
- hogyan készíthetsz belőle programozó chatasszisztenst,
- vagy összehasonlíthatom a teljesítményét más nyílt kódmodellekkel (pl. DeepSeek-Coder, Code Llama, GPT-Neo).