From 174fe2ab336135012a732402342d4aca697087e5 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Thu, 14 Nov 2024 15:45:15 -0800 Subject: [PATCH] remove an experiemntal 'gemini' call from the backend --- pkgs/dart_services/.gitignore | 3 ++ pkgs/dart_services/lib/src/common_server.dart | 49 ------------------- .../lib/src/common_server.g.dart | 5 -- pkgs/dart_services/pubspec.yaml | 1 - pkgs/dartpad_shared/lib/model.dart | 17 ------- pkgs/dartpad_shared/lib/model.g.dart | 10 ---- pkgs/dartpad_shared/lib/services.dart | 6 --- pkgs/dartpad_ui/lib/model.dart | 4 -- 8 files changed, 3 insertions(+), 92 deletions(-) diff --git a/pkgs/dart_services/.gitignore b/pkgs/dart_services/.gitignore index 2e678174e..6555e56a6 100644 --- a/pkgs/dart_services/.gitignore +++ b/pkgs/dart_services/.gitignore @@ -31,3 +31,6 @@ config.properties .vscode/ bin/server + +# Any local environment variable configuration +.env diff --git a/pkgs/dart_services/lib/src/common_server.dart b/pkgs/dart_services/lib/src/common_server.dart index 79a27a308..963ab5373 100644 --- a/pkgs/dart_services/lib/src/common_server.dart +++ b/pkgs/dart_services/lib/src/common_server.dart @@ -7,7 +7,6 @@ import 'dart:convert'; import 'dart:io'; import 'package:dartpad_shared/model.dart' as api; -import 'package:google_generative_ai/google_generative_ai.dart' as google_ai; import 'package:http/http.dart' as http; import 'package:logging/logging.dart'; import 'package:shelf/shelf.dart'; @@ -232,50 +231,6 @@ class CommonServerApi { } } - static final String? geminiApiKey = Platform.environment['GEMINI_API_KEY']; - http.Client? geminiHttpClient; - - @Route.post('$apiPrefix/_gemini') - Future gemini(Request request, String apiVersion) async { - if (apiVersion != api3) return unhandledVersion(apiVersion); - - // Read the api key from env variables (populated on the server). - final apiKey = geminiApiKey; - if (apiKey == null) { - return Response.internalServerError( - body: 'gemini key not configured on server'); - } - - // Only allow the call from dartpad.dev. - final origin = request.origin; - if (origin != 'https://dartpad.dev') { - return Response.badRequest( - body: 'Gemini calls only allowed from the DartPad front-end'); - } - - final sourceRequest = - api.SourceRequest.fromJson(await request.readAsJson()); - - geminiHttpClient ??= http.Client(); - - final model = google_ai.GenerativeModel( - model: 'models/gemini-1.5-flash-latest', - apiKey: apiKey, - httpClient: geminiHttpClient, - ); - - final result = await serialize(() async { - // call gemini - final result = await model.generateContent([ - google_ai.Content.text(sourceRequest.source), - ]); - - return api.GeminiResponse(response: result.text!); - }); - - return ok(result.toJson()); - } - Response ok(Map json) { return Response.ok( _jsonEncoder.convert(json), @@ -403,7 +358,3 @@ String _formatMessage( return message; } - -extension on Request { - String? get origin => headers['origin']; -} diff --git a/pkgs/dart_services/lib/src/common_server.g.dart b/pkgs/dart_services/lib/src/common_server.g.dart index 71da0773f..f01227bf0 100644 --- a/pkgs/dart_services/lib/src/common_server.g.dart +++ b/pkgs/dart_services/lib/src/common_server.g.dart @@ -53,10 +53,5 @@ Router _$CommonServerApiRouter(CommonServerApi service) { r'/api//openInIDX', service.openInIdx, ); - router.add( - 'POST', - r'/api//_gemini', - service.gemini, - ); return router; } diff --git a/pkgs/dart_services/pubspec.yaml b/pkgs/dart_services/pubspec.yaml index e6b598694..f3b13659f 100644 --- a/pkgs/dart_services/pubspec.yaml +++ b/pkgs/dart_services/pubspec.yaml @@ -12,7 +12,6 @@ dependencies: bazel_worker: ^1.1.1 dartpad_shared: ^0.0.0 encrypt: ^5.0.3 - google_generative_ai: ^0.4.6 http: ^1.2.1 json_annotation: ^4.9.0 logging: ^1.2.0 diff --git a/pkgs/dartpad_shared/lib/model.dart b/pkgs/dartpad_shared/lib/model.dart index 252cd6b77..d6ab5fc62 100644 --- a/pkgs/dartpad_shared/lib/model.dart +++ b/pkgs/dartpad_shared/lib/model.dart @@ -375,23 +375,6 @@ class VersionResponse { Map toJson() => _$VersionResponseToJson(this); } -@JsonSerializable() -class GeminiResponse { - final String response; - - GeminiResponse({ - required this.response, - }); - - factory GeminiResponse.fromJson(Map json) => - _$GeminiResponseFromJson(json); - - Map toJson() => _$GeminiResponseToJson(this); - - @override - String toString() => 'GeminiResponse[response=$response]'; -} - @JsonSerializable() class OpenInIdxRequest { final String code; diff --git a/pkgs/dartpad_shared/lib/model.g.dart b/pkgs/dartpad_shared/lib/model.g.dart index 507e7ac27..3be14016f 100644 --- a/pkgs/dartpad_shared/lib/model.g.dart +++ b/pkgs/dartpad_shared/lib/model.g.dart @@ -296,16 +296,6 @@ Map _$VersionResponseToJson(VersionResponse instance) => 'packages': instance.packages, }; -GeminiResponse _$GeminiResponseFromJson(Map json) => - GeminiResponse( - response: json['response'] as String, - ); - -Map _$GeminiResponseToJson(GeminiResponse instance) => - { - 'response': instance.response, - }; - OpenInIdxRequest _$OpenInIdxRequestFromJson(Map json) => OpenInIdxRequest( code: json['code'] as String, diff --git a/pkgs/dartpad_shared/lib/services.dart b/pkgs/dartpad_shared/lib/services.dart index 73047311d..091c38279 100644 --- a/pkgs/dartpad_shared/lib/services.dart +++ b/pkgs/dartpad_shared/lib/services.dart @@ -5,7 +5,6 @@ import 'dart:convert'; import 'package:http/http.dart'; -import 'package:meta/meta.dart'; import 'model.dart'; @@ -44,11 +43,6 @@ class ServicesClient { Future openInIdx(OpenInIdxRequest request) => _requestPost('openInIDX', request.toJson(), OpenInIdxResponse.fromJson); - /// Note: this API is experimental and could change or be removed at any time. - @experimental - Future gemini(SourceRequest request) => - _requestPost('_gemini', request.toJson(), GeminiResponse.fromJson); - void dispose() => client.close(); Future _requestGet( diff --git a/pkgs/dartpad_ui/lib/model.dart b/pkgs/dartpad_ui/lib/model.dart index eb73ae351..02875b6cf 100644 --- a/pkgs/dartpad_ui/lib/model.dart +++ b/pkgs/dartpad_ui/lib/model.dart @@ -339,10 +339,6 @@ class AppServices { return await services.document(request); } - Future gemini(SourceRequest request) async { - return await services.gemini(request); - } - Future compile(CompileRequest request) async { try { appModel.compilingBusy.value = true;