chore: add chat completion field form add remote engine (#4452)

This commit is contained in:
Faisal Amir 2025-01-15 15:45:52 +07:00 committed by GitHub
parent 06ee10be1b
commit 231c7116ea
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 69 additions and 27 deletions

View File

@ -1,6 +1,6 @@
{
"name": "jan",
"version": "0.1.1736864554",
"version": "0.1.4",
"main": "./build/main.js",
"author": "Jan <service@jan.ai>",
"license": "MIT",

View File

@ -2,7 +2,7 @@
"id": "@janhq/inference-anthropic-extension",
"type": "remote",
"engine": "anthropic",
"url": "https://api.anthropic.com",
"url": "https://console.anthropic.com/settings/keys",
"api_key": "",
"metadata": {
"get_models_url": "https://api.anthropic.com/v1/models",

View File

@ -2,7 +2,7 @@
"id": "@janhq/inference-cohere-extension",
"type": "remote",
"engine": "cohere",
"url": "https://api.cohere.ai",
"url": "https://dashboard.cohere.com/api-keys",
"api_key": "",
"metadata": {
"get_models_url": "https://api.cohere.ai/v1/models",

View File

@ -2,7 +2,7 @@
"id": "@janhq/inference-groq-extension",
"type": "remote",
"engine": "groq",
"url": "https://api.groq.com",
"url": "https://console.groq.com/keys",
"api_key": "",
"metadata": {
"get_models_url": "https://api.groq.com/openai/v1/models",

View File

@ -2,7 +2,7 @@
"id": "@janhq/inference-martian-extension",
"type": "remote",
"engine": "martian",
"url": "https://withmartian.com",
"url": "https://withmartian.com/dashboard",
"api_key": "",
"metadata": {
"get_models_url": "https://withmartian.com/api/openai/v1/models",

View File

@ -2,7 +2,7 @@
"id": "@janhq/inference-mistral-extension",
"type": "remote",
"engine": "mistral",
"url": "https://api.mistral.ai",
"url": "https://console.mistral.ai/api-keys/",
"api_key": "",
"metadata": {
"get_models_url": "https://api.mistral.ai/v1/models",

View File

@ -2,7 +2,7 @@
"id": "@janhq/inference-nvidia-extension",
"type": "remote",
"engine": "nvidia",
"url": "https://integrate.api.nvidia.com",
"url": "https://org.ngc.nvidia.com/setup/personal-keys",
"api_key": "",
"metadata": {
"get_models_url": "https://integrate.api.nvidia.com/v1/models",

View File

@ -2,7 +2,7 @@
"id": "@janhq/inference-openai-extension",
"type": "remote",
"engine": "openai",
"url": "https://api.openai.com",
"url": "https://platform.openai.com/account/api-keys",
"api_key": "",
"metadata": {
"get_models_url": "https://api.openai.com/v1/models",

View File

@ -2,7 +2,7 @@
"id": "@janhq/inference-openrouter-extension",
"type": "remote",
"engine": "openrouter",
"url": "https://openrouter.ai",
"url": "https://openrouter.ai/keys",
"api_key": "",
"metadata": {
"get_models_url": "https://openrouter.ai/api/v1/models",

View File

@ -509,71 +509,71 @@ __metadata:
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=b3efad&locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=fc09ae&locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/a617e70c606d6f463fbd82488704a02f75290323c07fcf0242641732efa5e9d067062595f27cefade0ac79b47796ac34ef57ac439e82a5a4888b30e37d019994
checksum: 10c0/8e1830ac4f0f26634d3bb243528f7a18fd6e9fa684c18e0a3b85e30d6386d9ef5b0348ddcaaecf27b2e8e8625983b4dc8591564ac6d42e899205bab57385573c
languageName: node
linkType: hard
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=b3efad&locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=fc09ae&locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/a617e70c606d6f463fbd82488704a02f75290323c07fcf0242641732efa5e9d067062595f27cefade0ac79b47796ac34ef57ac439e82a5a4888b30e37d019994
checksum: 10c0/8e1830ac4f0f26634d3bb243528f7a18fd6e9fa684c18e0a3b85e30d6386d9ef5b0348ddcaaecf27b2e8e8625983b4dc8591564ac6d42e899205bab57385573c
languageName: node
linkType: hard
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=b3efad&locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=fc09ae&locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/a617e70c606d6f463fbd82488704a02f75290323c07fcf0242641732efa5e9d067062595f27cefade0ac79b47796ac34ef57ac439e82a5a4888b30e37d019994
checksum: 10c0/8e1830ac4f0f26634d3bb243528f7a18fd6e9fa684c18e0a3b85e30d6386d9ef5b0348ddcaaecf27b2e8e8625983b4dc8591564ac6d42e899205bab57385573c
languageName: node
linkType: hard
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=b3efad&locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=fc09ae&locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/a617e70c606d6f463fbd82488704a02f75290323c07fcf0242641732efa5e9d067062595f27cefade0ac79b47796ac34ef57ac439e82a5a4888b30e37d019994
checksum: 10c0/8e1830ac4f0f26634d3bb243528f7a18fd6e9fa684c18e0a3b85e30d6386d9ef5b0348ddcaaecf27b2e8e8625983b4dc8591564ac6d42e899205bab57385573c
languageName: node
linkType: hard
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=b3efad&locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=fc09ae&locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/a617e70c606d6f463fbd82488704a02f75290323c07fcf0242641732efa5e9d067062595f27cefade0ac79b47796ac34ef57ac439e82a5a4888b30e37d019994
checksum: 10c0/8e1830ac4f0f26634d3bb243528f7a18fd6e9fa684c18e0a3b85e30d6386d9ef5b0348ddcaaecf27b2e8e8625983b4dc8591564ac6d42e899205bab57385573c
languageName: node
linkType: hard
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fmonitoring-extension%40workspace%3Amonitoring-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=b3efad&locator=%40janhq%2Fmonitoring-extension%40workspace%3Amonitoring-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=fc09ae&locator=%40janhq%2Fmonitoring-extension%40workspace%3Amonitoring-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/a617e70c606d6f463fbd82488704a02f75290323c07fcf0242641732efa5e9d067062595f27cefade0ac79b47796ac34ef57ac439e82a5a4888b30e37d019994
checksum: 10c0/8e1830ac4f0f26634d3bb243528f7a18fd6e9fa684c18e0a3b85e30d6386d9ef5b0348ddcaaecf27b2e8e8625983b4dc8591564ac6d42e899205bab57385573c
languageName: node
linkType: hard
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Ftensorrt-llm-extension%40workspace%3Atensorrt-llm-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=b3efad&locator=%40janhq%2Ftensorrt-llm-extension%40workspace%3Atensorrt-llm-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=fc09ae&locator=%40janhq%2Ftensorrt-llm-extension%40workspace%3Atensorrt-llm-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/a617e70c606d6f463fbd82488704a02f75290323c07fcf0242641732efa5e9d067062595f27cefade0ac79b47796ac34ef57ac439e82a5a4888b30e37d019994
checksum: 10c0/8e1830ac4f0f26634d3bb243528f7a18fd6e9fa684c18e0a3b85e30d6386d9ef5b0348ddcaaecf27b2e8e8625983b4dc8591564ac6d42e899205bab57385573c
languageName: node
linkType: hard

View File

@ -11,8 +11,15 @@ import { addRemoteEngine, useGetEngines } from '@/hooks/useEngineManagement'
const engineSchema = z.object({
engineName: z.string().min(1, 'Engine name is required'),
modelListUrl: z.string().url('Enter a valid Model List URL'),
modelListUrl: z
.string()
.url('Enter a valid Model List URL')
.or(z.literal('')),
headerTemplate: z.string().optional(),
chatCmpletionsUrl: z
.string()
.url('Enter a valid Model List URL')
.or(z.literal('')),
apiKey: z.string().optional(),
requestFormat: z.string().optional(),
responseFormat: z.string().optional(),
@ -29,7 +36,7 @@ const ModalAddRemoteEngine = () => {
resolver: zodResolver(engineSchema),
defaultValues: {
engineName: '',
apiUrl: '',
chatCmpletionsUrl: '',
modelListUrl: '',
headerTemplate: '',
apiKey: '',
@ -42,6 +49,7 @@ const ModalAddRemoteEngine = () => {
await addRemoteEngine({
type: 'remote',
engine: data.engineName,
url: ' ',
api_key: data.apiKey,
metadata: {
header_template: data.headerTemplate,
@ -49,6 +57,7 @@ const ModalAddRemoteEngine = () => {
transform_req: {
chat_completions: {
template: data.requestFormat,
url: data.chatCmpletionsUrl,
},
},
transform_resp: {
@ -112,6 +121,21 @@ const ModalAddRemoteEngine = () => {
)}
</div>
<div className="space-y-2">
<label htmlFor="chatCmpletionsUrl" className="font-semibold">
{renderLabel('Chat Completion URL', false)}
</label>
<Input
placeholder="Enter your chat completion URL."
{...register('chatCmpletionsUrl')}
/>
{errors.chatCmpletionsUrl && (
<p className="text-sm text-red-500">
{errors.chatCmpletionsUrl.message}
</p>
)}
</div>
<div className="space-y-2">
<label htmlFor="modelListUrl" className="font-semibold">
{renderLabel(

View File

@ -17,11 +17,13 @@ import { ScrollArea, Input, TextArea } from '@janhq/joi'
import { useAtomValue } from 'jotai'
import { set } from 'lodash'
import { ChevronRight } from 'lucide-react'
import { ChevronDown, ChevronRight } from 'lucide-react'
import { twMerge } from 'tailwind-merge'
import { updateEngine, useGetEngines } from '@/hooks/useEngineManagement'
import { getTitleByEngine } from '@/utils/modelEngine'
import { downloadedModelsAtom } from '@/helpers/atoms/Model.atom'
const RemoteEngineSettings = ({
@ -124,6 +126,18 @@ const RemoteEngineSettings = ({
<h6 className="line-clamp-1 font-semibold">API Key</h6>
<p className="mt-1 text-[hsla(var(--text-secondary))]">
Enter your authentication key to activate this engine.
{engine.engine && engine.url && (
<span>
&nbsp;Get your API key from{' '}
<a
target="_blank"
href={engine.url}
className="text-[hsla(var(--app-link))]"
>
{getTitleByEngine(engine.engine)}.
</a>
</span>
)}
</p>
</div>
<div className="w-full">
@ -221,7 +235,11 @@ const RemoteEngineSettings = ({
>
<span>Advance Settings</span>
<span>
<ChevronRight size={14} className="ml-1" />
{isActiveAdvanceSetting ? (
<ChevronDown size={14} className="ml-1" />
) : (
<ChevronRight size={14} className="ml-1" />
)}
</span>
</p>
</div>