Cloudflare Workers AI 프로바이더
Cloudflare Workers AI 프로바이더
workers-ai-provider 는 AI SDK에서 Cloudflare의 Workers AI 모델을 사용할 수 있게 해주는 커뮤니티 프로바이더예요.
출처: 문서
본문
설정 (Setup)
Cloudflare Workers AI 프로바이더는 workers-ai-provider 모듈에서 사용할 수 있어요. 다음과 같이 설치할 수 있어요:
그다음 Cloudflare Workers 프로젝트의 wrangler.toml 파일에 AI 바인딩을 설정하세요:
[ai]
binding = "AI"
프로바이더 인스턴스 (Provider Instance)
workersai 프로바이더 인스턴스를 만들려면 AI 바인딩을 옵션으로 전달해 createWorkersAI 함수를 사용하세요:
import { createWorkersAI } from 'workers-ai-provider';
const workersai = createWorkersAI({ binding: env.AI });
언어 모델 (Language Models)
모델 인스턴스를 만들려면 프로바이더 인스턴스를 호출하고 첫 번째 인자로 사용할 모델을 지정하세요. 두 번째 인자에 추가 설정을 전달할 수도 있어요:
import { createWorkersAI } from 'workers-ai-provider';
const workersai = createWorkersAI({ binding: env.AI });
const model = workersai('@cf/meta/llama-3.1-8b-instruct', {
// 추가 설정
safePrompt: true,
});
다음의 선택적 설정으로 커스터마이즈할 수 있어요:
-
safePrompt boolean
모든 대화 전에 안전 프롬프트를 주입할지 여부예요. 기본값은
false
예시 (Examples)
Cloudflare Workers AI 언어 모델을 generateText 또는 streamText 함수로 텍스트를 생성하는 데 사용할 수 있어요:
generateText
import { createWorkersAI } from 'workers-ai-provider';
import { generateText } from 'ai';
type Env = {
AI: Ai;
};
export default {
async fetch(_: Request, env: Env) {
const workersai = createWorkersAI({ binding: env.AI });
const result = await generateText({
model: workersai('@cf/meta/llama-2-7b-chat-int8'),
prompt: 'Write a 50-word essay about hello world.',
});
return new Response(result.text);
},
};
streamText
import { createWorkersAI } from 'workers-ai-provider';
import { createTextStreamResponse, streamText, toTextStream } from 'ai';
type Env = {
AI: Ai;
};
export default {
async fetch(_: Request, env: Env) {
const workersai = createWorkersAI({ binding: env.AI });
const result = streamText({
model: workersai('@cf/meta/llama-2-7b-chat-int8'),
prompt: 'Write a 50-word essay about hello world.',
});
return createTextStreamResponse({
stream: toTextStream({ stream: result.stream }),
headers: {
// 응답이 청크로 분할되어 스트리밍되도록
// 다음 헤더를 추가해 주세요
'Content-Type': 'text/x-unknown',
'content-encoding': 'identity',
'transfer-encoding': 'chunked',
},
});
},
};
구조화 출력 (Structured Output)
일부 Cloudflare Workers AI 언어 모델은 Output을 통한 구조화된 데이터 생성도 지원해요:
import { createWorkersAI } from 'workers-ai-provider';
import { generateText, Output } from 'ai';
import { z } from 'zod';
type Env = {
AI: Ai;
};
export default {
async fetch(_: Request, env: Env) {
const workersai = createWorkersAI({ binding: env.AI });
const result = await generateText({
model: workersai('@cf/meta/llama-3.1-8b-instruct'),
prompt: 'Generate a Lasagna recipe',
output: Output.object({
schema: z.object({
recipe: z.object({
ingredients: z.array(z.string()),
description: z.string(),
}),
}),
}),
});
return Response.json(result.output);
},
};