Gemini API를 사용하여 텍스트 생성

<ph type="x-smartling-placeholder"></ph>

Gemini API는 다음을 비롯한 다양한 유형의 입력으로 텍스트 출력을 생성할 수 있습니다. 동영상, 오디오, 텍스트, 이미지, 오디오입니다 텍스트 생성을 사용해 애플리케이션에 다음과 같은 기능을 제공합니다.

  • 독창적인 글쓰기
  • 미디어 애셋 설명 또는 해석
  • 텍스트 완성
  • 자유 형식 텍스트 요약
  • 언어 간 번역
  • 챗봇
  • 나만의 새로운 사용 사례

이 가이드에서는 generateContentstreamGenerateContent API에 액세스할 수 있습니다 텍스트 전용 및 텍스트 및 이미지 입력의 텍스트 출력에 포커스가 있습니다. 받는사람 동영상 및 오디오 파일을 사용한 멀티모달 프롬프팅에 대해 자세히 알아보려면 파일 프롬프팅 전략.

시작하기 전에: 프로젝트 및 API 키 설정

Gemini API를 호출하기 전에 프로젝트를 설정하고 확인할 수 있습니다

텍스트 전용 입력에서 텍스트 생성

Gemini API를 사용해 텍스트를 생성하는 가장 간단한 방법은 를 단일 텍스트 전용 입력으로 대체합니다.

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Write a story about a magic backpack.";

const result = await model.generateContent(prompt);
console.log(result.response.text());

이 경우 프롬프트('마법의 배낭에 관한 이야기 쓰기')는 출력 예, 시스템 안내 또는 형식 정보를 포함할 수 없습니다. 제로샷입니다 접근하는 것입니다. 일부 사용 사례의 경우 원샷 또는 퓨샷 프롬프트 사용자 기대치에 더 부합하는 출력을 생성할 수 있습니다 어떤 경우에는 kubectl 명령어도 시스템 안내를 참고하여 작업을 이해하거나 특정 가이드라인을 따라야 합니다.

텍스트 및 이미지 입력에서 텍스트 생성

Gemini API는 텍스트와 미디어 파일을 결합하는 멀티모달 입력을 지원합니다. 다음 예는 텍스트 및 이미지 입력에서 텍스트를 생성하는 방법을 보여줍니다.

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

function fileToGenerativePart(path, mimeType) {
  return {
    inlineData: {
      data: Buffer.from(fs.readFileSync(path)).toString("base64"),
      mimeType,
    },
  };
}

const prompt = "Describe how this product might be manufactured.";
// Note: The only accepted mime types are some image types, image/*.
const imagePart = fileToGenerativePart(
  `${mediaPath}/jetpack.jpg`,
  "image/jpeg",
);

const result = await model.generateContent([prompt, imagePart]);
console.log(result.response.text());

텍스트 전용 프롬프팅과 마찬가지로 멀티모달 프롬프팅에도 다양한 접근 방식이 포함될 수 있습니다. 미세 조정 등이 있습니다 이 예의 출력에 따라 프롬프트에 단계를 추가하거나 지침을 더 구체적으로 지정할 수 있습니다. 자세히 알아보려면 파일 프롬프팅 전략을 참고하세요.

텍스트 스트림 생성

기본적으로 모델은 전체 텍스트를 완료한 후 응답을 반환합니다. 살펴보겠습니다 이때 대신 스트리밍을 사용하여 부분 결과를 처리합니다.

다음 예는 streamGenerateContent 메서드를 사용하여 텍스트 전용 입력 프롬프트에서 텍스트 생성

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Write a story about a magic backpack.";

const result = await model.generateContentStream(prompt);

// Print text as it comes in.
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

대화형 채팅 빌드

Gemini API를 사용하여 사용자를 위한 대화형 채팅 환경을 빌드할 수 있습니다. API의 채팅 기능을 사용하면 여러 라운드의 질문을 수집할 수 있습니다. 이를 통해 사용자는 점진적으로 질문의 답을 찾거나 도움을 받을 수 있습니다. 여러 파트로 나뉩니다. 이 기능은 지속적인 커뮤니케이션(예: 챗봇, 대화형 강사 또는 고객 지원) 어시스턴트의 도움을 받을 수 있습니다.

다음 코드 예에서는 기본적인 채팅 구현을 보여줍니다.

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});
let result = await chat.sendMessage("I have 2 dogs in my house.");
console.log(result.response.text());
result = await chat.sendMessage("How many paws are in my house?");
console.log(result.response.text());

텍스트 생성 구성

모델로 보내는 모든 프롬프트에는 매개변수로 모델이 응답을 생성하는 방식을 제어합니다. 이때 GenerationConfig(으)로 이 매개변수를 구성합니다. 매개변수를 구성하지 않는 경우 모델은 기본 옵션을 사용하며 이는 모델에 따라 다를 수 있습니다.

다음 예에서는 사용 가능한 여러 옵션을 구성하는 방법을 보여줍니다.

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
  generationConfig: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

const result = await model.generateContent(
  "Tell me a story about a magic backpack.",
);
console.log(result.response.text());

candidateCount는 반환할 생성된 응답 수를 지정합니다. 현재 이 값은 1로만 설정할 수 있습니다. 설정하지 않으면 기본값은 1입니다.

stopSequences는 출력 생성을 중지합니다 지정하면 처음 표시되는 순간 API가 중지됩니다. 정지_시퀀스의 값입니다. 중지 시퀀스는 응답에 포함되지 않습니다.

maxOutputTokens는 후보에 포함할 최대 토큰 수를 설정합니다.

temperature는 출력의 무작위성을 제어합니다. 더 높은 값을 사용하여 보다 결정론적인 응답을 위해서는 값을 낮게 설정하세요. 값 범위는 [0.0, 2.0]입니다.

generateContent에 대한 개별 호출을 구성할 수도 있습니다.

const result = await model.generateContent({
  contents: [
    {
      role: 'user',
      parts: [
        {
          text: prompt,
        }
      ],
    }
  ],
  generationConfig: {
    maxOutputTokens: 1000,
    temperature: 0.1,
  },
});
console.log(result.response.text());

개별 호출에 설정된 값은 모델 생성자의 값을 재정의합니다.

다음 단계

이 가이드에서는 generateContentstreamGenerateContent 을 사용하여 텍스트 전용 및 텍스트 및 이미지 입력에서 텍스트 출력을 생성합니다. 자세히 알아보기 Gemini API를 사용한 텍스트 생성에 관한 자세한 내용은 다음 리소스를 참고하세요.

  • 파일 프롬프팅 전략: Gemini API는 텍스트, 이미지, 오디오, 동영상 데이터의 프롬프팅을 지원하며 멀티모달 프롬프팅이라고 합니다
  • 시스템 안내: 시스템 지시사항을 사용하면 특정 작업 수행을 기준으로 모델의 동작을 사용 사례를 파악할 수 있습니다
  • 안전 안내: 생성형 AI가 존재함 모델이 부정확한 출력, 불쾌감을 주는 콘텐츠 후처리와 사람의 평가는 이러한 출력으로 인한 피해 위험을 최소화해야 합니다.