refactor: generate code viewer
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
import { fomatNodeJsParams, formatCurlArgs, formatPyParams } from './utils';
|
||||
|
||||
export const speechToTextCode = ({ api, parameters }: Record<string, any>) => {
|
||||
const host = window.location.origin;
|
||||
|
||||
// ========================= Curl =========================
|
||||
const curlCode = `
|
||||
curl ${host}${api} \\
|
||||
-H "Content-Type: multipart/form-data" \\
|
||||
-H "Authorization: Bearer $\{YOUR_GPUSTACK_API_KEY}" \\
|
||||
-F file="@/path/to/file/audio.mp3;type=audio/mpeg" \\
|
||||
${formatCurlArgs(parameters, true)}`
|
||||
.trim()
|
||||
.replace(/\\$/g, '');
|
||||
|
||||
// ========================= Python =========================
|
||||
const pythonCode = `
|
||||
from openai import OpenAI\n
|
||||
audio_file = open("audio.mp3", "rb")
|
||||
client = OpenAI(
|
||||
base_url="${host}/v1-openai",
|
||||
api_key="YOUR_GPUSTACK_API_KEY"
|
||||
)
|
||||
|
||||
response = client.audio.transcriptions.create(\n${formatPyParams({
|
||||
...parameters,
|
||||
file: 'audio_file'
|
||||
}).replace(/"audio_file"/, 'audio_file')})\n
|
||||
print('response:', response.text)`.trim();
|
||||
|
||||
// ========================= Node.js =========================
|
||||
const jsonParams = fomatNodeJsParams({
|
||||
...parameters,
|
||||
file: `fs.createReadStream(audio.mp3)`
|
||||
});
|
||||
const params = jsonParams.replace(
|
||||
/"fs.createReadStream\(audio.mp3\)"/g,
|
||||
'fs.createReadStream("audio.mp3")'
|
||||
);
|
||||
const nodeJsCode = `
|
||||
const fs = require("fs")
|
||||
const OpenAI = require("openai");
|
||||
|
||||
const openai = new OpenAI({
|
||||
"apiKey": "YOUR_GPUSTACK_API_KEY",
|
||||
"baseURL": "${host}/v1-openai"
|
||||
});
|
||||
|
||||
async function main() {
|
||||
const params = ${params};
|
||||
const response = await openai.audio.transcriptions.create(params);
|
||||
console.log(response.text);
|
||||
}
|
||||
|
||||
main();`.trim();
|
||||
|
||||
return {
|
||||
curlCode,
|
||||
pythonCode,
|
||||
nodeJsCode
|
||||
};
|
||||
};
|
||||
|
||||
export const TextToSpeechCode = ({ api, parameters }: Record<string, any>) => {
|
||||
const host = window.location.origin;
|
||||
|
||||
// ========================= Curl =========================
|
||||
const curlCode = `
|
||||
curl ${host}${api} \\
|
||||
-H "Content-Type: multipart/form-data" \\
|
||||
-H "Authorization: Bearer $\{YOUR_GPUSTACK_API_KEY}" \\
|
||||
${formatCurlArgs(parameters, false)} \\\n--output output.${parameters.response_format}`.trim();
|
||||
|
||||
// ========================= Python =========================
|
||||
const pythonCode = `
|
||||
from pathlib import Path
|
||||
from openai import OpenAI\n
|
||||
output_file_path = Path(__file__).parent / "output.mp3"
|
||||
client = OpenAI(
|
||||
base_url="${host}/v1-openai",
|
||||
api_key="YOUR_GPUSTACK_API_KEY"
|
||||
)
|
||||
|
||||
response = client.audio.speech.create(\n${formatPyParams({ ...parameters })})\n
|
||||
with open(output_file_path, "wb") as f:
|
||||
for chunk in response.iter_bytes():
|
||||
f.write(chunk)
|
||||
|
||||
print(f"Audio saved to {output_file_path}")`.trim();
|
||||
|
||||
// ========================= Node.js =========================
|
||||
const params = fomatNodeJsParams({
|
||||
...parameters
|
||||
});
|
||||
|
||||
const nodeJsCode = `
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const OpenAI = require("openai");
|
||||
|
||||
const ouptFile = path.resolve("./output.mp3");
|
||||
|
||||
const openai = new OpenAI({
|
||||
"apiKey": "YOUR_GPUSTACK_API_KEY",
|
||||
"baseURL": "${host}/v1-openai"
|
||||
});
|
||||
|
||||
async function main() {
|
||||
const params = ${params};
|
||||
const response = await openai.audio.speech.create(params);
|
||||
console.log(ouptFile);
|
||||
const buffer = Buffer.from(await response.arrayBuffer());
|
||||
await fs.promises.writeFile(ouptFile, buffer);
|
||||
}
|
||||
main();`.trim();
|
||||
|
||||
return {
|
||||
curlCode,
|
||||
pythonCode,
|
||||
nodeJsCode
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,52 @@
|
||||
import { fomatNodeJsParams, formatCurlArgs, formatPyParams } from './utils';
|
||||
|
||||
export const generateEmbeddingCode = ({
|
||||
api,
|
||||
parameters
|
||||
}: Record<string, any>) => {
|
||||
const host = window.location.origin;
|
||||
|
||||
// ========================= Curl =========================
|
||||
const curlCode = `
|
||||
curl ${host}${api} \\
|
||||
-H "Content-Type: application/json" \\
|
||||
-H "Authorization: Bearer $\{YOUR_GPUSTACK_API_KEY}" \\
|
||||
${formatCurlArgs(parameters, false)}`.trim();
|
||||
|
||||
// ========================= Python =========================
|
||||
const pythonCode = `
|
||||
from openai import OpenAI\n
|
||||
client = OpenAI(
|
||||
base_url="${host}/v1-openai",
|
||||
api_key="YOUR_GPUSTACK_API_KEY"
|
||||
)
|
||||
|
||||
response = client.embeddings.create(\n${formatPyParams({ ...parameters })})\n
|
||||
print(response.data[0].embedding)`.trim();
|
||||
|
||||
// ========================= Node.js =========================
|
||||
const params = fomatNodeJsParams({
|
||||
...parameters
|
||||
});
|
||||
|
||||
const nodeJsCode = `
|
||||
const OpenAI = require("openai");
|
||||
|
||||
const openai = new OpenAI({
|
||||
"apiKey": "YOUR_GPUSTACK_API_KEY",
|
||||
"baseURL": "${host}/v1-openai"
|
||||
});
|
||||
|
||||
async function main() {
|
||||
const params = ${params};
|
||||
const response = await openai.embeddings.create(params);
|
||||
console.log(response.data[0].embedding);
|
||||
}
|
||||
main();`.trim();
|
||||
|
||||
return {
|
||||
curlCode,
|
||||
pythonCode,
|
||||
nodeJsCode
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,96 @@
|
||||
import { fomatNodeJsParams, formatCurlArgs, formatPyParams } from './utils';
|
||||
|
||||
export const generateImageCode = ({ api, parameters }: Record<string, any>) => {
|
||||
const host = window.location.origin;
|
||||
|
||||
// ========================= Curl =========================
|
||||
const curlCode = `
|
||||
curl ${host}${api} \\
|
||||
-H "Content-Type: application/json" \\
|
||||
-H "Authorization: Bearer $\{YOUR_GPUSTACK_API_KEY}" \\
|
||||
${formatCurlArgs(parameters, false)}`.trim();
|
||||
|
||||
// ========================= Python =========================
|
||||
const pythonCode = `
|
||||
import requests\n
|
||||
url="${host}${api}"
|
||||
headers = {
|
||||
"Content-type": "application/json",
|
||||
"Authorization": "Bearer $\{YOUR_GPUSTACK_API_KEY}"
|
||||
}
|
||||
data = ${JSON.stringify(parameters, null, 2).replace(/null/g, 'None')}\n
|
||||
response = requests.post(url, headers=headers, json=data)
|
||||
print(response.json()['data'][0]['b64_json'])`.trim();
|
||||
|
||||
// ========================= Node.js =========================
|
||||
const nodeJsCode = `
|
||||
const axios = require('axios');
|
||||
|
||||
const url = "http://localhost/v1-openai/images/generations";
|
||||
const headers = {
|
||||
"Content-type": "application/json",
|
||||
"Authorization": "Bearer $\{YOUR_GPUSTACK_API_KEY}"
|
||||
};
|
||||
const data = ${fomatNodeJsParams(parameters)};
|
||||
|
||||
axios.post(url, data, { headers }).then((response) => {
|
||||
console.log(response.data.data[0].b64_json);
|
||||
});`.trim();
|
||||
|
||||
return {
|
||||
curlCode,
|
||||
pythonCode,
|
||||
nodeJsCode
|
||||
};
|
||||
};
|
||||
|
||||
export const generateOpenaiImageCode = ({
|
||||
api,
|
||||
parameters
|
||||
}: Record<string, any>) => {
|
||||
const host = window.location.origin;
|
||||
|
||||
// ========================= Curl =========================
|
||||
const curlCode = `
|
||||
curl ${host}${api} \\
|
||||
-H "Content-Type: application/json" \\
|
||||
-H "Authorization: Bearer $\{YOUR_GPUSTACK_API_KEY}" \\
|
||||
${formatCurlArgs(parameters, false)}`.trim();
|
||||
|
||||
// ========================= Python =========================
|
||||
const pythonCode = `
|
||||
from openai import OpenAI\n
|
||||
client = OpenAI(
|
||||
base_url="${host}/v1-openai",
|
||||
api_key="YOUR_GPUSTACK_API_KEY"
|
||||
)
|
||||
|
||||
response = client.images.generate(\n${formatPyParams({ ...parameters })})\n
|
||||
print(response.data[0].b64_json)`.trim();
|
||||
|
||||
// ========================= Node.js =========================
|
||||
const params = fomatNodeJsParams({
|
||||
...parameters
|
||||
});
|
||||
|
||||
const nodeJsCode = `
|
||||
const OpenAI = require("openai");
|
||||
|
||||
const openai = new OpenAI({
|
||||
"apiKey": "YOUR_GPUSTACK_API_KEY",
|
||||
"baseURL": "${host}/v1-openai"
|
||||
});
|
||||
|
||||
async function main() {
|
||||
const params = ${params};
|
||||
const response = await openai.images.generate(params);
|
||||
console.log(response.data[0].b64_json);
|
||||
}
|
||||
main();`.trim();
|
||||
|
||||
return {
|
||||
curlCode,
|
||||
pythonCode,
|
||||
nodeJsCode
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,48 @@
|
||||
import { formatCurlArgs } from './utils';
|
||||
|
||||
export const generateRerankCode = ({
|
||||
api,
|
||||
parameters
|
||||
}: Record<string, any>) => {
|
||||
const host = window.location.origin;
|
||||
|
||||
// ========================= Curl =========================
|
||||
const curlCode = `
|
||||
curl ${host}${api} \\
|
||||
-H "Content-Type: application/json" \\
|
||||
-H "Authorization: Bearer $\{YOUR_GPUSTACK_API_KEY}" \\
|
||||
${formatCurlArgs(parameters, false)}`.trim();
|
||||
|
||||
// ========================= Python =========================
|
||||
const pythonCode = `
|
||||
import requests\n
|
||||
url="${host}${api}"
|
||||
headers = {
|
||||
"Content-type": "application/json",
|
||||
"Authorization": "Bearer $\{YOUR_GPUSTACK_API_KEY}"
|
||||
}
|
||||
data = ${JSON.stringify(parameters, null, 2)}\n
|
||||
response = requests.post(url, headers=headers, json=data)
|
||||
print(response.json())`.trim();
|
||||
|
||||
// ========================= Node.js =========================
|
||||
const nodeJsCode = `
|
||||
const axios = require('axios');
|
||||
|
||||
const url = "${host}${api}";
|
||||
const headers = {
|
||||
"Content-type": "application/json",
|
||||
"Authorization": "Bearer $\{YOUR_GPUSTACK_API_KEY}"
|
||||
};
|
||||
const data = ${JSON.stringify(parameters, null, 2)};
|
||||
|
||||
axios.post(url, data, { headers }).then((response) => {
|
||||
console.log(response.data);
|
||||
});`.trim();
|
||||
|
||||
return {
|
||||
curlCode,
|
||||
pythonCode,
|
||||
nodeJsCode
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,42 @@
|
||||
import _ from 'lodash';
|
||||
|
||||
// curl format
|
||||
export const formatCurlArgs = (
|
||||
parameters: Record<string, any>,
|
||||
isFormdata?: boolean
|
||||
) => {
|
||||
if (isFormdata) {
|
||||
return _.keys(parameters).reduce((acc: string, key: string) => {
|
||||
const val = parameters[key];
|
||||
const value =
|
||||
typeof val === 'object' ? JSON.stringify(val, null, 2) : `${val}`;
|
||||
return acc + `-F ${key}="${value}" \\\n`;
|
||||
}, '');
|
||||
}
|
||||
return `-d '${JSON.stringify(parameters, null, 2)}'`;
|
||||
};
|
||||
|
||||
// python format
|
||||
export const formatPyParams = (parameters: Record<string, any>) => {
|
||||
return _.keys(parameters).reduce((acc: string, key: string) => {
|
||||
if (parameters[key] === null || parameters[key] === undefined) {
|
||||
return acc;
|
||||
}
|
||||
const value =
|
||||
typeof parameters[key] === 'object'
|
||||
? JSON.stringify(parameters[key], null, 2)
|
||||
: `"${parameters[key]}"`;
|
||||
return acc + ` ${key}=${value},\n`;
|
||||
}, '');
|
||||
};
|
||||
|
||||
// node format
|
||||
export const fomatNodeJsParams = (parameters: Record<string, any>) => {
|
||||
return JSON.stringify(
|
||||
{
|
||||
...parameters
|
||||
},
|
||||
null,
|
||||
4
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user