Skip to content

Commit

Permalink
feat: Support Custom RequestPath for Gemini-pro
Browse files Browse the repository at this point in the history
  • Loading branch information
Pylogmon committed Feb 23, 2024
1 parent e8e8809 commit 1d8fc6c
Show file tree
Hide file tree
Showing 10 changed files with 134 additions and 20 deletions.
1 change: 1 addition & 0 deletions src/i18n/locales/en_US.json
Expand Up @@ -263,6 +263,7 @@
},
"geminipro": {
"title": "Gemini Pro",
"request_path": "Request Path",
"api_key": "Api Key",
"stream": "Stream Mode",
"prompt_description": "By customizing the Prompt, you can customize the behavior of Gemini Pro. $text $from $to $detect will be replaced with the text to be translated, source language, target language and detected language.",
Expand Down
1 change: 1 addition & 0 deletions src/i18n/locales/zh_CN.json
Expand Up @@ -254,6 +254,7 @@
},
"geminipro": {
"title": "Gemini Pro",
"request_path": "请求地址",
"api_key": "Api Key",
"stream": "流式输出",
"prompt_description": "通过自定义Prompt自定义Gemini Pro的行为, $text $from $to $detect 将会被替换为 待翻译文本,源语言,目标语言和检测到的语言。",
Expand Down
20 changes: 20 additions & 0 deletions src/services/translate/geminipro/Config.jsx
Expand Up @@ -17,6 +17,7 @@ export function Config(props) {
{
stream: true,
apiKey: '',
requestPath: 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro',
promptList: [
{
role: 'user',
Expand Down Expand Up @@ -114,6 +115,25 @@ export function Config(props) {
{t('services.translate.geminipro.stream')}
</Switch>
</div>
<div className='config-item'>
<Input
label={t('services.translate.geminipro.request_path')}
labelPlacement='outside-left'
value={serviceConfig['requestPath']}
variant='bordered'
classNames={{
base: 'justify-between',
label: 'text-[length:--nextui-font-size-medium]',
mainWrapper: 'max-w-[50%]',
}}
onValueChange={(value) => {
setServiceConfig({
...serviceConfig,
requestPath: value,
});
}}
/>
</div>
<div className='config-item'>
<Input
label={t('services.translate.geminipro.api_key')}
Expand Down
18 changes: 13 additions & 5 deletions src/services/translate/geminipro/index.jsx
Expand Up @@ -9,11 +9,19 @@ export async function translate(text, from, to, options = {}) {
if (config !== undefined) {
translateConfig = config;
}
let { apiKey, stream, promptList } = translateConfig;

const requestPath = stream
? `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:streamGenerateContent?key=${apiKey}`
: `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${apiKey}`;
let { apiKey, stream, promptList, requestPath } = translateConfig;
if (!requestPath) {
requestPath = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro';
}
if (!/https?:\/\/.+/.test(requestPath)) {
requestPath = `https://${requestPath}`;
}
if (requestPath.endsWith('/')) {
requestPath = requestPath.slice(0, -1);
}
requestPath = stream
? `${requestPath}:streamGenerateContent?key=${apiKey}`
: `${requestPath}:generateContent?key=${apiKey}`;

promptList = promptList.map((item) => {
return {
Expand Down
20 changes: 20 additions & 0 deletions src/services/translate/geminipro_custom/Config.jsx
Expand Up @@ -17,6 +17,7 @@ export function Config(props) {
{
stream: true,
apiKey: '',
requestPath: 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro',
promptList: [
{
role: 'user',
Expand Down Expand Up @@ -82,6 +83,25 @@ export function Config(props) {
{t('services.translate.geminipro.stream')}
</Switch>
</div>
<div className='config-item'>
<Input
label={t('services.translate.geminipro.request_path')}
labelPlacement='outside-left'
value={serviceConfig['requestPath']}
variant='bordered'
classNames={{
base: 'justify-between',
label: 'text-[length:--nextui-font-size-medium]',
mainWrapper: 'max-w-[50%]',
}}
onValueChange={(value) => {
setServiceConfig({
...serviceConfig,
requestPath: value,
});
}}
/>
</div>
<div className='config-item'>
<Input
label={t('services.translate.geminipro.api_key')}
Expand Down
18 changes: 13 additions & 5 deletions src/services/translate/geminipro_custom/index.jsx
Expand Up @@ -9,11 +9,19 @@ export async function translate(text, from, to, options = {}) {
if (config !== undefined) {
translateConfig = config;
}
let { apiKey, stream, promptList } = translateConfig;

const requestPath = stream
? `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:streamGenerateContent?key=${apiKey}`
: `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${apiKey}`;
let { apiKey, stream, promptList, requestPath } = translateConfig;
if (!requestPath) {
requestPath = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro';
}
if (!/https?:\/\/.+/.test(requestPath)) {
requestPath = `https://${requestPath}`;
}
if (requestPath.endsWith('/')) {
requestPath = requestPath.slice(0, -1);
}
requestPath = stream
? `${requestPath}:streamGenerateContent?key=${apiKey}`
: `${requestPath}:generateContent?key=${apiKey}`;

promptList = promptList.map((item) => {
return {
Expand Down
20 changes: 20 additions & 0 deletions src/services/translate/geminipro_polish/Config.jsx
Expand Up @@ -17,6 +17,7 @@ export function Config(props) {
{
stream: true,
apiKey: '',
requestPath: 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro',
promptList: [
{
role: 'user',
Expand Down Expand Up @@ -98,6 +99,25 @@ export function Config(props) {
{t('services.translate.geminipro.stream')}
</Switch>
</div>
<div className='config-item'>
<Input
label={t('services.translate.geminipro.request_path')}
labelPlacement='outside-left'
value={serviceConfig['requestPath']}
variant='bordered'
classNames={{
base: 'justify-between',
label: 'text-[length:--nextui-font-size-medium]',
mainWrapper: 'max-w-[50%]',
}}
onValueChange={(value) => {
setServiceConfig({
...serviceConfig,
requestPath: value,
});
}}
/>
</div>
<div className='config-item'>
<Input
label={t('services.translate.geminipro.api_key')}
Expand Down
18 changes: 13 additions & 5 deletions src/services/translate/geminipro_polish/index.jsx
Expand Up @@ -9,11 +9,19 @@ export async function translate(text, from, to, options = {}) {
if (config !== undefined) {
translateConfig = config;
}
let { apiKey, stream, promptList } = translateConfig;

const requestPath = stream
? `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:streamGenerateContent?key=${apiKey}`
: `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${apiKey}`;
let { apiKey, stream, promptList, requestPath } = translateConfig;
if (!requestPath) {
requestPath = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro';
}
if (!/https?:\/\/.+/.test(requestPath)) {
requestPath = `https://${requestPath}`;
}
if (requestPath.endsWith('/')) {
requestPath = requestPath.slice(0, -1);
}
requestPath = stream
? `${requestPath}:streamGenerateContent?key=${apiKey}`
: `${requestPath}:generateContent?key=${apiKey}`;

promptList = promptList.map((item) => {
return {
Expand Down
20 changes: 20 additions & 0 deletions src/services/translate/geminipro_summary/Config.jsx
Expand Up @@ -17,6 +17,7 @@ export function Config(props) {
{
stream: true,
apiKey: '',
requestPath: 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro',
promptList: [
{
role: 'user',
Expand Down Expand Up @@ -98,6 +99,25 @@ export function Config(props) {
{t('services.translate.geminipro.stream')}
</Switch>
</div>
<div className='config-item'>
<Input
label={t('services.translate.geminipro.request_path')}
labelPlacement='outside-left'
value={serviceConfig['requestPath']}
variant='bordered'
classNames={{
base: 'justify-between',
label: 'text-[length:--nextui-font-size-medium]',
mainWrapper: 'max-w-[50%]',
}}
onValueChange={(value) => {
setServiceConfig({
...serviceConfig,
requestPath: value,
});
}}
/>
</div>
<div className='config-item'>
<Input
label={t('services.translate.geminipro.api_key')}
Expand Down
18 changes: 13 additions & 5 deletions src/services/translate/geminipro_summary/index.jsx
Expand Up @@ -9,11 +9,19 @@ export async function translate(text, from, to, options = {}) {
if (config !== undefined) {
translateConfig = config;
}
let { apiKey, stream, promptList } = translateConfig;

const requestPath = stream
? `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:streamGenerateContent?key=${apiKey}`
: `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${apiKey}`;
let { apiKey, stream, promptList, requestPath } = translateConfig;
if (!requestPath) {
requestPath = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro';
}
if (!/https?:\/\/.+/.test(requestPath)) {
requestPath = `https://${requestPath}`;
}
if (requestPath.endsWith('/')) {
requestPath = requestPath.slice(0, -1);
}
requestPath = stream
? `${requestPath}:streamGenerateContent?key=${apiKey}`
: `${requestPath}:generateContent?key=${apiKey}`;

promptList = promptList.map((item) => {
return {
Expand Down

0 comments on commit 1d8fc6c

Please sign in to comment.