From eade013138d1555027615aea05fe051971e3ec13 Mon Sep 17 00:00:00 2001 From: Fred Liang Date: Sun, 31 Dec 2023 18:02:04 +0800 Subject: [PATCH 1/3] fix: update google url description (#3719) * feat: update new logo & cover image * fix: update google url description --- .env.template | 4 ++-- app/constant.ts | 3 +-- app/locales/cn.ts | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.env.template b/.env.template index 89bab2cb1..166cc4ef4 100644 --- a/.env.template +++ b/.env.template @@ -14,8 +14,8 @@ PROXY_URL=http://localhost:7890 GOOGLE_API_KEY= # (optional) -# Default: https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent -# Googel Gemini Pro API url, set if you want to customize Google Gemini Pro API url. +# Default: https://generativelanguage.googleapis.com/ +# Googel Gemini Pro API url without pathname, set if you want to customize Google Gemini Pro API url. GOOGLE_URL= # Override openai api request base url. (optional) diff --git a/app/constant.ts b/app/constant.ts index 7668381c1..53d47540a 100644 --- a/app/constant.ts +++ b/app/constant.ts @@ -87,8 +87,7 @@ export const Azure = { }; export const Google = { - ExampleEndpoint: - "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent", + ExampleEndpoint: "https://generativelanguage.googleapis.com/", ChatPath: "v1beta/models/gemini-pro:generateContent", // /api/openai/v1/chat/completions diff --git a/app/locales/cn.ts b/app/locales/cn.ts index 8746047fd..4a92b6383 100644 --- a/app/locales/cn.ts +++ b/app/locales/cn.ts @@ -321,7 +321,7 @@ const cn = { Endpoint: { Title: "接口地址", - SubTitle: "样例:", + SubTitle: "不包含请求路径,样例:", }, ApiVerion: { From a80502f7db80a1cfa0814b213b9444be24e3ac7c Mon Sep 17 00:00:00 2001 From: Fred Liang Date: Sun, 31 Dec 2023 19:08:16 +0800 Subject: [PATCH 2/3] fix: fix gemini pro streaming api duplicated issue (#3721) * fix: streaming duplicated issue * chore: remove debug logs * chore: add types defination --- app/client/platforms/google.ts | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/app/client/platforms/google.ts b/app/client/platforms/google.ts index 6eaa3c971..1dfcb660d 100644 --- a/app/client/platforms/google.ts +++ b/app/client/platforms/google.ts @@ -9,6 +9,7 @@ import { prettyObject } from "@/app/utils/format"; import { getClientConfig } from "@/app/config/client"; import Locale from "../../locales"; import { getServerSideConfig } from "@/app/config/server"; +import de from "@/app/locales/de"; export class GeminiProApi implements LLMApi { extractMessage(res: any) { console.log("[Response] gemini-pro response: ", res); @@ -87,9 +88,11 @@ export class GeminiProApi implements LLMApi { "streamGenerateContent", ); let finished = false; + + let existingTexts: string[] = []; const finish = () => { finished = true; - options.onFinish(responseText + remainText); + options.onFinish(existingTexts.join("")); }; // animate response to make it looks smooth @@ -134,11 +137,26 @@ export class GeminiProApi implements LLMApi { try { let data = JSON.parse(ensureProperEnding(partialData)); - console.log(data); - let fetchText = apiClient.extractMessage(data[data.length - 1]); - console.log("[Response Animation] fetchText: ", fetchText); - remainText += fetchText; + + const textArray = data.reduce( + (acc: string[], item: { candidates: any[] }) => { + const texts = item.candidates.map((candidate) => + candidate.content.parts + .map((part: { text: any }) => part.text) + .join(""), + ); + return acc.concat(texts); + }, + [], + ); + + if (textArray.length > existingTexts.length) { + const deltaArray = textArray.slice(existingTexts.length); + existingTexts = textArray; + remainText += deltaArray.join(""); + } } catch (error) { + // console.log("[Response Animation] error: ", error,partialData); // skip error message when parsing json } From 9eaf492d5b72d252c9dcaa55d5d99dab87bf19e0 Mon Sep 17 00:00:00 2001 From: Fred Liang Date: Sun, 31 Dec 2023 19:44:51 +0800 Subject: [PATCH 3/3] chore: low the google safety setting to avoid unexpected blocking --- app/client/platforms/google.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/client/platforms/google.ts b/app/client/platforms/google.ts index 1dfcb660d..f0f63659f 100644 --- a/app/client/platforms/google.ts +++ b/app/client/platforms/google.ts @@ -59,6 +59,24 @@ export class GeminiProApi implements LLMApi { topP: modelConfig.top_p, // "topK": modelConfig.top_k, }, + safetySettings: [ + { + category: "HARM_CATEGORY_HARASSMENT", + threshold: "BLOCK_ONLY_HIGH", + }, + { + category: "HARM_CATEGORY_HATE_SPEECH", + threshold: "BLOCK_ONLY_HIGH", + }, + { + category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", + threshold: "BLOCK_ONLY_HIGH", + }, + { + category: "HARM_CATEGORY_DANGEROUS_CONTENT", + threshold: "BLOCK_ONLY_HIGH", + }, + ], }; console.log("[Request] google payload: ", requestPayload);