현재 OpenAI에서 공식 Dart/Flutter 라이브러리는 제공하고 있지 않습니다. 그래서 OpenAI API 문서를 보고 HTTP 요청을 직접 구현하거나, pub.dev에서 오픈 소스를 찾아서 사용해야 합니다.
dart_openai
dart_openai
는 오픈 소스이며 가장 인기있는 OpenAI 클라이언트 패키지입니다. 이 라이브러리를 사용하면 OpenAI의 최신 AI 모델을 Dart/Flutter 애플리케이션에 쉽게 구현할 수 있습니다.
이 라이브러리는 GPT-3 언어 모델과 DALL-E 이미지 생성 등 OpenAI의 다양한 API를 쉽게 요청할 수 있는 간단하고 직관적인 함수를 제공합니다.
이 패키지는 가볍고 사용하기 쉽도록 설계되었기 때문에 HTTP 요청 처리로 인한 복잡성과 오류를 걱정할 필요 없습니다. 우리는 애플리케이션 구축에만 집중하면 됩니다.
dart_openai 설치하기
현재 dart_openai
의 최신 버전은 1.9.1입니다. dart_openai
라이브러리를 설치합니다.
flutter pub add dart_openai
그리고 OpenAI API는 인증을 위해 API_KEY
를 사용합니다. 그리고 이 비밀키는 런타임시에 파일에서 로드하는 것이 좋습니다
envied
envied 라이브러리는 빌드러너(build_runner)를 사용하여 .env 파일의 값이 포함된 부분 파일을 생성합니다. 그럼 애플리케이션에서는 Env 클래스를 사용하여 환경 변수에 접근할 수 있습니다.
envied 설치하기
flutter pub add envied
flutter pub add --dev envied_generator
flutter pub add --dev build_runner
envied 사용방법
프로젝트의 루트에 .env 파일을 추가합니다.
// .env
OPEN_AI_API_KEY=<REPLACE WITH YOUR API KEY>
환경 변수를 수집할 lib/env/env.dart
클래스를 생성합니다. 클래스에 Envied에 대한 어노테이션을 추가하고 .env 파일에서 가져올 환경 변수에 대한 EnviedField를 추가합니다.
// lib/env/env.dart
import 'package:envied/envied.dart';
part 'env.g.dart';
@Envied(path: ".env")
abstract class Env {
@EnviedField(varName: 'OPEN_AI_API_KEY') // the .env variable.
static const apiKey = _Env.apiKey;
}
[!important] 중요
.env 파일과 env.g.dart 파일을 모두 .gitignore 파일에 추가해야 합니다. 그렇지 않으면 환경 변수에 포함된 비밀키가 노출될 수 있습니다.
그런 다음 빌드러너를 실행합니다:
flutter pub run build_runner build
그리고 Env에서 apiKey 값을 읽어와 OpenAI 를 초기화합니다.
// lib/main.dart
void main() {
OpenAI.apiKey = Env.apiKey; // Initializes the package with that API key
// ..
}
채팅(ChatGPT) 사용하기
Chat Completion 만들기
각 메시지는 OpenAIChatCompletionChoiceMessageModel
객체로 생성해야 합니다.
OpenAIChatCompletionModel chatCompletion = await OpenAI.instance.chat.create(
model: "gpt-3.5-turbo",
messages: [
OpenAIChatCompletionChoiceMessageModel(
content: "hello, what is Flutter and Dart ?",
role: OpenAIChatMessageRole.user,
),
],
);
Chat Completion 스트림 만들기
OpenAI.instance.chat.create()
를 호출하는 것 대신에 OpenAI.instance.chat.createStream
메서드를 사용하면 결과를 Stream
로 얻을 수 있습니다.
OpenAIStreamChatCompletionModel chatStream = OpenAI.instance.chat.createStream(
model: "gpt-3.5-turbo",
messages: [
OpenAIChatCompletionChoiceMessageModel(
content: "hello",
role: OpenAIChatMessageRole.user,
)
],
);
chatStream.listen((chatStreamEvent) {
print(chatStreamEvent); // ...
})
or
'개발 > 플러터(Flutter)' 카테고리의 다른 글
Riverpod와 Hive를 사용하여 Flutter 앱 테마 관리하기 (0) | 2023.10.05 |
---|---|
(Flutter) Riverpod의 Provider 종류 (0) | 2023.03.30 |
(Flutter) Riverpod 상태 불변성(Immutability) (0) | 2023.03.30 |
(Flutter) Riverpod의 Provider Lifecycles (0) | 2023.03.29 |
(Flutter) Riverpod의 ProviderObserver (0) | 2023.03.29 |