resolve conflicts

This commit is contained in:
lloydzhou 2024-07-20 14:41:42 +08:00
commit ac04a1cac8
7 changed files with 50 additions and 6 deletions

View File

@ -106,6 +106,9 @@ export class GeminiProApi implements LLMApi {
// if (visionModel && messages.length > 1) { // if (visionModel && messages.length > 1) {
// options.onError?.(new Error("Multiturn chat is not enabled for models/gemini-pro-vision")); // options.onError?.(new Error("Multiturn chat is not enabled for models/gemini-pro-vision"));
// } // }
const accessStore = useAccessStore.getState();
const modelConfig = { const modelConfig = {
...useAppConfig.getState().modelConfig, ...useAppConfig.getState().modelConfig,
...useChatStore.getState().currentSession().mask.modelConfig, ...useChatStore.getState().currentSession().mask.modelConfig,
@ -127,19 +130,19 @@ export class GeminiProApi implements LLMApi {
safetySettings: [ safetySettings: [
{ {
category: "HARM_CATEGORY_HARASSMENT", category: "HARM_CATEGORY_HARASSMENT",
threshold: "BLOCK_ONLY_HIGH", threshold: accessStore.googleSafetySettings,
}, },
{ {
category: "HARM_CATEGORY_HATE_SPEECH", category: "HARM_CATEGORY_HATE_SPEECH",
threshold: "BLOCK_ONLY_HIGH", threshold: accessStore.googleSafetySettings,
}, },
{ {
category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
threshold: "BLOCK_ONLY_HIGH", threshold: accessStore.googleSafetySettings,
}, },
{ {
category: "HARM_CATEGORY_DANGEROUS_CONTENT", category: "HARM_CATEGORY_DANGEROUS_CONTENT",
threshold: "BLOCK_ONLY_HIGH", threshold: accessStore.googleSafetySettings,
}, },
], ],
}; };

View File

@ -57,6 +57,7 @@ import {
ByteDance, ByteDance,
Alibaba, Alibaba,
Google, Google,
GoogleSafetySettingsThreshold,
OPENAI_BASE_URL, OPENAI_BASE_URL,
Path, Path,
RELEASE_URL, RELEASE_URL,
@ -833,6 +834,27 @@ export function Settings() {
} }
></input> ></input>
</ListItem> </ListItem>
<ListItem
title={Locale.Settings.Access.Google.GoogleSafetySettings.Title}
subTitle={Locale.Settings.Access.Google.GoogleSafetySettings.SubTitle}
>
<Select
value={accessStore.googleSafetySettings}
onChange={(e) => {
accessStore.update(
(access) =>
(access.googleSafetySettings = e.target
.value as GoogleSafetySettingsThreshold),
);
}}
>
{Object.entries(GoogleSafetySettingsThreshold).map(([k, v]) => (
<option value={v} key={k}>
{k}
</option>
))}
</Select>
</ListItem>
</> </>
); );

View File

@ -90,6 +90,15 @@ export enum ServiceProvider {
Alibaba = "Alibaba", Alibaba = "Alibaba",
} }
// Google API safety settings, see https://ai.google.dev/gemini-api/docs/safety-settings
// BLOCK_NONE will not block any content, and BLOCK_ONLY_HIGH will block only high-risk content.
export enum GoogleSafetySettingsThreshold {
BLOCK_NONE = "BLOCK_NONE",
BLOCK_ONLY_HIGH = "BLOCK_ONLY_HIGH",
BLOCK_MEDIUM_AND_ABOVE = "BLOCK_MEDIUM_AND_ABOVE",
BLOCK_LOW_AND_ABOVE = "BLOCK_LOW_AND_ABOVE",
}
export enum ModelProvider { export enum ModelProvider {
GPT = "GPT", GPT = "GPT",
GeminiPro = "GeminiPro", GeminiPro = "GeminiPro",
@ -176,7 +185,7 @@ Latex inline: \\(x^2\\)
Latex block: $$e=mc^2$$ Latex block: $$e=mc^2$$
`; `;
export const SUMMARIZE_MODEL = "gpt-3.5-turbo"; export const SUMMARIZE_MODEL = "gpt-4o-mini";
export const GEMINI_SUMMARIZE_MODEL = "gemini-pro"; export const GEMINI_SUMMARIZE_MODEL = "gemini-pro";
export const KnowledgeCutOffDate: Record<string, string> = { export const KnowledgeCutOffDate: Record<string, string> = {

View File

@ -346,6 +346,10 @@ const cn = {
Title: "API 版本(仅适用于 gemini-pro", Title: "API 版本(仅适用于 gemini-pro",
SubTitle: "选择一个特定的 API 版本", SubTitle: "选择一个特定的 API 版本",
}, },
GoogleSafetySettings: {
Title: "Google 安全过滤级别",
SubTitle: "设置内容过滤级别",
},
}, },
Baidu: { Baidu: {
ApiKey: { ApiKey: {

View File

@ -392,6 +392,10 @@ const en: LocaleType = {
Title: "API Version (specific to gemini-pro)", Title: "API Version (specific to gemini-pro)",
SubTitle: "Select a specific API version", SubTitle: "Select a specific API version",
}, },
GoogleSafetySettings: {
Title: "Google Safety Settings",
SubTitle: "Select a safety filtering level",
},
}, },
}, },

View File

@ -1,6 +1,7 @@
import { import {
ApiPath, ApiPath,
DEFAULT_API_HOST, DEFAULT_API_HOST,
GoogleSafetySettingsThreshold,
ServiceProvider, ServiceProvider,
StoreKey, StoreKey,
} from "../constant"; } from "../constant";
@ -59,6 +60,7 @@ const DEFAULT_ACCESS_STATE = {
googleUrl: DEFAULT_GOOGLE_URL, googleUrl: DEFAULT_GOOGLE_URL,
googleApiKey: "", googleApiKey: "",
googleApiVersion: "v1", googleApiVersion: "v1",
googleSafetySettings: GoogleSafetySettingsThreshold.BLOCK_ONLY_HIGH,
// anthropic // anthropic
anthropicUrl: DEFAULT_ANTHROPIC_URL, anthropicUrl: DEFAULT_ANTHROPIC_URL,

View File

@ -90,7 +90,7 @@ function createEmptySession(): ChatSession {
} }
function getSummarizeModel(currentModel: string) { function getSummarizeModel(currentModel: string) {
// if it is using gpt-* models, force to use 3.5 to summarize // if it is using gpt-* models, force to use 4o-mini to summarize
if (currentModel.startsWith("gpt")) { if (currentModel.startsWith("gpt")) {
const configStore = useAppConfig.getState(); const configStore = useAppConfig.getState();
const accessStore = useAccessStore.getState(); const accessStore = useAccessStore.getState();