chore: Updated copies in-app (#4527)
* Updated copies in Advanced Settings * Updated copies in Extensions Settings * Updated copies in Engines Settings * Updated copies in Engines Settings * Updated copies in Install Engine modal * chore: lint fix --------- Co-authored-by: Louis <louis@jan.ai>
This commit is contained in:
parent
c32c9e1dcb
commit
ca220d18a6
@ -55,7 +55,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "Conversational",
|
"productName": "Conversational",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension enables conversations and state persistence via your filesystem",
|
"description": "This extension enables conversations and state persistence via your filesystem.",
|
||||||
"url": "extension://@janhq/conversational-extension/dist/index.js"
|
"url": "extension://@janhq/conversational-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/inference-anthropic-extension": {
|
"@janhq/inference-anthropic-extension": {
|
||||||
@ -70,7 +70,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "Anthropic Inference Engine",
|
"productName": "Anthropic Inference Engine",
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension enables Anthropic chat completion API calls",
|
"description": "This extension enables Anthropic chat completion API calls.",
|
||||||
"url": "extension://@janhq/inference-anthropic-extension/dist/index.js"
|
"url": "extension://@janhq/inference-anthropic-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/inference-triton-trt-llm-extension": {
|
"@janhq/inference-triton-trt-llm-extension": {
|
||||||
@ -85,7 +85,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "Triton-TRT-LLM Inference Engine",
|
"productName": "Triton-TRT-LLM Inference Engine",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension enables Nvidia's TensorRT-LLM as an inference engine option",
|
"description": "This extension enables Nvidia's TensorRT-LLM as an inference engine option.",
|
||||||
"url": "extension://@janhq/inference-triton-trt-llm-extension/dist/index.js"
|
"url": "extension://@janhq/inference-triton-trt-llm-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/inference-mistral-extension": {
|
"@janhq/inference-mistral-extension": {
|
||||||
@ -100,7 +100,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "MistralAI Inference Engine",
|
"productName": "MistralAI Inference Engine",
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension enables Mistral chat completion API calls",
|
"description": "This extension enables Mistral chat completion API calls.",
|
||||||
"url": "extension://@janhq/inference-mistral-extension/dist/index.js"
|
"url": "extension://@janhq/inference-mistral-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/inference-martian-extension": {
|
"@janhq/inference-martian-extension": {
|
||||||
@ -115,7 +115,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "Martian Inference Engine",
|
"productName": "Martian Inference Engine",
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension enables Martian chat completion API calls",
|
"description": "This extension enables Martian chat completion API calls.",
|
||||||
"url": "extension://@janhq/inference-martian-extension/dist/index.js"
|
"url": "extension://@janhq/inference-martian-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/inference-openrouter-extension": {
|
"@janhq/inference-openrouter-extension": {
|
||||||
@ -130,7 +130,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "OpenRouter Inference Engine",
|
"productName": "OpenRouter Inference Engine",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension enables Open Router chat completion API calls",
|
"description": "This extension enables Open Router chat completion API calls.",
|
||||||
"url": "extension://@janhq/inference-openrouter-extension/dist/index.js"
|
"url": "extension://@janhq/inference-openrouter-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/inference-nvidia-extension": {
|
"@janhq/inference-nvidia-extension": {
|
||||||
@ -145,7 +145,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "NVIDIA NIM Inference Engine",
|
"productName": "NVIDIA NIM Inference Engine",
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension enables NVIDIA chat completion API calls",
|
"description": "This extension enables NVIDIA chat completion API calls.",
|
||||||
"url": "extension://@janhq/inference-nvidia-extension/dist/index.js"
|
"url": "extension://@janhq/inference-nvidia-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/inference-groq-extension": {
|
"@janhq/inference-groq-extension": {
|
||||||
@ -160,7 +160,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "Groq Inference Engine",
|
"productName": "Groq Inference Engine",
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension enables fast Groq chat completion API calls",
|
"description": "This extension enables fast Groq chat completion API calls.",
|
||||||
"url": "extension://@janhq/inference-groq-extension/dist/index.js"
|
"url": "extension://@janhq/inference-groq-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/inference-openai-extension": {
|
"@janhq/inference-openai-extension": {
|
||||||
@ -175,7 +175,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "OpenAI Inference Engine",
|
"productName": "OpenAI Inference Engine",
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension enables OpenAI chat completion API calls",
|
"description": "This extension enables OpenAI chat completion API calls.",
|
||||||
"url": "extension://@janhq/inference-openai-extension/dist/index.js"
|
"url": "extension://@janhq/inference-openai-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/inference-cohere-extension": {
|
"@janhq/inference-cohere-extension": {
|
||||||
@ -190,7 +190,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "Cohere Inference Engine",
|
"productName": "Cohere Inference Engine",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension enables Cohere chat completion API calls",
|
"description": "This extension enables Cohere chat completion API calls.",
|
||||||
"url": "extension://@janhq/inference-cohere-extension/dist/index.js"
|
"url": "extension://@janhq/inference-cohere-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/model-extension": {
|
"@janhq/model-extension": {
|
||||||
@ -205,7 +205,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "Model Management",
|
"productName": "Model Management",
|
||||||
"version": "1.0.33",
|
"version": "1.0.33",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "Model Management Extension provides model exploration and seamless downloads",
|
"description": "Model Management Extension provides model exploration and seamless downloads.",
|
||||||
"url": "extension://@janhq/model-extension/dist/index.js"
|
"url": "extension://@janhq/model-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/monitoring-extension": {
|
"@janhq/monitoring-extension": {
|
||||||
@ -220,7 +220,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "System Monitoring",
|
"productName": "System Monitoring",
|
||||||
"version": "1.0.10",
|
"version": "1.0.10",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension provides system health and OS level data",
|
"description": "This extension provides system health and OS level data.",
|
||||||
"url": "extension://@janhq/monitoring-extension/dist/index.js"
|
"url": "extension://@janhq/monitoring-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/assistant-extension": {
|
"@janhq/assistant-extension": {
|
||||||
@ -235,7 +235,7 @@ Extensions in Jan are configured through a JSON file that defines their behavior
|
|||||||
"productName": "Jan Assistant",
|
"productName": "Jan Assistant",
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"description": "This extension enables assistants, including Jan, a default assistant that can call all downloaded models",
|
"description": "This extension enables assistants, including Jan, a default assistant that can call all downloaded models.",
|
||||||
"url": "extension://@janhq/assistant-extension/dist/index.js"
|
"url": "extension://@janhq/assistant-extension/dist/index.js"
|
||||||
},
|
},
|
||||||
"@janhq/tensorrt-llm-extension": {
|
"@janhq/tensorrt-llm-extension": {
|
||||||
|
|||||||
@ -47,8 +47,8 @@ To add a new remote engine:
|
|||||||
|-------|-------------|----------|
|
|-------|-------------|----------|
|
||||||
| Engine Name | Name for your engine (e.g., "OpenAI", "Claude") | ✓ |
|
| Engine Name | Name for your engine (e.g., "OpenAI", "Claude") | ✓ |
|
||||||
| API URL | The base URL of the provider's API | ✓ |
|
| API URL | The base URL of the provider's API | ✓ |
|
||||||
| API Key | Your authentication key from the provider | ✓ |
|
| API Key | Your authentication key to activate this engine | ✓ |
|
||||||
| Model List URL | URL for fetching available models | |
|
| Model List URL | The endpoint URL to fetch available models |
|
||||||
| API Key Template | Custom authorization header format | |
|
| API Key Template | Custom authorization header format | |
|
||||||
| Request Format Conversion | Function to convert Jan's request format to provider's format | |
|
| Request Format Conversion | Function to convert Jan's request format to provider's format | |
|
||||||
| Response Format Conversion | Function to convert provider's response format to Jan's format | |
|
| Response Format Conversion | Function to convert provider's response format to Jan's format | |
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "jan",
|
"name": "jan",
|
||||||
"version": "0.1.4",
|
"version": "0.1.1737985524",
|
||||||
"main": "./build/main.js",
|
"main": "./build/main.js",
|
||||||
"author": "Jan <service@jan.ai>",
|
"author": "Jan <service@jan.ai>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@ -76,7 +76,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "use_mmap",
|
"key": "use_mmap",
|
||||||
"title": "MMAP",
|
"title": "mmap",
|
||||||
"description": "Loads model files more efficiently by mapping them to memory, reducing RAM usage.",
|
"description": "Loads model files more efficiently by mapping them to memory, reducing RAM usage.",
|
||||||
"controllerType": "checkbox",
|
"controllerType": "checkbox",
|
||||||
"controllerProps": {
|
"controllerProps": {
|
||||||
|
|||||||
@ -30,7 +30,7 @@ const ModalConfirmReset = () => {
|
|||||||
content={
|
content={
|
||||||
<div>
|
<div>
|
||||||
<p className="text-[hsla(var(--text-secondary))]">
|
<p className="text-[hsla(var(--text-secondary))]">
|
||||||
Restore appplication to its initial state, erasing all models and
|
Restore application to its initial state, erasing all models and
|
||||||
chat history. This action is irreversible and recommended only if
|
chat history. This action is irreversible and recommended only if
|
||||||
the application is corrupted.
|
the application is corrupted.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@ -17,7 +17,7 @@ const FactoryReset = () => {
|
|||||||
</h6>
|
</h6>
|
||||||
</div>
|
</div>
|
||||||
<p className="whitespace-pre-wrap font-medium leading-relaxed text-[hsla(var(--text-secondary))]">
|
<p className="whitespace-pre-wrap font-medium leading-relaxed text-[hsla(var(--text-secondary))]">
|
||||||
Restore appplication to its initial state, erasing all models and chat
|
Restore application to its initial state, erasing all models and chat
|
||||||
history. This action is irreversible and recommended only if the
|
history. This action is irreversible and recommended only if the
|
||||||
application is corrupted.
|
application is corrupted.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@ -437,7 +437,7 @@ const Advanced = ({ setSubdir }: { setSubdir: (subdir: string) => void }) => {
|
|||||||
<h6 className="font-semibold capitalize">HTTPS Proxy</h6>
|
<h6 className="font-semibold capitalize">HTTPS Proxy</h6>
|
||||||
</div>
|
</div>
|
||||||
<p className="font-medium leading-relaxed text-[hsla(var(--text-secondary))]">
|
<p className="font-medium leading-relaxed text-[hsla(var(--text-secondary))]">
|
||||||
Optional proxy server for internet connections
|
Optional proxy server for internet connections.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
@ -462,11 +462,11 @@ const Advanced = ({ setSubdir }: { setSubdir: (subdir: string) => void }) => {
|
|||||||
<h6 className="font-semibold capitalize">Jan Quick Ask</h6>
|
<h6 className="font-semibold capitalize">Jan Quick Ask</h6>
|
||||||
</div>
|
</div>
|
||||||
<p className="font-medium leading-relaxed text-[hsla(var(--text-secondary))]">
|
<p className="font-medium leading-relaxed text-[hsla(var(--text-secondary))]">
|
||||||
Enable Quick Ask to be triggered via the default hotkey .
|
Enable Quick Ask to be triggered via the default hotkey
|
||||||
<span className="text-[hsla(var(--text-secondary)] bg-secondary inline-flex items-center justify-center rounded-full px-1 py-0.5 text-xs font-bold">
|
<span className="text-[hsla(var(--text-secondary)] bg-secondary inline-flex items-center justify-center rounded-full px-1 py-0.5 text-xs font-bold">
|
||||||
<span className="font-bold">{isMac ? '⌘' : 'Ctrl'} + J</span>
|
<span className="font-bold">{isMac ? '⌘' : 'Ctrl'} + J</span>
|
||||||
</span>{' '}
|
</span>{' '}
|
||||||
(reload needed).
|
.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<Switch
|
<Switch
|
||||||
|
|||||||
@ -129,13 +129,6 @@ const ExtensionCatalog = () => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="block w-full px-4">
|
<div className="block w-full px-4">
|
||||||
{coreActiveExtensions.length > 0 && (
|
|
||||||
<div className="mb-3 mt-8 border-b border-[hsla(var(--app-border))] pb-4">
|
|
||||||
<h6 className="text-base font-semibold text-[hsla(var(--text-primary))]">
|
|
||||||
Core Extension
|
|
||||||
</h6>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
{coreActiveExtensions
|
{coreActiveExtensions
|
||||||
.filter((x) => x.name.includes(searchText.toLowerCase().trim()))
|
.filter((x) => x.name.includes(searchText.toLowerCase().trim()))
|
||||||
.sort((a, b) => a.name.localeCompare(b.name))
|
.sort((a, b) => a.name.localeCompare(b.name))
|
||||||
|
|||||||
@ -90,7 +90,7 @@ const ModalAddRemoteEngine = () => {
|
|||||||
<div>
|
<div>
|
||||||
<p>Install Remote Engine</p>
|
<p>Install Remote Engine</p>
|
||||||
<p className="text-sm font-normal text-[hsla(var(--text-secondary))]">
|
<p className="text-sm font-normal text-[hsla(var(--text-secondary))]">
|
||||||
Only OpenAI API-compatible engines are supported
|
Only OpenAI API-compatible engines are supported.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
@ -123,10 +123,14 @@ const ModalAddRemoteEngine = () => {
|
|||||||
|
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<label htmlFor="chatCmpletionsUrl" className="font-semibold">
|
<label htmlFor="chatCmpletionsUrl" className="font-semibold">
|
||||||
{renderLabel('Chat Completion URL', false)}
|
{renderLabel(
|
||||||
|
'API Endpoint URL',
|
||||||
|
false,
|
||||||
|
`The URL where Jan sends requests to access the AI provider's API.`
|
||||||
|
)}
|
||||||
</label>
|
</label>
|
||||||
<Input
|
<Input
|
||||||
placeholder="Enter your chat completion URL."
|
placeholder="Enter API Endpoint URL"
|
||||||
{...register('chatCmpletionsUrl')}
|
{...register('chatCmpletionsUrl')}
|
||||||
/>
|
/>
|
||||||
{errors.chatCmpletionsUrl && (
|
{errors.chatCmpletionsUrl && (
|
||||||
@ -141,7 +145,7 @@ const ModalAddRemoteEngine = () => {
|
|||||||
{renderLabel(
|
{renderLabel(
|
||||||
'Model List URL',
|
'Model List URL',
|
||||||
false,
|
false,
|
||||||
`URL for fetching available models`
|
`The endpoint URL to fetch available models.`
|
||||||
)}
|
)}
|
||||||
</label>
|
</label>
|
||||||
<Input
|
<Input
|
||||||
@ -160,7 +164,7 @@ const ModalAddRemoteEngine = () => {
|
|||||||
{renderLabel(
|
{renderLabel(
|
||||||
'API Key',
|
'API Key',
|
||||||
false,
|
false,
|
||||||
`Your authentication key from the provider`
|
`Your authentication key to activate this engine.`
|
||||||
)}
|
)}
|
||||||
</label>
|
</label>
|
||||||
<Input
|
<Input
|
||||||
@ -175,7 +179,7 @@ const ModalAddRemoteEngine = () => {
|
|||||||
{renderLabel(
|
{renderLabel(
|
||||||
'Request Headers Template',
|
'Request Headers Template',
|
||||||
false,
|
false,
|
||||||
`Template for request headers format.`
|
`HTTP headers template required for API authentication and version specification.`
|
||||||
)}
|
)}
|
||||||
</label>
|
</label>
|
||||||
<TextArea
|
<TextArea
|
||||||
@ -194,7 +198,7 @@ const ModalAddRemoteEngine = () => {
|
|||||||
{renderLabel(
|
{renderLabel(
|
||||||
'Request Format Conversion',
|
'Request Format Conversion',
|
||||||
false,
|
false,
|
||||||
`Function to convert Jan’s request format to this engine API’s format`
|
`Template to transform OpenAI-compatible requests into provider-specific format.`
|
||||||
)}
|
)}
|
||||||
</label>
|
</label>
|
||||||
<TextArea
|
<TextArea
|
||||||
@ -208,7 +212,7 @@ const ModalAddRemoteEngine = () => {
|
|||||||
{renderLabel(
|
{renderLabel(
|
||||||
'Response Format Conversion',
|
'Response Format Conversion',
|
||||||
false,
|
false,
|
||||||
`Function to convert this engine API’s response format to Jan’s format`
|
`Template to transform provider responses into OpenAI-compatible format.`
|
||||||
)}
|
)}
|
||||||
</label>
|
</label>
|
||||||
<TextArea
|
<TextArea
|
||||||
|
|||||||
@ -249,7 +249,7 @@ const RemoteEngineSettings = ({
|
|||||||
className="flex cursor-pointer items-center text-sm font-medium text-[hsla(var(--text-secondary))]"
|
className="flex cursor-pointer items-center text-sm font-medium text-[hsla(var(--text-secondary))]"
|
||||||
onClick={() => setisActiveAdvanceSetting(!isActiveAdvanceSetting)}
|
onClick={() => setisActiveAdvanceSetting(!isActiveAdvanceSetting)}
|
||||||
>
|
>
|
||||||
<span>Advance Settings</span>
|
<span>Advanced Settings</span>
|
||||||
<span>
|
<span>
|
||||||
{isActiveAdvanceSetting ? (
|
{isActiveAdvanceSetting ? (
|
||||||
<ChevronDown size={14} className="ml-1" />
|
<ChevronDown size={14} className="ml-1" />
|
||||||
@ -305,7 +305,7 @@ const RemoteEngineSettings = ({
|
|||||||
Model List URL
|
Model List URL
|
||||||
</h6>
|
</h6>
|
||||||
<p className="mt-1 text-[hsla(var(--text-secondary))]">
|
<p className="mt-1 text-[hsla(var(--text-secondary))]">
|
||||||
The base URL of the provider's API.
|
The endpoint URL to fetch available models.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
@ -335,7 +335,8 @@ const RemoteEngineSettings = ({
|
|||||||
Request Headers Template
|
Request Headers Template
|
||||||
</h6>
|
</h6>
|
||||||
<p className="mt-1 text-[hsla(var(--text-secondary))]">
|
<p className="mt-1 text-[hsla(var(--text-secondary))]">
|
||||||
Template for request headers format.
|
HTTP headers template required for API authentication
|
||||||
|
and version specification.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
@ -365,8 +366,8 @@ const RemoteEngineSettings = ({
|
|||||||
Request Format Conversion
|
Request Format Conversion
|
||||||
</h6>
|
</h6>
|
||||||
<p className="mt-1 text-[hsla(var(--text-secondary))]">
|
<p className="mt-1 text-[hsla(var(--text-secondary))]">
|
||||||
Function to convert Jan’s request format to this engine
|
Template to transform OpenAI-compatible requests into
|
||||||
API’s format.
|
provider-specific format.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
@ -399,8 +400,8 @@ const RemoteEngineSettings = ({
|
|||||||
Response Format Conversion
|
Response Format Conversion
|
||||||
</h6>
|
</h6>
|
||||||
<p className="mt-1 text-[hsla(var(--text-secondary))]">
|
<p className="mt-1 text-[hsla(var(--text-secondary))]">
|
||||||
Function to convert Jan’s request format to this engine
|
Template to transform provider responses into
|
||||||
API’s format.
|
OpenAI-compatible format.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user