-
函数工作流FunctionGraph是一项基于事件驱动的函数托管计算服务。使用FunctionGraph函数,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。大家都使用过了吗?说说你的感受呢?
-
想象这样一个日常片段:你对着手机里的 AI 助手随口说 “帮我订张周五飞北京的机票,选下午三点后、经济舱性价比高的班次”,话音刚落,它没再追问细节,而是默默对接了多家航空公司的后台接口 —— 先筛选出符合时间要求的余票,再横向对比不同平台的实时价格,甚至自动关联你的常用乘客信息生成订单草稿,最后把带登机二维码的电子票预览直接推到你面前,只等你确认付款。这看似 “无缝衔接” 的服务背后,藏着一项让 AI 突破 “纯聊天” 局限的关键技术,就是今天要拆解的Function Calling(函数调用)。1、从科幻到现实:大模型的"工具使用能力"Function Calling,本质是赋予大语言模型(LLM)像人一样 “主动用工具” 的能力。它不再局限于根据已有知识库生成文本,而是能通过理解人类的自然语言指令,自动触发预设好的 API 接口或第三方工具 —— 比如查实时天气、算财务报表、订酒店车票,甚至控制智能家居的开关。打个更具体的比方:以前你问 AI “下周去上海出差要带什么”,它只能根据常识告诉你 “可能需要带雨具”;但有了 Function Calling 后,它会先调用天气 API 查上海下周的实时天气,再结合你出差的行程(比如是否有户外会议),给出 “周一周二有小雨,建议带折叠伞,周三转晴可穿薄外套” 的精准建议。简单说,它让 AI 从 “只会讲道理的顾问”,变成了 “能动手解决问题的办事员”,从单纯的 “知识库” 升级成了能联动各类工具的 “实用操作系统”。2、技术原理:AI的"工具箱"如何运作?1. 四步决策流程以"查询北京今日空气质量"为例,Function Calling的工作流程分为四个步骤:意图识别:模型解析出用户需要实时环境数据工具匹配:从工具库选中get_air_quality函数参数生成:构造{“city”:“北京”,“date”:“2025-10-10”}参数结果整合:调用API获取数据后生成自然语言回复2. 关键技术实现函数调用的核心是标准化的函数定义,通常采用JSON Schema规范:{"name": "get_weather","description": "获取指定城市天气","parameters": {"type": "object","properties": {"location": {"type": "string", "description": "城市名称"}},"required": ["location"]}}当用户问"深圳明天需要带伞吗?",模型会自动生成上述结构的JSON指令,触发天气API调用,再将返回结果转换为自然语言回答。3、技术突破与行业价值1. 三大核心优势突破能力边界:让LLM从"知识库"升级为"操作系统"(如调用Wolfram Alpha计算积分)结果可靠性:数学计算等敏感操作由专业工具执行,避免模型幻觉生态扩展性:通过标准化接口快速集成第三方服务(支付/物流/CRM)2. 企业级应用场景场景类型 典型案例 技术实现智能客服 订单查询+自动催付 调用CRM API+支付系统工业质检 图片分析+缺陷分类 视觉模型+数据库写入金融风控 多源数据交叉验证 征信API+反欺诈模型4、系统架构:如何设计高效的Function Calling系统?1. 分层架构模型高效的Function Calling系统采用四层解耦架构:[接入层] → [解析层] → [调度层] → [执行层]接入层:多协议适配(OpenAI/DeepSeek等),处理输入格式标准化解析层:自然语言→结构化数据转换(使用Text2JSON引擎,准确率98.7%)调度层:智能路由选择(基于意图识别+优先级算法)执行层:函数并发执行+结果缓存2. 核心组件实现工具注册中心@Componentpublic class ToolRegistry {private final Map<String, ToolRegistration> tools = new ConcurrentHashMap<>();// 支持运行时动态注册public void registerTool(Tool tool) {tools.put(tool.getName(), new ToolRegistration(tool));}// 版本控制机制public Tool getToolVersion(String name, String version) {return tools.get(name + ":" + version);}}特性包括支持热插拔、版本灰度发布和自动Schema校验。参数解析引擎def extract_params(prompt, schema):# 使用BERT模型提取实体entities = ner_model.predict(prompt)# 模糊匹配参数名param_map = {}for param in schema['properties']:for entity in entities:if fuzzy_match(entity['value'], param):param_map[param] = entity['value']return param_map关键技术包括正则表达式+语义理解双校验、必填参数缺失自动追问、类型自动转换等。执行调度器type FunctionExecutor struct {sem chan struct{} // 信号量控制并发}func (e *FunctionExecutor) Execute(fn Function) (Result, error) {e.sem <- struct{}{} // 获取令牌defer func(){ <-e.sem }()// 超时控制ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)defer cancel()resultCh := make(chan Result, 1)errorCh := make(chan error, 1)go func() {result, err := fn.Invoke()if err != nil {errorCh <- errreturn}resultCh <- result}()select {case <-ctx.Done():return nil, TimeoutErrorcase res := <-resultCh:return res, nilcase err := <-errorCh:return nil, err}}5、性能优化策略在Function Calling系统中,性能优化直接影响用户体验和系统扩展性。随着调用量增长和业务复杂度提升,单一的优化手段难以满足需求,需要构建多层次、全方位的性能优化体系。1. 缓存加速方案:从单级到多级缓存架构缓存是提升系统响应速度的核心手段,通过减少重复计算和外部调用,可将平均响应时间降低60%-80%。多级缓存设计// 多级缓存实现(内存+Redis)class MultiLevelCache {constructor() {this.memoryCache = new LRUCache({ max: 1000, ttl: 60000 }); // 内存缓存,1分钟过期this.redisCache = new RedisCache({ttl: 300, // 5分钟过期maxSize: 100000, // 最大缓存条目lru: true});}// 缓存键生成策略 - 增强版generateCacheKey(prompt, func, context) {// 加入用户上下文哈希,区分不同用户的相同请求const contextHash = this.hashCode(JSON.stringify(context));return `${this.hashCode(prompt)}@${func.name}@${this.hashCode(JSON.stringify(func.parameters))}@${contextHash}`;}async get(key) {// 先查内存缓存let data = this.memoryCache.get(key);if (data) return data;// 内存未命中则查Redisdata = await this.redisCache.get(key);if (data) {// 回写内存缓存this.memoryCache.set(key, data);}return data;}async set(key, value, ttl) {// 同时写入两级缓存this.memoryCache.set(key, value, ttl);await this.redisCache.set(key, value, ttl);}hashCode(str) {let hash = 0;for (let i = 0; i < str.length; i++) {const char = str.charCodeAt(i);hash = ((hash << 5) - hash) + char;hash = hash & hash; // 转换为32位整数}return hash;}}智能缓存策略动态TTL调整:根据数据更新频率自动调整过期时间(如天气数据5分钟,股票数据1分钟)缓存预热:系统启动时加载高频函数调用结果(如热门城市天气)缓存穿透防护:对不存在的请求设置空值缓存,避免缓存穿透攻击缓存一致性:使用消息队列实现缓存更新通知,确保多节点缓存一致性2. 流式处理优化:从批处理到实时响应流式处理能够显著提升用户体验,特别是在处理大模型生成和函数调用结果时,可将感知延迟降低50%以上。增强型流式处理器import asynciofrom typing import AsyncGeneratorclass EnhancedStreamingProcessor:def __init__(self):self.buffer = []self.chunk_size = 512 # 更小的块大小,提升响应速度self.event_loop = asyncio.get_event_loop()self.lock = asyncio.Lock()self.last_flush_time = 0self.min_flush_interval = 0.1 # 最小刷新间隔(秒)async def process(self, stream: AsyncGenerator[str, None]) -> AsyncGenerator[str, None]:"""异步处理流数据,支持实时生成结果"""async for chunk in stream:if chunk:async with self.lock:self.buffer.append(chunk)current_time = asyncio.get_event_loop().time()# 满足以下任一条件则刷新:块大小足够 或 达到最小刷新间隔if (len(self.buffer) >= self.chunk_size orcurrent_time - self.last_flush_time > self.min_flush_interval):yield await self.flush()# 处理剩余数据if self.buffer:yield await self.flush()async def flush(self) -> str:"""刷新缓冲区并返回处理后的数据"""data = ''.join(self.buffer)self.buffer = []self.last_flush_time = self.event_loop.time()# 异步处理数据,不阻塞事件循环processed_data = await self.event_loop.run_in_executor(None, self.process_data, data)return processed_datadef process_data(self, data: str) -> str:"""实际数据处理逻辑"""# 1. 解析函数调用结果# 2. 转换为自然语言片段# 3. 进行格式美化return f"实时更新:{data}"流式优化技巧增量解析:对函数返回的JSON数据进行增量解析,不需要等待完整数据优先级调度:高优先级用户请求插队处理,确保VIP用户体验预生成提示:在等待函数返回时,预生成引导性文本(如"正在查询最新数据…")双向流式:实现请求发送和结果接收的双向流式处理,减少交互延迟3. 模型协同优化:从单一模型到智能调度网络随着模型类型增多和场景复杂化,单一模型难以兼顾性能、成本和效果,需要构建多模型协同体系。智能模型路由系统import java.util.List;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import java.util.stream.Collectors;public class IntelligentModelRouter {private final List<Model> models;private final ModelMetrics metrics;private final Map<String, String> functionModelMapping; // 函数-模型映射表private final LoadBalancer loadBalancer;public IntelligentModelRouter(List<Model> models) {this.models = models;this.metrics = new ModelMetrics();this.functionModelMapping = new ConcurrentHashMap<>();this.loadBalancer = new WeightedRoundRobinLoadBalancer();// 初始化函数-模型映射initializeFunctionModelMapping();}public FunctionCallResponse route(FunctionCallRequest request) {// 1. 记录请求指标metrics.recordRequest(request.getFunctionName());// 2. 检查是否有专用模型String dedicatedModelId = functionModelMapping.get(request.getFunctionName());if (dedicatedModelId != null) {Model dedicatedModel = models.stream().filter(m -> m.getId().equals(dedicatedModelId)).findFirst().orElse(null);if (dedicatedModel != null && dedicatedModel.isHealthy()) {return executeWithFallback(dedicatedModel, request);}}// 3. 根据请求复杂度路由if (isSimpleQuery(request)) {// 简单请求路由到轻量模型List<Model> lightweightModels = models.stream().filter(m -> m.getType() == ModelType.LIGHTWEIGHT && m.isHealthy()).collect(Collectors.toList());if (!lightweightModels.isEmpty()) {Model selected = loadBalancer.select(lightweightModels);return executeWithFallback(selected, request);}}// 4. 复杂请求路由到高性能模型List<Model> highPerformanceModels = models.stream().filter(m -> m.getType() == ModelType.HIGH_PERFORMANCE && m.isHealthy()).collect(Collectors.toList());if (!highPerformanceModels.isEmpty()) {Model selected = selectBestModelBasedOnMetrics(highPerformanceModels);return executeWithFallback(selected, request);}// 5. 最后手段:使用基础模型throw new ServiceUnavailableException("No available models to process request");}private FunctionCallResponse executeWithFallback(Model primary, FunctionCallRequest request) {try {long startTime = System.currentTimeMillis();FunctionCallResponse response = primary.invoke(request);metrics.recordSuccess(primary.getId(), request.getFunctionName(),System.currentTimeMillis() - startTime);return response;} catch (Exception e) {metrics.recordFailure(primary.getId(), request.getFunctionName());// 尝试 fallback 到其他模型return routeToFallbackModel(request, primary.getId());}}// 其他辅助方法...}模型协同策略能力分层:将模型按能力分为轻量模型(处理简单函数调用)、通用模型(处理复杂逻辑)和专业模型(处理领域任务)动态负载均衡:基于实时QPS、延迟和错误率调整模型负载自适应降级:系统压力大时自动降级到简化功能,保证核心流程可用成本优化:通过模型选择策略降低总体调用成本(如简单任务用低成本模型)4. 资源调度优化:从静态配置到动态弹性伸缩Function Calling系统的资源消耗具有突发性和不均衡性,需要动态调整资源分配以应对负载变化。弹性资源调度器import KubernetesClient as k8simport timeclass ElasticResourceScheduler:def __init__(self):self.client = k8s.Client()self.min_replicas = 2self.max_replicas = 20self.target_cpu_usage = 70 # 目标CPU使用率(%)self.scale_up_threshold = 80 # 扩容阈值self.scale_down_threshold = 30 # 缩容阈值self.cooldown_period = 60 # 冷却时间(秒)self.last_scale_time = 0def adjust_resources(self):"""根据当前负载调整资源"""current_time = time.time()# 冷却时间内不调整if current_time - self.last_scale_time < self.cooldown_period:return# 获取当前部署信息deployment = self.client.get_deployment("function-calling-service")current_replicas = deployment.spec.replicasmetrics = self.client.get_metrics("function-calling-service")cpu_usage = metrics.average_cpu_usage# 决定扩容还是缩容if cpu_usage > self.scale_up_threshold and current_replicas < self.max_replicas:# 扩容:增加20%或至少1个副本new_replicas = min(current_replicas + max(1, int(current_replicas * 0.2)),self.max_replicas)self.client.scale_deployment("function-calling-service", new_replicas)self.last_scale_time = current_timeprint(f"Scaled up to {new_replicas} replicas (CPU usage: {cpu_usage}%)")elif cpu_usage < self.scale_down_threshold and current_replicas > self.min_replicas:# 缩容:减少10%或至少1个副本new_replicas = max(current_replicas - max(1, int(current_replicas * 0.1)),self.min_replicas)self.client.scale_deployment("function-calling-service", new_replicas)self.last_scale_time = current_timeprint(f"Scaled down to {new_replicas} replicas (CPU usage: {cpu_usage}%)")def schedule_function_execution(self, function_call):"""智能调度函数执行到合适的节点"""# 1. 根据函数类型选择合适的节点池node_pool = self._get_node_pool_for_function(function_call.function_name)# 2. 选择负载最低的节点node = self._select_least_loaded_node(node_pool)# 3. 执行函数调用return self.client.execute_on_node(node, function_call)通过上述多层次的性能优化策略,Function Calling系统能够在保证高可用性和低延迟的同时,实现资源的高效利用和成本的有效控制。实际应用中,需要根据业务特点和性能指标持续调优,构建适应业务增长的弹性架构。 6、与微服务架构的集成路径Function Calling系统与企业现有微服务架构的集成需围绕"解耦、安全、弹性、可观测"四大核心目标,典型的分层架构如下:[LLM层] → [Function Calling调度层] → [微服务层]1. 集成方式API网关集成:企业级应用的首选方案,适合需要统一管控的场景服务网格集成:大规模分布式系统的优化方案,适合微服务数量多的场景直接HTTP/gRPC调用:简单场景的轻量化方案,适合微服务数量少的情况2. 关键集成要点标准化接口设计:使用JSON Schema约束输入输出,实现版本管理安全管控:通过RBAC/ABAC控制访问权限,实现数据脱敏和审计日志弹性设计:采用异步调用、重试机制和熔断降级应对高并发与故障可观测性:通过链路追踪、指标监控和日志分析实现问题快速定位7、技术挑战与解决方案Function Calling作为连接大模型与现实世界的核心桥梁,在实际落地中面临着自然语言的模糊性、外部系统的不确定性以及安全合规等多重挑战。这些问题往往不是单一技术能解决的,需要结合自然语言处理、系统工程和安全防护等多维度方案。1. 典型问题深度解析(1)参数理解与映射难题自然语言的灵活性与函数参数的严谨性存在天然冲突,主要体现在三个层面:歧义表达:用户说"订张去魔都的机票",需将"魔都"映射为"上海";说"下周三出发",需转换为具体日期"2025-10-15"单位混淆:"10点起飞"可能是10:00还是22:00?"1kg的包裹"需确认是否符合快递重量限制隐含信息:“帮我订明天去北京的票"隐含了"出发地为当前城市”(需从用户上下文获取)某旅行平台数据显示,这类参数理解问题导致的调用失败占比达28%,是Function Calling落地的首要障碍。(2)复杂错误场景的鲁棒性外部工具/API的调用过程充满不确定性,常见错误包括:瞬时故障:网络波动导致API超时(某支付系统日均发生3000+次)格式异常:工具返回非预期格式(如JSON字段缺失、类型错误)权限失效:API密钥过期或权限变更(金融场景占比达12%)逻辑错误:工具返回业务逻辑错误(如"航班已取消"但参数正确)缺乏完善的错误处理机制会导致系统稳定性下降,某智能客服平台曾因未处理API超时问题,导致服务中断47分钟。(3)安全与合规风险当Function Calling涉及支付、用户数据等敏感操作时,安全风险被放大:参数注入:恶意用户输入包含SQL注入或命令注入的参数(如"; DROP TABLE users;--)越权调用:普通用户调用管理员权限的工具(如"查询所有用户订单")数据泄露:工具返回的敏感信息(如身份证号)被直接暴露给用户合规风险:金融场景中未记录调用日志,违反PCI DSS等监管要求某银行的AI助手曾因未做参数清洗,导致用户通过特殊输入获取了他人的账户余额,造成严重合规事故。(4)多工具协同与任务规划面对复杂需求(如"先查北京明天的天气,再订适合的酒店,最后预约接机服务"),系统需解决:步骤拆解:将复杂任务分解为可执行的工具调用序列依赖处理:前序工具的结果作为后序工具的参数(如用天气结果筛选"带泳池"的酒店)资源竞争:并发调用多个工具时的资源分配与冲突解决中断恢复:某一步调用失败后,如何回溯或调整后续步骤调研显示,超过60%的企业级Function Calling需求涉及3个以上工具协同,单纯依赖大模型的"一次性规划"往往难以应对。2. 进阶优化方案与实践(1)智能参数处理引擎针对参数理解难题,需构建"识别-映射-校验"三级处理机制:import refrom fuzzywuzzy import fuzzfrom datetime import datetime, timedeltaclass SmartParamProcessor:def __init__(self):# 实体映射库:城市别名、日期表达式等self.city_aliases = {"帝都": "北京", "魔都": "上海", "鹏城": "深圳"}self.date_patterns = {"今天": datetime.now().strftime("%Y-%m-%d"),"明天": (datetime.now() + timedelta(days=1)).strftime("%Y-%m-%d"),"后天": (datetime.now() + timedelta(days=2)).strftime("%Y-%m-%d")}def process(self, user_input, function_schema):"""处理参数的完整流程"""# 1. 提取用户输入中的实体entities = self._extract_entities(user_input)# 2. 模糊匹配并映射参数params = self._fuzzy_map_params(entities, function_schema["parameters"])# 3. 校验参数完整性与格式missing_params = self._check_missing_params(params, function_schema["parameters"])if missing_params:return {"status": "missing", "params": params, "missing": missing_params}# 4. 格式转换与标准化normalized_params = self._normalize_params(params, function_schema["parameters"])return {"status": "success", "params": normalized_params}def _fuzzy_map_params(self, entities, param_schema):"""模糊匹配参数名与实体"""params = {}for param_name, param_info in param_schema["properties"].items():# 计算实体与参数名的语义相似度best_match = Nonebest_score = 0for entity_name, entity_value in entities.items():score = fuzz.token_sort_ratio(param_name, entity_name)if score > best_score and score > 60: # 相似度阈值best_score = scorebest_match = entity_valueif best_match:# 特殊类型映射(如城市别名)if param_info.get("type") == "string" and param_name == "city":params[param_name] = self.city_aliases.get(best_match, best_match)else:params[param_name] = best_matchreturn paramsdef _check_missing_params(self, params, param_schema):"""检查必填参数是否缺失"""return [p for p in param_schema.get("required", []) if p not in params]# 其他辅助方法:_extract_entities、_normalize_params等核心优化点:引入知识图谱增强实体映射(如"小蛮腰"→"广州塔")基于用户历史对话补全隐含参数(如默认出发地)动态生成追问话术(如"请问您说的’下周三’是指10月16日吗?")(2)分层错误处理框架针对工具调用的不确定性,需设计多层级的错误应对策略:public class RobustFunctionExecutor {// 错误处理策略配置private static final int MAX_RETRY = 3; // 最大重试次数private static final long INITIAL_BACKOFF = 1000; // 初始重试间隔(毫秒)private static final Set<String> RETRYABLE_ERRORS = Set.of("timeout", "connection_error", "service_unavailable"); // 可重试的错误类型public FunctionResult execute(FunctionCall call) {// 1. 预执行校验try {validateCall(call); // 校验参数格式、权限等} catch (InvalidParameterException e) {return FunctionResult.failure("参数错误:" + e.getMessage());} catch (UnauthorizedException e) {return FunctionResult.failure("权限不足:" + e.getMessage());}// 2. 带重试机制的执行for (int attempt = 0; attempt < MAX_RETRY; attempt++) {try {// 执行调用并设置超时FunctionResult result = executeWithTimeout(call, 5000); // 5秒超时// 检查返回格式是否符合预期if (isValidResponseFormat(result)) {return result;} else {throw new InvalidResponseFormatException("工具返回格式异常");}} catch (Exception e) {String errorType = classifyError(e);// 判断是否需要重试if (!RETRYABLE_ERRORS.contains(errorType) || attempt == MAX_RETRY - 1) {// 不可重试或最后一次尝试失败:返回友好提示String userMsg = generateUserFriendlyMessage(errorType);return FunctionResult.failure(userMsg, e);}// 指数退避重试long backoff = (long) (INITIAL_BACKOFF * Math.pow(2, attempt));try {Thread.sleep(backoff);} catch (InterruptedException ie) {Thread.currentThread().interrupt();return FunctionResult.failure("执行被中断");}}}return FunctionResult.failure("达到最大重试次数");}// 其他辅助方法:错误分类、用户提示生成等}A关键机制:错误分类体系:将错误分为"可重试"(网络波动)、“需用户干预”(参数错误)、“系统级”(服务下线)智能重试策略:根据错误类型动态调整重试次数和间隔(如支付API失败重试更谨慎)降级方案:核心工具不可用时,自动切换到备用工具(如高德地图API故障时切换到百度地图)(3)全链路安全防护体系针对安全风险,需构建从输入到输出的全链路防护:import jwtimport refrom typing import Dictclass SecurityGuard:def __init__(self, secret_key):self.secret_key = secret_key# 敏感参数正则(身份证、银行卡等)self.sensitive_patterns = {"id_card": re.compile(r"\d{17}[\dXx]"),"bank_card": re.compile(r"\d{16,19}"),"phone": re.compile(r"1[3-9]\d{9}")}# 危险操作白名单(仅允许特定角色调用)self.dangerous_functions = {"transfer_money": ["admin", "vip_user"],"query_all_orders": ["admin"]}def validate_permission(self, function_name: str, token: str) -> bool:"""验证用户是否有权调用函数"""try:# 解析JWT令牌获取用户角色payload = jwt.decode(token, self.secret_key, algorithms=["HS256"])user_role = payload.get("role", "guest")# 非危险函数直接通过if function_name not in self.dangerous_functions:return True# 检查用户角色是否在白名单中return user_role in self.dangerous_functions[function_name]except Exception:return Falsedef sanitize_parameters(self, params: Dict[str, str]) -> Dict[str, str]:"""清洗参数,防止注入攻击"""sanitized = {}for key, value in params.items():# 过滤SQL注入关键字if isinstance(value, str):sanitized_value = re.sub(r"['\";\\]|(union|select|drop)\s+", "", value, flags=re.IGNORECASE)sanitized[key] = sanitized_valueelse:sanitized[key] = valuereturn sanitizeddef redact_sensitive_data(self, response: str) -> str:"""脱敏返回结果中的敏感信息"""redacted = responsefor name, pattern in self.sensitive_patterns.items():# 身份证号保留前6后4位,银行卡号保留后4位if name == "id_card":redacted = pattern.sub(r"\g<0>[0:6]********\g<0>[-4:]", redacted)elif name == "bank_card":redacted = pattern.sub(r"************\g<0>[-4:]", redacted)elif name == "phone":redacted = pattern.sub(r"\g<0>[0:3]****\g<0>[-4:]", redacted)return redacted安全增强措施:基于RBAC的细粒度权限控制(如"查询订单"需用户ID与订单归属一致)参数校验沙箱:将参数放入隔离环境测试,验证无恶意行为后再执行审计日志区块链存证:关键操作日志上链,确保不可篡改(金融场景必需)动态威胁情报:实时更新攻击特征库,拦截新型注入攻击(4)多工具协同规划系统针对复杂任务,需构建任务规划与状态管理能力:class TaskPlanner:def __init__(self, tool_registry):self.tool_registry = tool_registry # 工具注册表self.task_queue = [] # 待执行的工具调用队列self.task_context = {} # 任务上下文(存储中间结果)def plan(self, user_request: str) -> None:"""将用户请求分解为工具调用序列"""# 1. 解析用户意图和子任务subtasks = self._parse_subtasks(user_request)# 2. 为每个子任务匹配工具并确定依赖关系for subtask in subtasks:tool = self._match_tool(subtask["intent"])dependencies = self._find_dependencies(subtask, self.task_context)self.task_queue.append({"tool": tool["name"],"parameters": subtask["parameters"],"dependencies": dependencies,"status": "pending"})async def execute(self) -> str:"""执行任务队列,处理依赖关系"""while self.task_queue:# 找到所有可执行的任务(依赖已满足)executable_tasks = [t for t in self.task_queueif t["status"] == "pending"and all(self.task_context.get(d) is not None for d in t["dependencies"])]if not executable_tasks:# 检查是否有无法满足的依赖missing = [t for t in self.task_queue if t["status"] == "pending"]return f"无法完成任务:缺少依赖 {missing[0]['dependencies']}"# 并发执行可执行任务for task in executable_tasks:# 填充依赖参数resolved_params = self._resolve_parameters(task, self.task_context)# 调用工具result = await self.tool_registry.invoke(task["tool"], resolved_params)# 更新上下文和任务状态self.task_context[task["tool"]] = resulttask["status"] = "completed"# 整合所有结果生成最终回答return self._integrate_results(self.task_context)# 其他辅助方法:子任务解析、工具匹配、结果整合等协同优化点:基于历史执行数据的任务排序(如先调用响应快的工具)动态依赖调整:某工具调用失败后,自动寻找替代工具重新规划资源预算控制:为复杂任务设置最大工具调用次数,避免资源浪费3. 工程化落地建议在实际落地Function Calling系统时,需结合业务场景选择合适的解决方案:中小规模应用:优先使用成熟框架(如LangChain的Agent、Spring AI)的内置容错机制,聚焦核心业务逻辑大规模企业应用:建议构建分层架构,将参数处理、错误处理、安全防护拆分为独立服务,通过API网关协同关键业务场景:实施混沌工程测试(如随机注入API超时、参数错误),验证系统鲁棒性某电商平台的实践表明,通过上述方案优化后,Function Calling的调用成功率从72%提升至95%,安全事件发生率下降至0.03%,充分验证了这些解决方案的有效性。Function Calling的挑战本质上是"AI的灵活性"与"系统的确定性"之间的平衡问题。随着大模型能力的提升和工程实践的深入,这些挑战将逐步被攻克,推动AI从"对话助手"真正进化为"全能协作伙伴"。技术演进:从FC到MCP的范式革命1. 技术代际对比维度 Function Calling MCP(Model Context Protocol)交互主体 LLM→工具 多模型联邦协作数据形态 JSON参数 结构化上下文协作模式 中心化调度 去中心化网状2. 未来趋势动态注册:运行时添加新工具(如新增快递查询接口)多模态支持:直接处理图片/音频等原生数据自愈机制:自动修正SQL语法错误并重试动态联邦学习:多个Function Calling系统协同进化因果推理增强:理解"如果…则…"类复杂指令结语:AI协作的新范式Function Calling不仅是技术突破,更是人机协作方式的革命。当大模型学会"摇人办事",我们正迈向这样的未来:每个普通人都能通过自然语言,调动企业级系统资源。正如DeepSeek团队在实践中所说:“这不是简单的API调用,而是构建智能体的’瑞士军刀’”。如何从零学会大模型?小白&程序员都能跟上的入门到进阶指南当AI开始重构各行各业,你或许听过“岗位会被取代”的焦虑,但更关键的真相是:技术迭代中,“效率差”才是竞争力的核心——新岗位的生产效率远高于被替代岗位,整个社会的机会其实在增加。但对个人而言,只有一句话算数:“先掌握大模型的人,永远比后掌握的人,多一次职业跃迁的机会。”回顾计算机、互联网、移动互联网的浪潮,每一次技术革命的初期,率先拥抱新技术的人,都提前拿到了“职场快车道”的门票。我在一线科技企业深耕12年,见过太多这样的案例:3年前主动学大模型的同事,如今要么成为团队技术负责人,要么薪资翻了2-3倍。———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/l01011_/article/details/153248425
-
以为夏日漫长, 却忽而已秋,晚风凉凉,秋意初显PaaS生态宠粉福利又双叒叕来咯给你一整个惊喜和仪式感,与夏末余热告别吧登录四个开发平台,即可获得抽奖机会1次,100%中奖悄悄告诉你,奖品池大换新,一起解锁吧 一、活动时间2025年8月27日-8月29日二、活动流程登录4个平台 → 首页截图 → 发给活动助手 → 参与抽奖三、活动方式第1步:活动期间,登录PaaS生态大家族4个产品的用户,凭登录截图联系活动助手,即可参与抽奖活动(注意:截图需包含华为云账号)。①产品一:FunctionGraphFunctionGraph是基于事件驱动的函数托管的计算服务,使用FunctionGraph函数,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行,助力开发者快速上线各类应用。登录网址:cid:link_0②产品二:CodeArts 华为云软件开发生产线CodeArts是一站式、全流程、安全可信的云原生DevSecOps平台,覆盖需求、开发、测试、部署、运维等软件交付全生命周期环节,为开发者打造全云化研发体验。登录网址:cid:link_3, ③产品三:CodeArts IDE 华为云CodeArts IDE Online是轻量级WebIDE,通过浏览器即可实现环境快速获取和环境访问,完成编码、构建、调试、运行、访问代码仓库和命令执行等工作,支持第三方业务集成,内置插件市场支持插件扩展。登录网址:cid:link_2 ④产品四:Astro Zero Astro 低代码平台是华为云自主创新的全场景低代码平台,其中的Astro轻应用,通过简单拖拽配置完成应用搭建,轻松构建专业级应用,创新随心所欲,敏捷超乎想象,为企业提供低门槛、高效率的数字化业务应用生产新模式。登录网址:cid:link_1, 第2步:添加小助手微信号,将所有的首页截图发给其中一位工作人员即可。 第3步:经过小助手确认有效后,即发送链接进行抽奖,100%中奖。四、奖品展示苏泊尔保温杯、手机支架、手持电风扇、冰箱贴、熊猫小夜灯、折叠团扇。五、活动须知a.奖品已实物为准,如遇缺货将为您替换同等价值奖品;b.请确保您的用户信息填写准确无误,以便我们及时为您送上精美奖品;c.请确保截图右上角华为云用户名与获奖信息保持一致,即截图、获奖信息与华为云账号保持一致视为一次有效抽奖,否则不予奖品发放;d.奖品将在活动结束后15个工作日内发放,如遇缺货将会替换同等价值奖品;e.如有任何疑问,欢迎随时联系我们的小助手;f.本活动最终解释权归PaaS生态宠粉活动所有。
-
超级记事本-EXCEL用来做个人简单管理系统也不错
-
夏日炎炎,暑气正盛PaaS生态夏日嘉年华带着满满的清爽和诚意来啦登录任意两个以上开发平台,即可获得抽奖机会1次,完成四个额外获得抽奖机会1次!无论是被高温困住脚步的你,还是在空调房里想找点乐子的你,这场夏日限定狂欢都能让你甩掉燥热,收获一整个夏天的好心情! 活动时间2025年7月28日-7月31日活动流程登录2个及以上平台 → 首页截图 → 发给活动助手 → 参与抽奖活动方式第1步:活动期间,登录PaaS生态大家族2个及以上PaaS开发平台的用户,凭登录截图联系活动助手,即可参与抽奖活动。 ①【FunctionGraph平台】FunctionGraph是基于事件驱动的函数托管的计算服务,使用FunctionGraph函数,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行,助力开发者快速上线各类应用。截图需包含华为云账号登录网址:cid:link_0 ②【Astro Zero平台】Astro 低代码平台是华为云自主创新的全场景低代码平台,其中的Astro轻应用,通过简单拖拽配置完成应用搭建,轻松构建专业级应用,创新随心所欲,敏捷超乎想象,为企业提供低门槛、高效率的数字化业务应用生产新模式。截图需包含华为云账号登录网址:cid:link_1, ③【CodeArts平台】华为云软件开发生产线CodeArts是一站式、全流程、安全可信的云原生DevSecOps平台,覆盖需求、开发、测试、部署、运维等软件交付全生命周期环节,为开发者打造全云化研发体验。截图需包含华为云账号登录网址:cid:link_3, ④【CodeArts IDE平台】华为云CodeArts IDE Online是轻量级WebIDE,通过浏览器即可实现环境快速获取和环境访问,完成编码、构建、调试、运行、访问代码仓库和命令执行等工作,支持第三方业务集成,内置插件市场支持插件扩展。截图需包含华为云账号登录网址:cid:link_2 第2步:添加小助手微信号,将所有的首页截图发给其中一位工作人员即可。 第3步:经过小助手确认有效后,即发送链接进行抽奖。 登录任意两大开发平台,即可获得抽奖机会1次; 完成四大开发平台登录并截图,额外获得1次抽奖机会; 当用户获得 2 次抽奖机会且两次抽奖均获奖时,可从两次抽中的礼品中选择其一,另一未选择的礼品自动失效;若两次抽奖中仅有一次获奖,则获得该次抽中的礼品;若两次均未获奖,则无礼品。奖品展示华为智能跳绳 8个云宝公仔 50个便携茶具 10个U型枕 6个数据线 30个马克杯 14个*奖品已实物为准,如遇缺货将替换同等价值礼品。活动须知请确保您的用户信息填写准确无误,以便我们及时为您送上精美奖品。请确保截图右上角华为云用户名与获奖信息保持一致,即截图、获奖信息与华为云账号保持一致视为一次有效抽奖,否则不予奖品发放。奖品将在活动结束后15个工作日内发放,如遇缺货将会替换同等价值奖品。如有任何疑问,欢迎随时联系我们的小助手。本活动最终解释权归PaaS生态夏日嘉年华活动所有。特别注意:用户参与活动产品截图中的华为云账号需与参与抽奖的华为云账号一致,否则获奖信息无效。
-
友好性开发者招募活动获奖名单如下:代金券将发放到填写问卷的华为云账号中账号姓名奖项hw41654141二等奖hw026853070二等奖huqi88二等奖hid_xt9_d1tmps0o6uv二等奖hid_q4h4b1qj5jbw1zc二等奖hid_i8imcfonfr8b82p二等奖hid_a_5e13tklt4bcd3二等奖GT-2504_92820634二等奖CCIHWY参与奖 了解友好性开发者招募活动为让文档内容更精准贴合实际场景、更全面覆盖使用需求,我们特发起本次友好开发者招募活动。无论你是熟悉业务的技术达人,还是刚接触产品的新手用户,只要你有想法、有经验,都欢迎加入进来 —— 分享你的使用心得、补充未覆盖的场景细节、提出内容优化建议。一旦您的建议经过专家评审团的认可与采纳,将有以下三个激励:1、实物激励: 根据反馈数量和质量设置月度最佳实物激励 有机会获得华为云资源(代金券)或HDC、HC大会门票2、荣誉激励: 邀请优秀开发者参与华为开发者大会、技术沙龙分享,扩大个人知名度3、资源与机会激励: 参与"扫地僧见面会"深度交流 推荐华为云合作伙伴计划,获得商业化项目推荐参与者不仅有机会获得每月活动礼品,还有可能被评为年度内容贡献官,享受更多荣誉和奖励,获得更多合作机会。我们期待着与您一起,共同打造更加优质、高效的云服务体验。参与方式第1步:实验前的准备实名登录:(已注册并实名可跳过)华为云账号实名认证,点击这里。(已设置可跳过)登录后设置社区昵称,点我设置。报名填写信息:点击报名填写报名信息,报名成功后我们将在每周三发放50元代金券做实验使用。第2步:开启您的云端体验,分享实践案例完成体验后截图在评论区。任务过程中,遇到控制台或者文档问题并提交问题工单(必须是开发者工单)。完成问卷调查。如有疑问或代金券的问题,请扫码进入企业微信群里沟通。 华为云产品介绍:函数工作流(FunctionGraph)是华为云提供的一款无服务器(Serverless)计算服务,无服务器计算是一种托管服务,服务提供商会实时为你分配充足的资源,您不需要预留专用的服务器或容量。使用FunctionGraph函数,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。 常见应用场景事件驱动类应用通过事件触发服务执行,比如文件上传到存储桶后,自动触发函数压缩图片、转换视频编码;实时处理数据流并存储。可灵活扩缩容,按处理时间收费,减少闲置成本。Web类应用结合云服务搭建高可用的 Web / 移动应用后端,例如小程序后端、聊天机器人接口。用户访问量激增时自动扩容,仅按函数运行时间计费,无需维护服务器集群。AI类应用可用于托管Stable Diffusion、MCP Server等热门 AI 应用,通过 API 网关构建稳定的对外服务通道。自动弹性分配计算资源,确保高效响应;计费方式按实际调用次数收取,开发者无需操心服务器运维,可专注投入业务逻辑的研发。 场景&任务说明目标:使用函数工作流FunctionGraph构建一个轻量化定时器,可实时返回距离指定时间的倒计时。 任务操作步骤:在函数工作流控制台创建一个新函数。编写用于计算并返回距离指定目标时间倒计时的函数代码。为函数创建APIG专享版触发器,通过浏览器访问调用URL获取倒计时信息。完成任务所需资源与示例代码:APIG专享版实例(代金券在报名链接填写后,每周三统一发放) APIG专享版触发器Python函数示例代码任务完成标准:成功在函数工作流中创建包含指定代码的函数,配置APIG专享版触发器并完成部署,访问 URL 后能正确显示当前时间、目标时间以及距离目标时间的倒计时。 其他说明: l 请您在操作过程中查阅华为云函数工作流FunctionGraph的帮助文档。l 在操作过程中,若您在产品控制台使用或查阅帮助文档时,遇到流程断点、内容难以理解等情况,请及时记录相关信息并在后续问卷中反馈,我们将对您提出的问题进行分析并进行针对性优化。TIPS: APIG专享版实例按小时收费,请注意在任务完成后及时删除资源,避免持续扣费。活动流程投稿时间:2025年7月16日-8月16日联合评审:2025年8月17日-8月26日奖项公示:2025年8月26-28日奖品发放:获奖名单公布后5个工作日内寄出评奖规则届时将有华为技术专家团参与评审,主要按照以下维度评分:评分维度分值释义分值阶梯总分值任务完成度对发布的场景&任务完成情况0、未完成任务1、根据文档要求完成任务,并且输出正确结果0/11问题工单反馈任务过程中,遇到控制台或者文档问题并提交问题工单(必须是开发者工单,文档难以理解,步骤不清晰均可反馈)0、问题未采纳1、问题描述清晰(如附带截图、操作路径、错误信息等),并且被采纳2、反馈问题、同时被产品部专家识别为高价值需求0/1/10可多次反馈,分数叠加问卷调查问卷调查完成情况0、未完成问卷调查1、完成问卷调查0/11奖项设置奖项设置名额最高限评选条件奖品设置一等奖5按要求完成任务、填写问卷,工单反馈被评为高价值需求开发者定制双肩包+面值3000元代金券二等奖20按要求完成任务、填写问卷、工单反馈总积分排名前20名开发者定制斜挎包+面值1000元代金券参与奖20按要求完成任务、填写问卷、工单反馈随机抽取20名开发者定制大号渔夫帽+面值300元代金券 代金券及周边礼物发放对象为:已完成实名认证的华为云用户。发放到填写报名问卷的账号及收货地址中,所有奖项只可获得一次,不可重复获奖。 重要说明 1、审核通过被采纳的开发者,将在下月初进行获奖名单公布和奖励发放,届时会有站内信通知,请及时关注并填写快递信息,过期未核对或填写视为放弃该期奖品。2、对于持续反馈高质量问题的开发者,每年度末还有年度贡献大礼包送上。特别声明:华为云有权根据自身运营安排,自主决定和调整本活动的具体规则,具体活动规则以活动页公布规则为准。相关规则一经公布即产生效力,您应当予以遵守。如您不认同以上规则,请谨慎参与本次活动。
-
📰 案例概览🚀 背景与简介华为开发者空间深度整合昇腾AI、鸿蒙、鲲鹏等根技术,开发者空间在HDC2025上迎来全面升级,新上线开发平台,集成了 AI原生应用引擎、AI Notebook、FunctionGraph云函数、Astro低代码四大核心能力,实现算力、模型、平台、应用层全栈优化,助力开发者高效完成编码→调测全流程,打造智能化开发体验。⚡️ AI Agent应用开发核心路径通过华为开发者空间开发平台提供的云函数(FunctionGraph)、MCP 构建、AI 原生应用引擎完成一站式 AI Agent 应用开发:创建云函数,完成 Serverless 部署——基于华为云提供的 FunctionGraph(基于 Serverless 技术)服务实现业务函数的部署构建和发布 MCP Server——基于华为开发者空间开发平台提供的模板快速构建和发布 MCP ServerAI Agent 应用开发和发布——基于 AI 原生应用引擎提供的可视化界面快速实现 AI Agent 应用的开发和发布🎯 案例选择使用华为开发者空间-开发平台,通过开发平台提供的云函数、AI Agent能力实现We码会议助手从MCP Server部署到创建AI会议Agent,再到发布使用AI 会议Agent,最后在浏览器中操作使用该AI会议Agent,实现端到端自动化会议创建等操作。🥏 案例流程🕹️ 流程说明:华为开发者空间-开发平台创建云函数,部署MCP Server代码;华为开发者空间-开发平台创建MCP;华为开发者空间-开发平台创建AI 会议Agent;发布体验AI会议Agent,成功创建WeLink会议并发送会议通知。✍️案例实操快速入门:使用MCP资产快速构建AI Agent应用 👈️👈️👈️ 原文点这里1. 华为开发者空间-开发平台安装预置的MCP;2. 构建AI Agent应用,添加安装好的MCP;3. 发布AI Agent应用并体验添加的MCP能力。通过开发平台AI原生应用引擎中提供的MCP资产和预置的的大模型,快速便捷地完成饮食推荐和12306车票助手Agent的构建和发布,轻松get华为开发者空间-开发平台中AI Agent工具的使用技巧。接下来趁热打铁,使用华为开发者空间-开发平台构建一个WeLink会议助手。实战演练:构建WeLink会议助手 👈️👈️👈️ 原文点这里1. 创建云函数部署MCP Server代码,创建触发器,生成调用URL;2. 华为开发者空间-开发平台创建MCP,以SSE的安装方式,配置云函数生成的调用URL;3. 华为开发者空间-开发平台创建AI 会议Agent,配置大模型和MCP;4. 发布体验AI会议Agent,创建WeLink会议,WeLink成功收到会议通知!!!🎉 案例最终效果
-
【华为开发者空间开发平台】产品体验官活动获奖名单如下:一、有效建议奖:昵称建议分值奖项礼品yd_2846377506.9有效建议奖第一名1000元开发者定制礼品banjin4.4有效建议奖第二名800元开发者定制礼品胡琦2.1有效建议奖第三名500元开发者定制礼品二、优质建议奖:昵称礼品yd_284637750100-200元开发者定制礼品banjin100-200元开发者定制礼品胡琦100-200元开发者定制礼品小草飞上天100-200元开发者定制礼品神一样的老师100-200元开发者定制礼品给无眠点压力100-200元开发者定制礼品yd_70527782100-200元开发者定制礼品yd_269585276100-200元开发者定制礼品yd_238822659100-200元开发者定制礼品cxw100-200元开发者定制礼品andyleung100-200元开发者定制礼品 恭喜以上11名获奖用户,请获奖用户通过以下问卷反馈奖品收件信息(9月3日前反馈有效),感谢大家对云声平台的关注和支持~华为开发者空间全新升级,开发平台重磅上线。此次开发平台集成了AI原生应用引擎、FunctionGraph云函数、Astro低代码、云开发环境能力,在算力、模型、平台和应用层都进行了大升级。基于这些全新特性,企业开发者可以在开发者空间开通大模型服务、部署MCP Server、创建Agent、可视化实现业务需求,从而快速开发上线一个企业级 AI 智能应用,让华为云和根生态技术的能量触达到每位开发者的指尖!大家赶快来体验吧,体验完后提交开发者空间优化建议,还可以领取开发者礼包,包括但不限于华为耳机、手环、鼠标、云宝等好礼,快叫上小伙伴一起提建议吧~ 【实践项目】体验项目项目名称难度系数功能体验开发平台:AI Agent/开发平台:低代码应用/开发平台:云函数 /开发平台:云开发环境/案例体验基于华为开发者空间Astro低代码应用平台,构建业务用户登录后台开发★★★★基于华为开发者空间Astro低代码应用平台,构建业务用户登录页面前台开发★★★★基于华为开发者空间开发平台 MCP资产快速构建AI Agent应用★★★基于华为开发者空间开发平台构建We码会议助手★★★★开发者空间 - 云开发环境使用指导 ★★★本地Xshell基于华为开发者空间云开发环境完成上传下载 ★★★详细信息请见“开发平台”,案例中心。 【活动时间】2025年7月1日-7月30日 【参与方式】01 体验开发者空间开发平台 》 02 去云声平台提建议 》 03 建议评估公示 》 04 获奖公示(活动结束后两周内) ps:建议标题需要以“开发者空间体验官”开头 【奖项设置】奖项设置评选条件获奖名额激励礼品有效建议奖1、有效建议数量不少于2条,有效建议由内部技术专家评审得出2、建议内容需针对上述实践项目3、有效建议中有不低于一条是关于功能体验的3名积分榜第1名:1000元礼品/人积分榜第2名:800元礼品/人积分榜第3名:500元礼品/人优质建议奖1、有效建议不少于2条,由内部技术专家评审选出10名每人100-200元开发者定制礼品【活动说明】1、建议预审通过即为有效建议,其中1条有效功能类建议为1分,1条有效体验类建议为0.3分,1条有效Bug类建议0.5分;有效建议奖与优质建议奖可叠加2、建议提交时需要在标题中以“【开发者空间体验官】”为建议标题开头,比如【开发者空间体验官】开发者空间增加XX/优化XX/导入XX等3、建议内容仅针对以上实践项目中“开发平台功能体验+开发平台案例体验”涉及的云产品,非以上实践项目涉及产品建议内容不参与此活动4、优质建议要求建议对云产品功能及优化改进有重要作用,优先从已被采纳的建议的选择;建议内容需要表述清晰,有明确的建议方案,最好有操作截图或链接等能进一步详细描述;高价值建议数量不限,且与有效建议奖可叠加,每位用户每月最多可获得一次。5、注意事项1)若出现积分相同且排名一致的情况,结合已实现和已采纳建议情况,由内部技术专家选出价值更高的建议用户给予奖励2)同一用户在同一页面(文档)提出的同一类用户体验问题(包括但不限于错别字、语句不通顺、视觉体验等),在通过审核后仅算作一条有效建议数3)若发现代他人提交优化建议,此建议分值只取原分值30%;若发现2次及以上重复提交他人建议,或3次及以上重复提交体验类相关建议进行恶意刷量(包括但不限于错别字、语句不通顺、视觉体验等),取消本人活动参与资格;在活动截止日前进行大量刷屏提交建议,或者重复提交同类型体验建议,直接取消活动参与资格4)以上兑换礼品均为仓库现有实物礼品,有货的情况下优先满足,其中1-3名可优先选择华为自营品牌电子礼品,礼品价值不能超过商品原价,无货则不可以指定,如遇商品缺货,将随机换成其他等价值礼品发放5)此【开发者空间体验官】与云声月度例行激励活动不叠加,若标题无【开发者空间体验官】标记,则有效建议默认参与月度例行激励
-
bug提交不上 ,报错
-
摘要:Serverless可以看作是一种云计算服务模型,它允许开发者在不需要管理服务器的情况下通过事件驱动的方式运行应用代码。软件架构的发展从原先的单体架构到近十几年的微服务架构,再到现在新兴的Serverless架构。单体架构通常把应用的逻辑和功能耦合在一起,部署在BMS裸金属机或VM上,耦合模式使得一些通用功能或通用逻辑无法灵活复用,经常出现重复造轮子的现象,架构整体上是相对封闭的。微服务时代对应用做了拆分,组件服务化,诞生了一系列优秀的设计原则,如接口标准化、CS/CD自动化,使得应用初步具备了弹性和自动容错的能力。 在Serverless的框架下,应用的粒度更细,例如以函数为粒度进行管理和开发迭代,应用通过事件驱动的方式触发运行。 Serverless可以看作是一种云计算服务模型,它允许开发者在不需要管理服务器的情况下通过事件驱动的方式运行应用代码,主要解决资源托管、调度、运维管理等一系列平台型问题,可以看作是DevOps的进一步延伸。 从传统微服务向Serverless演进的过程中,资源管理的边界逐步上移。在微服务时代,虚机/容器时代,开发者发布应用,需要管理虚拟化层或更向上的运行时细节;而从IaaS到Serverless,抽象度越来越高,底层细节的屏蔽度也越来越高,对于开发者而言,云的易用性性也在增强,门槛在降低。 Serverless将是下一代的云计算范式,得益于它在按因付费、自动弹性、免运维等方面的显著优势。通用全场景的Serverless能够帮助企业解决更广泛的计算和运行交付的问题。实际上,Serverless也在过去几年的发展中,逐步增长成为下一代云上交付、运行与交付标准的框架。Serverless的特点是按用计费、按需计费,如果终端没有流量,平台会自动回收应用资源,不需要为空闲时间付费,需要再次使用时,通过重新启动的方式再次加载。 冷启动或进一步延伸到高并发下的弹性问题,用户侧应用托管到Serverless平台上,如果频繁经历冷启动,应用的QoS下降,最直观体现在终端用户页面的Web 应用响应很慢,有超时的风险,导致用户侧体验下降。对云平台侧,冷启动和弹性关系着资源利用率,例如多租户进行混合部署时,预热效率的提升问题,以及平台多用户多应用流量并发上涨时的弹性问题。因此,冷启动和弹性问题是Serverless领域广泛关注的技术重点。 为了解决上述问题,华为云Serverless做了一系列的探索。 链路加速:通过高性能解压缩转换与共享内存加速技术,能够把性能提升2-11倍;通过公共依赖包分离、预解压与动态按需 link 技术,加速应用冷启动 5- 10 倍。池化预热、弹性调度:通过资源池化预热、分层预加载与弹性水位控制,实现毫秒级 (< 10 ms) 弹性。 智能预热:以智能、分层资源预热实现负载感知,自适应池化水位控制;采用负载、资源压力预测框架,实现良好扩展性、数据驱动、以及工程师经验的规则注入。 预留实例智能推荐策略:通过建模的方式推算给定时间段大概需要的实例数量,提供高性能、平衡、低成本三种预留实例配置策略。未来,边缘、中间件、托管、大数据将全面Serverless化,最底层是Serverless的BaaS的资源、资源池的自动化管理和快速弹性的能力。在底座之上,是跟业务相关的函数计算、容器和托管,三种共存。Serverless容器将下沉到Serverless底座,只需要对底座资源进行管理。在边缘端,传统的容器或是虚机可能无法支撑,采用Serverless + WASM是更可行的方案。
-
[2025-05-21 15:18:56] [error] 函数gn_tczx_all下载失败。错误信息:"retry"
-
使用camera_recive_sample进行数据接受,并将接受到的H265数据通过rtsp推流,数据可以正常发送,在建立链接的过程中显示SETUP建立失败。通过监听接口,发现8554端口可以正常监听。监听8554端口的日志如下:问题:为什么会SETUP建立失败?
-
2025华为软件精英挑战赛可以跨赛区组队吗
-
华为云开发者日·北京站来啦!参加“基于FunctionGraph实现Gif动图制作应用开发”体验项目提出你的建议或使用体验有机会获得开发者盲盒礼包惊喜不容错过,快叫上小伙伴一起来参加吧~【体验项目】基于FunctionGraph实现Gif动图制作应用开发【活动时间】2024年12月23日-12月31日【参与方式】直接在此活动帖下方回帖提建议/提建议即可比如对产品功能的改进建议、对活动流程的感想、对现场活动的感悟等等PS:不要少于30字哦~【获奖规则】奖项设置有效回复楼层评选条件获奖名额激励礼品优质建议奖20对产品功能有改进价值的建议1名开发者盲盒礼品价值50-100元积极反馈奖20优质建议奖轮空的情况下进行抽取每满20层抽取1名开发者盲盒礼品价值50元【活动规则】1、本帖的回帖建议不少于30字,仅限于对“基于FunctionGraph实现Gif动图制作应用开发”体验项目,其他项目建议不参与此次活动,否则将视为无效内容。2、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况;以上奖品均为实物奖品,具体发放视出库情况而定;3、活动预计于结束后七天内完成奖项公示,并于结束后15个工作日内完成邮寄。【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
-
函数工作流 FunctionGraph: 一项基于事件驱动的函数托管计算服务,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行使用函数工作流部署画图工具Excalidrawhttps://bbs.huaweicloud.com/blogs/436646这个博客里 OBS 的代码里面是包含了页面样式吗?但是定义里又说只需编写业务代码?给我的感觉好像是只需要写后端接口,不需要写前端代码就能生成一个网页?不太可能吧,没理解,以这个 Excalidraw 为例,谁来给我讲讲
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签