微信扫码
与创始人交个朋友
我要投稿
云布道师‣ 周记
微软云布道师团队致力于向软件生态系统中的开发人员和其他人推广领先技术,进一步提高技术教育以及使用 Microsoft 云 + AI 平台的熟练程度。
微软高级云技术布道师卢建晖老师,将通过「云布道师 ‣ 周记」专栏,为您带来 AI +Data 领域新鲜的技术加餐。
围绕着⼈⼯智能,⼈类在不同的⾏业,不同的应⽤场景进⾏了很多的尝试。随着大语言模型(LLMs)的出现,我们从传统的流程预定义加上语义匹配的聊天机器⼈过渡到通过⾃然语⾔和 大语言模型交互的 Copilot 应⽤。在过去⼀年多时间,⼤家基于大语言模型主要集中在基础理论上。在 2024 年我们应该会进入到大语言模型的应⽤场景上。我们拥有非常多的论⽂,应⽤框架,以及⼤公司的实践去⽀撑大语言模型应⽤的落地。那我们所谓的⼈⼯智能应⽤最终的形态是如何的?你可以联想到的是编程辅助的 GitHub Copilot,办公场景的 Microsoft 365 Copilot,以及在 Windows 或者必应上的 Microsoft Copilot 等。但想想 Copilot 的应⽤,更多依赖个体通过提⽰词去引导或者修正,并没有很好地做到全智能化的应⽤。在上世纪 80 年代,我们就开始尝试做全智能化的⼯作,智能体(AI Agent)就是⼀个全智能化的最佳实践。
什么是智能体
智能体与所在的场景进⾏交互,接收在应⽤场景的指令或数据,根据该指令或数据决定不同的响应以实现最终的⽬标。智能体不仅具有⼈的思维能⼒,也能模拟⼈的⾏为,它们可以是简单的基于业务流程的系统,也可以像机器学习模型⼀样复杂的体系。智能体都是预先制定的规则或通过机器学习/深度学习训练出来的模型,来配合做出决策,有时候也需要外部控制或监督。
智能体具备的特点
具备规划的能⼒ - 可以基于任务去划分步骤,具备思维链。当有了大语言模型后,可以说智能体的规划能⼒有很⼤增强,对于任务的理解能够更精确。
有记忆能⼒ - 对⾏为和部分逻辑有记忆能⼒,可以存储经验,可以有⾃我反思的能⼒。
有强⼤的⼯具链 - 例如代码执⾏能⼒,搜索能⼒,以及计算能⼒等。可以说有很强的⾏动⼒。
具备感知的能⼒ - 可以基于场景获取如图片、声⾳、温度等信息,从⽽为执⾏提供更好的条件。
实现智能体的技术⽀撑
在大语言模型应⽤中有相当多的应⽤实践。
实现智能体有很多的框架,在之前提及的 Semantic Kernel 或者 Autogen 都可以实现智能体。在 OpenAI 下也新增了 Assitants API 来增强模型在智能体的能⼒。现在 OpenAI 的 Assitants API 开放了代码解释、检索和 function calling 的能⼒。Azure OpenAI Service 的 Assitants API 也即将到来,可以说为智能体应⽤能⼒提供了⾜够的智慧。
有很多⼈更关注应⽤层的框架,时常有⼈去比较 Semantic Kernel 和 Autogen ,毕竟两者都出⾃微软,都有很好的任务或者计划编排能⼒,但总有⼈觉得两者有很多相同之处。
Semantic Kernel vs Autogen
Semantic Kernel 专注在 Copilot 应⽤中,对单个任务进⾏有效的步骤划分,这也是 Semantic Kernel Planner API 的魅⼒之处。⽽ Autogen 更专注智能体的构造上,对完成⽬标进⾏任务划分,把任务分配到不同智能体,每个智能体根据分配的任务进⾏单独或者交互式执⾏。每个智能体的任务背后可以是⼀个流式的任务编排,或者是解决问题的扩展⽅法,或者是对应的提⽰语触发的技能,可以结合 Semantic Kernel 的 plugins 进⾏组织。当我们希望有⼀个稳定的任务输出时,还可以加上 prompt flow 来作出输出评估。
⽤ Semantic Kernel 简单实现智能体
Semantic Kernel 在 Experimantal 库中新增了智能体的⽀持,引入了 AgentBuilder,结合 Assitant API 来完成智能体的⼤脑配置⼯作。⽽对应的规划,记忆以及⼯具就使⽤不同的 plugins 进⾏定义。
var yourAgent = awaitnew AgentBuilder() .WithOpenAIChatCompletion("OpenAI Assitants API","OpenAI Key") .WithInstructions("Your agent instruction")//.FromTemplate(EmbeddedResource.Read("Your agent YAML")) .WithName("Your Agent Name") .WithDescription("Your Agent Desctiption") .WithPlugin("Your Agent Plugins") .BuildAsync();
注意:
1. WithOpenAIChatCompletion 需要⽀持 Assistants API 的 OpenAI / Azure OpenAI Service 的模型(即将发布),现在⽀持的 OpenAI 模型分别有 GPT-3.5 or GPT-4 models。
2. WithInstructions 我们需要给出明确的任务指引,告知智能体的执⾏⽅式,这个就等于⼀个流程,您需要清楚描述,否则准确率会降低。
3. .FromTemplate 也可以通过 Template 进⾏描述任务指引。
4. .WithName 名字是必须的可以让调⽤时更加明确。
5. .WithPlugin 基于智能体完成任务不同的技能和⼯具链,这个和 Semantic Kernel 的内容相对应。
我们代入⼀个简单的场景,希望通过智能体构建⼀个 .NET 的控制台应⽤,并编译和运⾏,要求通过智能体来完成。从这个场景上看,我们需要两个智能体 - ⽣成 .NET CLI 脚本智能体和运⾏ .NET CLI 脚本的智能体。在 Semantic Kernel 中⾄于所需要的规划,记忆以及⼯具我们就使⽤不同的 plugins 进⾏定义。以下是相关结构图。
你可以通过 Semantic Kernel CookBook 获取相关的代码:
https://github.com/microsoft/SemanticKernelCookBook/tree/main/workshop/dotNET/workshop3/dotNETAgent
智能体的应⽤场景
智能体会是大语言模型应⽤的⼀个重要场景,构建智能体应⽤会是 2024 年⼀个重要的技术领域。我们现在在智能体主要有三种形式,如单智能体、多智能体,以及混合智能体三种。
单智能体
在特定任务场景下完成的⼯作,如 GitHub Copilot Chat 下的智能体 workspace 就是⼀个例⼦,基于⽤户需求,完成特定的编程任务。基于⼤模型的能⼒,单智能体可以基于任务执⾏不同的动作,如需求分析、项⽬读取、代码⽣成等。也可以应⽤在智能家居,⽆⼈驾驶当中。
多智能体
这个就是智能体之间进⾏互相交互的⼯作,如上述的 Semantic Kernel 智能体实现就是⼀个例⼦,脚本⽣成的智能体和执⾏脚本你的智能体进⾏互动。多智能体的应⽤场景在协作性强的⼯作有非常⼤的帮助,如软件⾏业开发、智能⽣产、企业管理等。
混合智能体
这是⼈机交互,在同⼀环境下进⾏决策,例如智慧医疗,智慧城市等专业领域都可以利⽤混合智能体完成复杂的专业性⼯作。
现在智能体应⽤还是非常初步,很多企业和个⼈开发者都是在探索阶段,迈出第⼀步会非常关键,希望各位可以多尝试。也希望⼤家可以利⽤ Azure OpenAI Service 构建更多的智能体应⽤。
相关参考
Microsoft Semantic Kernel https://github.com/microsoft/semantickernel
Microsoft Autogen https://github.com/microsoft/autogen
Microsoft Semantic Kernel CookBook https://github.com/microsoft/SemanticKernelCookBook
Pursuit of "wicked smartness" in VS Codehttps://code.visualstudio.com/blogs/2023/11/13/vscodecopilot-smarter
本文作者|卢建晖
微软高级云技术布道师
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-04-12
2024-05-28
2024-05-14
2024-04-25
2024-07-18
2024-04-26
2024-05-06
2024-12-22
2024-12-21
2024-12-21
2024-12-21
2024-12-21
2024-12-20
2024-12-20
2024-12-19