workouttest_util/test/openai_test.dart
Tibor Bossanyi 391551f57b v1.0.25
2023-04-03 16:41:22 +02:00

61 lines
3.4 KiB
Dart

import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:workouttest_util/model/cache.dart';
import 'package:workouttest_util/model/openai.dart';
import 'package:workouttest_util/model/openai_chat.dart';
import 'package:workouttest_util/model/openai_chat_message.dart';
import 'package:workouttest_util/service/openai_service.dart';
import 'dart:convert';
void main() {
setUp(() async {
await dotenv.load(fileName: "assets/.env");
Cache().setDietTestBaseUrl();
});
test('openai response succesful', () async {
var api = OpenAIApi();
String response = await api.getOpenAICompletion("Who wrote the song 'yellow submarine'?");
print(response);
expect(response, matches(RegExp(r'Beatles')));
});
test('openai with model response succesful', () async {
var api = OpenAIApi();
String question =
"Készíts egy heti egészséges és változatos étrendet egy új felhasználónak az alábbi adatok alapján: férfi, 51 éves. Célja: Le szeretnék fogyni, heti mozgás: Hetente 3-4 alkalom, BMI: 24.784257517393772, BMR: 1723.75. A neve Tibi. Az egyes étkezések különbözőek legyenek, és add meg hozzájuk a mennyiséget és a kalóriatartalmat is. Vedd figyelembe, hogy a napi összes kalóriaérték 200-400 kCal-val kevesebb legyen, mint 1723.75 kCal";
var openai = OpenAI(question, "text-davinci-003", 0.5);
String response = await api.getOpenAICompletionWithModel(openai);
print(response);
expect(response, matches(RegExp(r'Tibi')));
});
test('openai chat completion response succesful', () async {
var api = OpenAIApi();
String content =
"Te a Diet4You applikáció asszisztense vagy. Add meg ennek az ételnek a kalória és tápanyagadatait: 'Hortobágyi palacsinta'. A válasz ez az objektum JSON alakított formája legyen: Meal [mealName: string, cal: double, ch: double, fat: double, protein: double, sugar: double, portion: double, unit: string]. A portion paraméter azt tartalmazza, hogy ebből az ételből hány gramm v. ml az átlagos adag. A unit paraméter a 'portion' mennyiségi egyésge";
OpenAIChatMessage message = OpenAIChatMessage(ChatRole.user, content);
String json = jsonEncode([message]);
var openai = OpenAIChat(json);
String response = await api.getOpenAIChatCompletion(openai);
print(response);
expect(response, matches(RegExp(r'mealName')));
});
test('openai chat completion response succesful 2', () async {
var api = OpenAIApi();
String content =
"Te a Diet4You applikáció asszisztense vagy. Add meg ennek az ételnek a kalória és tápanyagadatait: 'Whopper'. A válasz ez az objektum JSON alakított formája legyen: Meal [mealName: string, calMin: double,calMax: double, chMin: double,chMax: double, fatMin: double,fatMax: double, proteinMin: double,proteinMax: double, sugar: double, portion: double, unit: string]. A portion paraméter azt tartalmazza, hogy ebből az ételből hány gramm v. ml az átlagos adag. A unit paraméter a 'portion' mennyiségi egysége";
OpenAIChatMessage message = OpenAIChatMessage(ChatRole.user, content);
String json = jsonEncode([message]);
var openai = OpenAIChat(json, modelName: OpenAIApi().modelGpt4, temperature: 0.0);
String response = await api.getOpenAIChatCompletion(openai);
print(response);
expect(response, matches(RegExp(r'mealName')));
});
}