# Agent Skills a Claude API-ban: hogyan használjunk kész skillt Claude Code nélkül

> Hogyan csatlakoztassunk egy kész pptx-készséget a Claude API-hoz: container.skills, a kódvégrehajtási eszköz, a válasz ellenőrzése és a prezentáció letöltése a Files API-n keresztül.

Source: https://ailoot.ai/blog/hu/claude-api-agent-skills/
Canonical: https://ailoot.ai/blog/hu/claude-api-agent-skills/
Language: hu
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-039
Revision: sha256-e1a21ca811c1f73d1804a1bd02bbbf5ff68e9c17aac9df9dc8e80442598be491


<div class="aside" data-semantic="key-takeaway" role="note" aria-label="A szakasz legfontosabb tudnivalója">

Legfontosabb tudnivaló

A dokumentumokhoz készült kész Agent Skills közvetlenül a Claude API-n keresztül is használhatók: adja meg a skillt a `container.skills` mezőben, és engedélyezze a `code_execution` eszközt. Az első kéréshez a hivatalos példában szereplő, egymással kompatibilis modell- és eszközpárost használja. A létrehozott fájlt külön töltse le a `file_id` segítségével; a példa ugyanazt az API-kulcsot használja a kéréshez és a letöltéshez.

</div>



További útmutatást az [Ailoot dokumentációjában](https://ailoot.ai/docs/) talál.

## Amire szüksége lesz

Ez az útmutató arra szolgál, hogyan hívja meg közvetlenül egy programból az API-t, nem pedig arra, hogyan telepítsen skillt a Claude Code-ba. Szüksége lesz egy Claude API-kulcsra, hozzáférésre a kiválasztott modellhez és Python 3-ra. Az alábbi kód a Python szabványos könyvtárát és a HTTP-t használja, így nem függ attól, hogy az SDK melyik verzióját telepítette. A kulcs az `ANTHROPIC_API_KEY` környezeti változón keresztül kerül átadásra; ne írja bele a program szövegébe vagy egy beszélgetésbe.

Az API kész Anthropic skilleket kínál: `pptx` prezentációkhoz, `xlsx` táblázatokhoz, `docx` Word-dokumentumokhoz és `pdf` PDF-ekhez. Ezeket a `type: "anthropic"` megadásával lehet csatlakoztatni. Ez az útmutató kész skillt használ, egyéni skill feltöltése nélkül.

Az [hivatalos gyorsútmutató](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/quickstart.md), amelyet az anyag összeállításakor nyitottak meg, a `claude-opus-5-5` és a `code_execution_20260521` párost használja. Az alábbi példa is ezt a párost alkalmazza. A példát ellenőriztük a dokumentáció alapján; nem egy fizetős API-hívásról szóló beszámoló.

## Milyen béta fejlécekre van szükség

A példa a gyorsútmutató jelenlegi HTTP-szerződését követi: a fejlécek `x-api-key`, `anthropic-version: 2023-06-01` és `content-type: application/json`; `anthropic-beta` fejlécet nem küld. Ne kombináljon különböző dokumentációs generációkból származó modellt, hívási módszert és válaszformátumot.

A [Files API dokumentációja](https://platform.claude.com/docs/en/build-with-claude/files.md) azt is kimondja, hogy az API már nem béta. A régi `files-api-2025-04-14` fejléc megtartja a régi válaszformátumokat; a fejléc eltávolításával a jelenlegi formátumokra vált. Ezért nem lehet egyszerűen összekombinálni egy régi, `client.beta.files`-t használó példát egy újjal.

Itt nem egy meglévő szolgáltatást állítunk át a régi béta-szerződésről. Ha már van ilyen szolgáltatása, először ellenőrizze a fejléceket és a válaszformátumokat. Az SDK-metódus nevében szereplő `beta` önmagában nem elegendő: a Files API dokumentációja külön ismerteti, hogyan viselkednek a különböző SDK-verziók.





## Prezentáció létrehozása és a fájl letöltése

A példa feladatot küld egy öt diából álló, megújuló energiáról szóló prezentáció létrehozására, a teljes választ a `skill-response.json` fájlba menti, majd kinyeri a létrehozott fájlok azonosítóit. Nem a modell válaszából veszi a mentési útvonalat: a fájlokat egy új, `skill-output` nevű helyi mappába menti. Ha a mappa már létezik, a program leáll, hogy ne írja felül az előző eredményt. A mappa az API-hívás előtt jön létre, ezért sikertelen hívás után is megmarad. Újabb lépés előtt vizsgálja meg és őrizze meg az adott próbálkozást; ne törölje pusztán azért, hogy az ismételt futtatás továbbjusson.

```python
import json
import os
from pathlib import Path
from urllib.error import HTTPError
from urllib.request import Request, urlopen

API = "https://api.anthropic.com/v1"
KEY = os.environ["ANTHROPIC_API_KEY"]
HEADERS = {
    "x-api-key": KEY,
    "anthropic-version": "2023-06-01",
    "content-type": "application/json",
}

def request(path, payload=None, binary=False):
    data = None if payload is None else json.dumps(payload).encode("utf-8")
    req = Request(API + path, data=data, headers=HEADERS)
    try:
        with urlopen(req, timeout=600) as result:
            body = result.read()
    except HTTPError as error:
        try:
            details = json.loads(error.read().decode("utf-8"))
        except (ValueError, UnicodeError):
            details = {}
        info = details.get("error", {})
        request_id = error.headers.get("request-id") or details.get("request_id")
        diagnostic = {
            "http_status": error.code,
            "request_id": request_id,
            "error_type": info.get("type"),
            "message": str(info.get("message", "No JSON error message")).replace(KEY, "[REDACTED]")[:1000],
        }
        (out / "skill-error.json").write_text(
            json.dumps(diagnostic, ensure_ascii=False, indent=2), encoding="utf-8"
        )
        raise RuntimeError(
            f"Claude API HTTP {error.code}; request_id={request_id}; inspect skill-error.json"
        ) from None
    return body if binary else json.loads(body)

out = Path("skill-output")
out.mkdir(exist_ok=False)
response = request("/messages", {
    "model": "claude-opus-5-5",
    "max_tokens": 16000,
    "container": {
        "skills": [{"type": "anthropic", "skill_id": "pptx", "version": "latest"}]
    },
    "messages": [{
        "role": "user",
        "content": "Készítsen egy 5 diás prezentációt a megújuló energiáról az általam előnyben részesített nyelven.",
    }],
    "tools": [{"type": "code_execution_20260521", "name": "code_execution"}],
})
(out / "skill-response.json").write_text(
    json.dumps(response, ensure_ascii=False, indent=2), encoding="utf-8"
)
print("stop_reason:", response.get("stop_reason"))

file_ids = []
for block in response["content"]:
    if block["type"] == "bash_code_execution_tool_result":
        result = block["content"]
        if result["type"] == "bash_code_execution_result":
            for item in result["content"]:
                file_id = item.get("file_id")
                if file_id and file_id not in file_ids:
                    file_ids.append(file_id)
if not file_ids:
    raise RuntimeError("No generated file_id; inspect skill-response.json")

for index, file_id in enumerate(file_ids, start=1):
    from urllib.parse import quote
    file_path = "/files/" + quote(file_id, safe="")
    metadata = request(file_path)
    if metadata.get("downloadable") is not True:
        raise RuntimeError("This file cannot be downloaded through Files API")
    target = out / f"result-{index}.pptx"
    target.write_bytes(request(file_path + "/content", binary=True))
    print("Saved:", target)
```

A `result-1.pptx` és az utána következő nevek ehhez a prezentációs feladathoz lettek kiválasztva. A fájlkiterjesztés nem bizonyítja, hogy mi van a fájlban: nyissa meg a letöltött dokumentumot, és ellenőrizze a formátumát, a diák számát és a szöveget. Ne tekintse sikeres eredménynek önmagában a HTTP 200-at vagy egy `file_id` jelenlétét.

A program kiírja a `stop_reason` értékét, vagyis hogy miért állt le a válasz, és ellenőrzés céljából elmenti a teljes választ. Nem folytatja a beszélgetést, és nem ismétli meg automatikusan a fizetős kérést. A letöltött fájl megléte nem jelenti azt, hogy a teljes feladat elkészült: mielőtt eldöntené, szükség van-e újabb kérésre, ellenőrizze az elmentett választ és magát a dokumentumot is.

Sikertelen próbálkozásnál vizsgálja meg a `skill-error.json` fájlt, ha létezik. Ez a HTTP-státuszt, a szolgáltatótól kapott kérésazonosítót és egy korlátozott hosszúságú hibaüzenetet rögzít, amelyből a beállított API-kulcs értéke ki van takarva. Megosztás előtt ellenőrizze, nincs-e benne más személyes adat. A hitelesítési, jogosultsági/modell-, számlázási korlát- és kérésformátum-hibákat vesse össze a [hivatalos hibareferenciával](https://platform.claude.com/docs/en/api/errors); nem minden hiba indokol újabb fizetős generálást.

Ha a `skill-response.json` már tartalmaz létrehozott `file_id` értékeket, és csak a letöltés hibázott, őrizze meg a választ, és ugyanazzal az engedélyezett munkaterület-hozzáféréssel vizsgálja a fájlmetaadatok/letöltés lépését. Egy meglévő kimenet letöltéséért ne futtassa újra a generáló blokkot. Ha a kérés eredménye ismeretlen, őrizze meg a kérésazonosítót, és tisztázza az állapotát, mielőtt új generálást küld. Csak ha már eldöntötte, hogy új generálás szükséges, módosítsa a helyi kimeneti sort egy még nem használt útvonalra, például `out = Path("skill-output-attempt-2")`, és tartsa meg az `exist_ok=False` értéket. Az új mappa a felülírást akadályozza meg; az ismételt API-díjat nem.

## Milyen fájlengedélyekre van szükség

A Files API a fájlokat egy munkaterülethez rendeli, nem az alkalmazása egyes felhasználóihoz vagy egy beszélgetéshez. A dokumentáció szerint az adott munkaterülethez hozzáférő bármely API-kulccsal elérhetők az ott feltöltött fájlok. A példa ugyanazt a kulcsot használja a letöltéshez, mint a létrehozáshoz. Soha ne fogadjon el `file_id`-t végfelhasználóktól vagy más nem megbízható forrásból. Tárolja ezeket az azonosítókat a szerveren, és saját alkalmazásában tartsa fenn a felhasználók és fájljaik közötti megfeleltetést.

A fájl metaadatait külön ellenőrizze: tartalmaznia kell a `downloadable: true` értéket. A dokumentáció lehetővé teszi a skillek vagy a kódvégrehajtási eszköz által létrehozott fájlok letöltését; az Ön által feltöltött fájloknál `downloadable: false` szerepel, és a letöltési kísérlet 400-as hibát ad vissza. A munkaterülethez való hozzáférés és egy adott fájl letöltésének lehetősége két külön követelmény.

Többfelhasználós alkalmazás esetén a Files API dokumentációja ügyfelenként külön munkaterületet javasol a fájlok elkülönítésére. Ez az ajánlás kifejezetten a fájlokra vonatkozik; ne terjessze ki minden entitásra és engedélyre anélkül, hogy ellenőrizné a vonatkozó API-t.

## Kész skillek és egyéni skillek

A kész skillek azonosítói: `pptx`, `xlsx`, `docx` és `pdf`. A [skillek listájának referenciájában](https://platform.claude.com/docs/en/api/skills/list.md) a `custom` forrás a munkaterületre korlátozottként, míg az `anthropic` megosztottként és csak olvashatóként van leírva.

Az első példában szereplő `version: "latest"` a skill legutóbb közzétett verzióját jelenti. Reprodukálható integrációnál vegye figyelembe, hogy ez a kiválasztás változhat; rögzített verzióra váltáshoz a használt skill egy létező verzióját kell kiválasztania, nem pedig egy példából kitalált azonosítót.

## Korlátok és következő lépés

A példa csak egy prezentáció kész skilllel való létrehozását és letöltését mutatja be. Egyéni skillek feltöltését, törlését és harmadik fél szolgáltatásaihoz való hozzáférést itt nem teszteltük. Ezekhez külön ellenőrizni kell a vonatkozó API-t.

Ha a feladata a Claude felületén lévő fájlokat érinti, külön útmutató szól arról, [hogyan tölthet fel fájlt Claude-ba](https://ailoot.ai/blog/hu/claude-file-upload/). Közvetlen hívásokhoz olvassa el, [hogyan számítható ki az API tokenhasználata](https://ailoot.ai/blog/hu/api-token-usage-calculation/). Terminálügynökben végzett munkához olvassa el, [hogyan válasszon Claude Code skilleket](https://ailoot.ai/blog/hu/choose-claude-code-skills/): ezeket más módon kell csatlakoztatni.

Az első ellenőrzéshez elegendő egyetlen kész `pptx` skill: vizsgálja meg a választ, töltsön le egy olyan fájlt, amelynek letöltése engedélyezett, majd nyissa meg. Az ellenőrzés után adjon hozzá egyéni skilleket, és alakítson ki hozzáférés-elkülönítést az ügyfelek között.





Ha készen áll, ismerkedjen meg az [Ailoot](https://ailoot.ai/) szolgáltatással.

## Kérdések és válaszok: Agent Skills a Claude API-ban: hogyan használjunk kész skillt Claude Code nélkül

### Miért nem elég a file_id a prezentáció késznek nyilvánításához?

Az azonosító azt jelzi, hogy egy fájl visszaérkezett, nem azt, hogy használható prezentáció. A metaadataiban ellenőrizd a downloadable: true értéket, munkaterületi hozzáféréssel töltsd le, majd megnyitva ellenőrizd a formátumát, a diák számát és a szöveget.

### Bármely, a Claude Files API-ba feltöltött fájlt letölthetem?

Nem. Az útmutató megkülönbözteti a downloadable: true jelzésű generált fájlokat és a downloadable: false jelzésű feltöltött fájlokat. A munkaterületi hozzáférés és egy konkrét fájl letöltési engedélye külön ellenőrzés; ne fogadj el tetszőleges fájlazonosítókat végfelhasználóktól.


## Ailoot · A vállalat és projektportfóliója

Az Ailoot felhalmozott működési tapasztalatra, széles ügyfélkörre, stabil szolgáltatásra és folyamatos KPI-ellenőrzésre épít.

A vállalat és projektportfóliója: ügyfelek milliói; havi értékesítés milliárdos nagyságrendben.

Az Ailoot ezt a működési tapasztalatot használja az ügyfelek termékeiben, ágenseiben, alkalmazásaiban és automatizálásaiban elérhető AI-funkciók API-hozzáféréséhez.
