Files

1 line
15 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "anviod/edgex", "files": {"ui/src/constants/aiProviders.js": {"1f5b3280c96315013467537a28875b57906feb13": {"t": 1785746674.6285698, "n": 4616, "h": "5b76ed52d4d9a94b", "c": "/** AI 助手设置三大分类 */\nexport const AI_SETTING_CATEGORIES = [\n { value: 'mcp', label: 'MCP 接入', desc: '外部 LLM 通过 MCP 协议操作网关' },\n { value: 'remote', label: '本地 AI 模型', desc: '局域网 gRPC 对接 EdgeX AI Model Center' },\n { value: 'cloud', label: '云端大模型', desc: '直连公网或私有 LLM API' }\n]\n\n/** AI deployment modes (legacy — kept for compatibility) */\nexport const AI_DEPLOYMENT_MODES = [\n { value: 'remote', label: '本地 AI 模型', desc: '局域网 gRPC 对接 EdgeX AI Model Center(Mode A/B)' },\n { value: 'cloud', label: '云端大模型', desc: '直连公网或私有 LLM API(Mode C,需 enable_cloud)' }\n]\n\nexport const AI_AUTH_TYPES = [\n { value: 'none', label: '无认证' },\n { value: 'bearer', label: 'Bearer Token', desc: 'Authorization: Bearer <token>' },\n { value: 'api_key', label: 'API Key Header', desc: '自定义 Header 传递密钥' },\n { value: 'basic', label: 'Basic Auth', desc: 'HTTP Basic 用户名/密码' },\n { value: 'azure_key', label: 'Azure API Key', desc: 'api-key Header(Azure OpenAI)' },\n { value: 'custom_header', label: '自定义 Header', desc: '键值对形式附加请求头' }\n]\n\nexport const AI_PROVIDERS = [\n {\n value: 'edgex-center',\n label: 'EdgeX AI Model Center',\n deploymentMode: 'remote',\n authType: 'none',\n baseUrl: '',\n grpcEndpoint: '127.0.0.1:50051',\n models: ['copilot-service', 'protocol-reverse-v1']\n },\n {\n value: 'openai',\n label: 'OpenAI',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://api.openai.com/v1',\n apiKeyHeader: 'Authorization',\n models: ['gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'o1-mini']\n },\n {\n value: 'anthropic',\n label: 'Anthropic',\n deploymentMode: 'cloud',\n authType: 'api_key',\n baseUrl: 'https://api.anthropic.com',\n apiKeyHeader: 'x-api-key',\n models: ['claude-sonnet-4-20250514', 'claude-3-5-sonnet-20241022', 'claude-3-haiku-20240307']\n },\n {\n value: 'azure-openai',\n label: 'Azure OpenAI',\n deploymentMode: 'cloud',\n authType: 'azure_key',\n baseUrl: 'https://{resource}.openai.azure.com',\n apiKeyHeader: 'api-key',\n azureApiVersion: '2024-02-15-preview',\n models: ['gpt-4o', 'gpt-4', 'gpt-35-turbo']\n },\n {\n value: 'deepseek',\n label: 'DeepSeek',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://api.deepseek.com/v1',\n models: ['deepseek-chat', 'deepseek-reasoner']\n },\n {\n value: 'qwen',\n label: '通义千问(DashScope)',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n models: ['qwen-plus', 'qwen-turbo', 'qwen-max']\n },\n {\n value: 'ernie',\n label: '文心一言(百度)',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop',\n models: ['ernie-4.0-8k', 'ernie-3.5-8k', 'ernie-speed-128k']\n },\n {\n value: 'zhipu',\n label: '智谱 AI',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://open.bigmodel.cn/api/paas/v4',\n models: ['glm-4-plus', 'glm-4-flash', 'glm-4-air']\n },\n {\n value: 'moonshot',\n label: 'Moonshot / Kimi',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://api.moonshot.cn/v1',\n models: ['moonshot-v1-8k', 'moonshot-v1-32k', 'moonshot-v1-128k']\n },\n {\n value: 'custom',\n label: '自定义',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: '',\n models: []\n }\n]\n\nexport const defaultAiSettings = () => ({\n deployment_mode: 'remote',\n provider: 'edgex-center',\n grpc_endpoint: '127.0.0.1:50051',\n base_url: '',\n auth_type: 'bearer',\n api_key: '',\n api_key_set: false,\n api_key_header: 'X-API-Key',\n username: '',\n password: '',\n password_set: false,\n azure_api_version: '2024-02-15-preview',\n custom_headers: {},\n model: '',\n enable_cloud: false,\n tokens_limit: 50000,\n tasks_limit: 100,\n mcp_enabled: false,\n mcp_api_key: '',\n mcp_api_key_set: false,\n mcp_full_access: false\n})\n\nexport function findProvider(value) {\n return AI_PROVIDERS.find((p) => p.value === value) || null\n}\n\nexport function applyProviderPreset(form, providerValue) {\n const preset = findProvider(providerValue)\n if (!preset) return\n form.provider = preset.value\n form.deployment_mode = preset.deploymentMode\n if (preset.grpcEndpoint !== undefined) form.grpc_endpoint = preset.grpcEndpoint\n if (preset.baseUrl !== undefined) form.base_url = preset.baseUrl\n if (preset.authType) form.auth_type = preset.authType\n if (preset.apiKeyHeader) form.api_key_header = preset.apiKeyHeader\n if (preset.azureApiVersion) form.azure_api_version = preset.azureApiVersion\n if (preset.models?.length && !form.model) form.model = preset.models[0]\n}\n"}, "8249c53331a63289f62733af6946f8192d76fa24": {"t": 1785766743.6645002, "n": 4616, "h": "5b76ed52d4d9a94b", "c": "/** AI 助手设置三大分类 */\nexport const AI_SETTING_CATEGORIES = [\n { value: 'mcp', label: 'MCP 接入', desc: '外部 LLM 通过 MCP 协议操作网关' },\n { value: 'remote', label: '本地 AI 模型', desc: '局域网 gRPC 对接 EdgeX AI Model Center' },\n { value: 'cloud', label: '云端大模型', desc: '直连公网或私有 LLM API' }\n]\n\n/** AI deployment modes (legacy — kept for compatibility) */\nexport const AI_DEPLOYMENT_MODES = [\n { value: 'remote', label: '本地 AI 模型', desc: '局域网 gRPC 对接 EdgeX AI Model Center(Mode A/B)' },\n { value: 'cloud', label: '云端大模型', desc: '直连公网或私有 LLM API(Mode C,需 enable_cloud)' }\n]\n\nexport const AI_AUTH_TYPES = [\n { value: 'none', label: '无认证' },\n { value: 'bearer', label: 'Bearer Token', desc: 'Authorization: Bearer <token>' },\n { value: 'api_key', label: 'API Key Header', desc: '自定义 Header 传递密钥' },\n { value: 'basic', label: 'Basic Auth', desc: 'HTTP Basic 用户名/密码' },\n { value: 'azure_key', label: 'Azure API Key', desc: 'api-key Header(Azure OpenAI)' },\n { value: 'custom_header', label: '自定义 Header', desc: '键值对形式附加请求头' }\n]\n\nexport const AI_PROVIDERS = [\n {\n value: 'edgex-center',\n label: 'EdgeX AI Model Center',\n deploymentMode: 'remote',\n authType: 'none',\n baseUrl: '',\n grpcEndpoint: '127.0.0.1:50051',\n models: ['copilot-service', 'protocol-reverse-v1']\n },\n {\n value: 'openai',\n label: 'OpenAI',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://api.openai.com/v1',\n apiKeyHeader: 'Authorization',\n models: ['gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'o1-mini']\n },\n {\n value: 'anthropic',\n label: 'Anthropic',\n deploymentMode: 'cloud',\n authType: 'api_key',\n baseUrl: 'https://api.anthropic.com',\n apiKeyHeader: 'x-api-key',\n models: ['claude-sonnet-4-20250514', 'claude-3-5-sonnet-20241022', 'claude-3-haiku-20240307']\n },\n {\n value: 'azure-openai',\n label: 'Azure OpenAI',\n deploymentMode: 'cloud',\n authType: 'azure_key',\n baseUrl: 'https://{resource}.openai.azure.com',\n apiKeyHeader: 'api-key',\n azureApiVersion: '2024-02-15-preview',\n models: ['gpt-4o', 'gpt-4', 'gpt-35-turbo']\n },\n {\n value: 'deepseek',\n label: 'DeepSeek',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://api.deepseek.com/v1',\n models: ['deepseek-chat', 'deepseek-reasoner']\n },\n {\n value: 'qwen',\n label: '通义千问(DashScope)',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n models: ['qwen-plus', 'qwen-turbo', 'qwen-max']\n },\n {\n value: 'ernie',\n label: '文心一言(百度)',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop',\n models: ['ernie-4.0-8k', 'ernie-3.5-8k', 'ernie-speed-128k']\n },\n {\n value: 'zhipu',\n label: '智谱 AI',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://open.bigmodel.cn/api/paas/v4',\n models: ['glm-4-plus', 'glm-4-flash', 'glm-4-air']\n },\n {\n value: 'moonshot',\n label: 'Moonshot / Kimi',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://api.moonshot.cn/v1',\n models: ['moonshot-v1-8k', 'moonshot-v1-32k', 'moonshot-v1-128k']\n },\n {\n value: 'custom',\n label: '自定义',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: '',\n models: []\n }\n]\n\nexport const defaultAiSettings = () => ({\n deployment_mode: 'remote',\n provider: 'edgex-center',\n grpc_endpoint: '127.0.0.1:50051',\n base_url: '',\n auth_type: 'bearer',\n api_key: '',\n api_key_set: false,\n api_key_header: 'X-API-Key',\n username: '',\n password: '',\n password_set: false,\n azure_api_version: '2024-02-15-preview',\n custom_headers: {},\n model: '',\n enable_cloud: false,\n tokens_limit: 50000,\n tasks_limit: 100,\n mcp_enabled: false,\n mcp_api_key: '',\n mcp_api_key_set: false,\n mcp_full_access: false\n})\n\nexport function findProvider(value) {\n return AI_PROVIDERS.find((p) => p.value === value) || null\n}\n\nexport function applyProviderPreset(form, providerValue) {\n const preset = findProvider(providerValue)\n if (!preset) return\n form.provider = preset.value\n form.deployment_mode = preset.deploymentMode\n if (preset.grpcEndpoint !== undefined) form.grpc_endpoint = preset.grpcEndpoint\n if (preset.baseUrl !== undefined) form.base_url = preset.baseUrl\n if (preset.authType) form.auth_type = preset.authType\n if (preset.apiKeyHeader) form.api_key_header = preset.apiKeyHeader\n if (preset.azureApiVersion) form.azure_api_version = preset.azureApiVersion\n if (preset.models?.length && !form.model) form.model = preset.models[0]\n}\n"}, "6cc8ac2c9495c65a620197bbdea1d563855cd5e1": {"t": 1785766745.018028, "n": 4468, "h": "bcc4b8a0624bec47", "c": "/** AI provider presets for AiSettingsDialog */\nexport const AI_DEPLOYMENT_MODES = [\n { value: 'local', label: '本地 Mock', desc: '确定性 Mock 流水线,无需外部 API' },\n { value: 'remote', label: 'AI Model Center', desc: '局域网 gRPC 对接 EdgeX AI Server(Mode A/B)' },\n { value: 'cloud', label: '云端 API', desc: '直连公网或私有 LLM API(Mode C,需 enable_cloud)' }\n]\n\nexport const AI_AUTH_TYPES = [\n { value: 'none', label: '无认证' },\n { value: 'bearer', label: 'Bearer Token', desc: 'Authorization: Bearer <token>' },\n { value: 'api_key', label: 'API Key Header', desc: '自定义 Header 传递密钥' },\n { value: 'basic', label: 'Basic Auth', desc: 'HTTP Basic 用户名/密码' },\n { value: 'azure_key', label: 'Azure API Key', desc: 'api-key Header(Azure OpenAI)' },\n { value: 'custom_header', label: '自定义 Header', desc: '键值对形式附加请求头' }\n]\n\nexport const AI_PROVIDERS = [\n {\n value: 'edgex-local',\n label: '本地 Mock',\n deploymentMode: 'local',\n authType: 'none',\n baseUrl: '',\n grpcEndpoint: '',\n models: []\n },\n {\n value: 'edgex-center',\n label: 'EdgeX AI Model Center',\n deploymentMode: 'remote',\n authType: 'none',\n baseUrl: '',\n grpcEndpoint: '127.0.0.1:50051',\n models: ['copilot-service', 'protocol-reverse-v1']\n },\n {\n value: 'openai',\n label: 'OpenAI',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://api.openai.com/v1',\n apiKeyHeader: 'Authorization',\n models: ['gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'o1-mini']\n },\n {\n value: 'anthropic',\n label: 'Anthropic',\n deploymentMode: 'cloud',\n authType: 'api_key',\n baseUrl: 'https://api.anthropic.com',\n apiKeyHeader: 'x-api-key',\n models: ['claude-sonnet-4-20250514', 'claude-3-5-sonnet-20241022', 'claude-3-haiku-20240307']\n },\n {\n value: 'azure-openai',\n label: 'Azure OpenAI',\n deploymentMode: 'cloud',\n authType: 'azure_key',\n baseUrl: 'https://{resource}.openai.azure.com',\n apiKeyHeader: 'api-key',\n azureApiVersion: '2024-02-15-preview',\n models: ['gpt-4o', 'gpt-4', 'gpt-35-turbo']\n },\n {\n value: 'deepseek',\n label: 'DeepSeek',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://api.deepseek.com/v1',\n models: ['deepseek-chat', 'deepseek-reasoner']\n },\n {\n value: 'qwen',\n label: '通义千问(DashScope)',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n models: ['qwen-plus', 'qwen-turbo', 'qwen-max']\n },\n {\n value: 'ernie',\n label: '文心一言(百度)',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop',\n models: ['ernie-4.0-8k', 'ernie-3.5-8k', 'ernie-speed-128k']\n },\n {\n value: 'zhipu',\n label: '智谱 AI',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://open.bigmodel.cn/api/paas/v4',\n models: ['glm-4-plus', 'glm-4-flash', 'glm-4-air']\n },\n {\n value: 'moonshot',\n label: 'Moonshot / Kimi',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: 'https://api.moonshot.cn/v1',\n models: ['moonshot-v1-8k', 'moonshot-v1-32k', 'moonshot-v1-128k']\n },\n {\n value: 'custom',\n label: '自定义',\n deploymentMode: 'cloud',\n authType: 'bearer',\n baseUrl: '',\n models: []\n }\n]\n\nexport const defaultAiSettings = () => ({\n deployment_mode: 'local',\n provider: 'edgex-local',\n grpc_endpoint: '127.0.0.1:50051',\n base_url: '',\n auth_type: 'bearer',\n api_key: '',\n api_key_set: false,\n api_key_header: 'X-API-Key',\n username: '',\n password: '',\n password_set: false,\n azure_api_version: '2024-02-15-preview',\n custom_headers: {},\n model: '',\n enable_cloud: false,\n tokens_limit: 50000,\n tasks_limit: 100\n})\n\nexport function findProvider(value) {\n return AI_PROVIDERS.find((p) => p.value === value) || null\n}\n\nexport function applyProviderPreset(form, providerValue) {\n const preset = findProvider(providerValue)\n if (!preset) return\n form.provider = preset.value\n form.deployment_mode = preset.deploymentMode\n if (preset.grpcEndpoint !== undefined) form.grpc_endpoint = preset.grpcEndpoint\n if (preset.baseUrl !== undefined) form.base_url = preset.baseUrl\n if (preset.authType) form.auth_type = preset.authType\n if (preset.apiKeyHeader) form.api_key_header = preset.apiKeyHeader\n if (preset.azureApiVersion) form.azure_api_version = preset.azureApiVersion\n if (preset.models?.length && !form.model) form.model = preset.models[0]\n}\n"}}}}