← Cloudflare Workers / workers / tutorials
Vytvořte doladěný model OpenAI pomocí R2
V tomto tutoriálu použijete OpenAI ↗ API a Cloudflare R2 pro vytvoření doladěný model ↗.
Tato funkce v API OpenAI umožňuje odvodit vlastní model z různých velkých jazykových modelů OpenAI na základě sady vlastních instrukcí a ukázkových odpovědí. Tyto instrukce a ukázkové odpovědi se zapisují do dokumentu označovaného jako fine-tune dokument. Tento dokument se uloží do R2 a dynamicky poskytne API OpenAI při vytváření nového fine-tune modelu.
Chcete-li tuto funkci použít, provedete následující kroky:
- Nahrajte dokument pro fine-tuning do R2.
- Přečtěte soubor R2 a nahrajte ho do OpenAI.
- Vytvořte nový doladěný model na základě dokumentu.
Chcete-li si prohlédnout dokončený kód této aplikace, přečtěte si Repozitář GitHub pro tento tutoriál ↗.
Předpoklady
Než začnete, ujistěte se, že máte:
- Účet Cloudflare s přístupem k R2. Pokud účet Cloudflare nemáte, zaregistrovat se ↗ než budete pokračovat. Poté si zakupte R2 z vašeho Cloudflare dashboardu.
- API klíč OpenAI.
- Fine-tune dokument strukturovaný jako JSON Lines ↗. Použijte ukázkový dokument ↗ ve zdrojovém kódu.
1. Vytvořte aplikaci Worker
Nejprve použijte c3 CLI k vytvoření nového projektu Cloudflare Workers.
npm create cloudflare@latest -- finetune-chatgpt-modelPři nastavení vyberte následující možnosti:
- Pro S čím byste chtěli začít?, vyberte
Hello World example. - Pro Jakou šablonu chcete použít?, vyberte
Worker only. - Pro Jaký jazyk chcete použít?, vyberte
TypeScript. - Pro Chcete používat git pro správu verzí?, vyberte
Yes. - Pro Chcete nasadit svou aplikaci?, vyberte
No(před nasazením provedeme ještě několik změn).
Výše uvedené volby vytvoří projekt TypeScript "Hello World".
Přejděte do nově vytvořeného adresáře:
cd finetune-chatgpt-model2. Nahrajte dokument pro fine-tuning do R2
Dále nahrajte dokument pro fine-tuning do R2. R2 je úložiště typu klíč-hodnota, které umožňuje ukládat a načítat soubory přímo z vaší aplikace Workers. K tomu použijete Wrangler pro vytvoření nového R2 bucketu.
Chcete-li vytvořit nový bucket R2, použijte wrangler r2 bucket create příkaz. Vezměte na vědomí, že jste přihlášeni pomocí svého účtu Cloudflare. Pokud nejste přihlášeni přes Wrangler, použijte wrangler login příkazu.
npx wrangler r2 bucket create <BUCKET_NAME>Nahraďte <BUCKET_NAME> požadovaným názvem bucketu. Názvy bucketů musí být psány malými písmeny a mohou obsahovat pouze pomlčky.
Dále nahrajte soubor pomocí wrangler r2 object put příkazu.
npx wrangler r2 object put <PATH> -f <FILE_NAME><PATH> je kombinace bucketu a cesty k souboru, který chcete nahrát, například fine-tune-ai/finetune.jsonl, kde fine-tune-ai je název bucketu. Nahraďte <FILE_NAME> místním názvem souboru vašeho dokumentu pro doladění.
3. Připojte svůj bucket k Workeru
Binding je způsob, jakým váš Worker komunikuje s externími zdroji, například s R2 bucketem.
Chcete-li k Workeru připojit bucket R2, přidejte do souboru Wrangler následující. Vlastnost binding upravte na platný identifikátor proměnné JavaScript. Nahraďte <YOUR_BUCKET_NAME> názvem bucketu, který jste vytvořili v krok 2:
{
"r2_buckets": [
{
"binding": "MY_BUCKET", // <~ valid JavaScript variable name
"bucket_name": "<YOUR_BUCKET_NAME>"
}
]
}[[r2_buckets]]
binding = "MY_BUCKET"
bucket_name = "<YOUR_BUCKET_NAME>"4. Inicializujte svou aplikaci Worker
Použijete Hono ↗, odlehčený framework pro vytváření aplikací Cloudflare Workers. Hono poskytuje rozhraní pro definování tras a middleware funkcí. V adresáři svého projektu spusťte následující příkaz pro instalaci Hono:
npm i honoTaké musíte nainstalovat OpenAI Node API library ↗. Tato knihovna poskytuje pohodlný přístup k OpenAI REST API v projektu Node.js. Knihovnu nainstalujete spuštěním následujícího příkazu:
npm i openaiDále otevřete src/index.ts soubor a nahraďte výchozí kód níže uvedeným kódem. Nahraďte <MY_BUCKET> názvem binding, který jste nastavili v souboru Wrangler.
import { Context, Hono } from "hono";
import OpenAI from "openai";
type Bindings = {
<MY_BUCKET>: R2Bucket
OPENAI_API_KEY: string
}
type Variables = {
openai: OpenAI
}
const app = new Hono<{ Bindings: Bindings, Variables: Variables }>()
app.use('*', async (c, next) => {
const openai = new OpenAI({
apiKey: c.env.OPENAI_API_KEY,
})
c.set("openai", openai)
await next()
})
app.onError((err, c) => {
return c.text(err.message, 500)
})
export default app;Ve výše uvedeném kódu nejprve importujete potřebné balíčky a definujete typy. Poté inicializujete app jako novou instanci Hono. Pomocí use middleware funkce přidáte klienta OpenAI API do kontextu všech tras. Tato middleware funkce umožňuje přistupovat ke klientovi z libovolného route handleru. onError() definuje obslužnou rutinu chyb, která veškeré chyby vrací jako odpověď ve formátu JSON.
5. Načtěte soubory R2 a nahrajte je do OpenAI
V této části definujete trasu a funkci odpovědnou za zpracování nahrávání souborů.
V createFile, váš Worker načte soubor z R2 a převede ho na File objekt. Váš Worker poté pomocí OpenAI API nahraje soubor a vrátí odpověď.
GET /files trasa naslouchá GET požadavky s parametrem dotazu file, představující název souboru nahraného fine-tune dokumentu v R2. Funkce používá createFile funkci pro správu procesu nahrávání souborů.
Nahraďte <MY_BUCKET> názvem binding, který jste nastavili v souboru Wrangler.
// New import added at beginning of file
import { toFile } from 'openai/uploads'
const createFile = async (c: Context, r2Object: R2ObjectBody) => {
const openai: OpenAI = c.get("openai")
const blob = await r2Object.blob()
const file = await toFile(blob, r2Object.key)
const uploadedFile = await openai.files.create({
file,
purpose: "fine-tune",
})
return uploadedFile
}
app.get('/files', async c => {
const fileQueryParam = c.req.query("file")
if (!fileQueryParam) return c.text("Missing file query param", 400)
const file = await c.env.<MY_BUCKET>.get(fileQueryParam)
if (!file) return c.text("Couldn't find file", 400)
const uploadedFile = await createFile(c, file)
return c.json(uploadedFile)
})6. Vytvořte doladěné modely
Tato sekce zahrnuje GET /models trasu a createModel funkci. Funkce createModel se stará o zadání podrobností a spuštění procesu fine-tuningu u OpenAI. Route zpracovává příchozí požadavky na vytvoření nového fine-tuned modelu.
const createModel = async (c: Context, fileId: string) => {
const openai: OpenAI = c.get("openai");
const body = {
training_file: fileId,
model: "gpt-4o-mini",
};
return openai.fineTuning.jobs.create(body);
};
app.get("/models", async (c) => {
const fileId = c.req.query("file_id");
if (!fileId) return c.text("Missing file ID query param", 400);
const model = await createModel(c, fileId);
return c.json(model);
});7. Vypište všechny úlohy dolaďování
Tato sekce popisuje GET /jobs trasu a odpovídající getJobs funkci. Funkce komunikuje s API OpenAI a načítá seznam všech úloh doladění (fine-tuning). Trasa poskytuje rozhraní pro získání těchto informací.
const getJobs = async (c: Context) => {
const openai: OpenAI = c.get("openai");
const resp = await openai.fineTuning.jobs.list();
return resp.data;
};
app.get("/jobs", async (c) => {
const jobs = await getJobs(c);
return c.json(jobs);
});8. Nasaďte svou aplikaci
Jakmile vytvoříte aplikaci Worker a přidáte potřebné funkce, aplikaci nasaďte.
Než nasadíte, musíte nastavit OPENAI_API_KEY secret pro vaši aplikaci. Provedete to spuštěním wrangler secret put příkaz:
npx wrangler secret put OPENAI_API_KEYChcete-li nasadit aplikaci Worker do globální sítě Cloudflare:
- Ujistěte se, že jste v adresáři svého projektu Worker, a poté spusťte
wrangler deploypříkaz:
npx wrangler deploy-
Wrangler zabalí a nahraje váš kód.
-
Po nasazení aplikace vám Wrangler poskytne adresu URL vašeho Workeru.
9. Zobrazte stav úlohy dolaďování a použijte model
Chcete-li aplikaci používat, vytvořte novou úlohu doladění (fine-tune) odesláním požadavku na /files s file parametr dotazu odpovídající názvu souboru, který jste dříve nahráli:
curl https://your-worker-url.com/files?file=finetune.jsonlPo nahrání souboru odešlete další požadavek na /models, přičemž předáte file_id parametr dotazu. Ten by měl odpovídat id vrácená jako JSON z /files trasa:
curl https://your-worker-url.com/models?file_id=file-abc123Nakonec přejděte na /jobs pro zobrazení stavu vašich fine-tune úloh v OpenAI. Jakmile je úloha fine-tune dokončena, můžete zobrazit fine_tuned_model hodnota, která signalizuje, že byl vytvořen fine-tuned model.
Navštivte OpenAI Playground ↗ abyste mohli použít svůj fine-tune model. Vyberte svůj fine-tune model z rozbalovací nabídky vlevo nahoře v rozhraní.
Použijte ho v jakýchkoli API požadavcích na chat completions endpointy OpenAI. Například v níže uvedeném ukázkovém kódu:
openai.chat.completions.create({
messages: [{ role: "system", content: "You are a helpful assistant." }],
model: "ft:gpt-4o-mini:my-org:custom_suffix:id",
});Další kroky
Chcete-li se dozvědět více o tom, co lze vytvářet s Workers, přečtěte si Návody.
Pokud máte jakékoli dotazy, potřebujete pomoc nebo se chcete podělit o svůj projekt, připojte se ke komunitě Cloudflare Developer na Discord ↗ pro spojení s dalšími vývojáři a týmem Cloudflare.