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);
  },
};

더 알아보기 (Learn more)

전체 사이트맵