{"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 ' },\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 ' },\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 ' },\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"}}}}