Spiga

程序员的AI体验(九):Semantic Kernel 流程框架

2025-06-07 15:58:26

摘要:一、流程框架设计理念 探索性AI与企业级应用差异:探索性AI高度自主,适合创意生成;企业级应用需确定性、可重复性、可审计性。 流程框架关键转变:从“让AI决定做什么”转变为“让AI高效执行预定义流程”,开发者通过声明式语法控制业务流程。 应用场景与优势:插件数量多时,单纯依靠大语言模型编排函数调用不可靠,流程框架可解决此挑战。 架构基础:事件驱动架构 优势 高度解耦与模块化:每个步骤独立开发、测试和替换,提升系统可维护性。 异步与并发:步骤发布事件后无需等待响应,实现高性能并行处理。 灵活性与可扩展性:修改事件路由规则或增加新步骤即可适应业务变更。 云原生环境支持 支持本地与分布式部署:流程框架支持本地开发环境及Dapr、Orleans等分布式云原生环境。 无缝迁移与扩展:本地定义的流程可无缝迁移到生产环境,无需修改核心业务逻辑。 核心概念详解 流程 定义与构成:流程是顶层容器,由步骤和事件路由规则构成,代表端到端业务目标。 生命周期与状态:每个流程实例有独立生命周期和状态。 步骤 基本执行单元:步骤是流程的原子性活动,封装具体业务逻辑,遵循单一职责原则。 内核函数:步骤类中用[KernelFunction]标记的方法,可被流程框架调用。 事件 信息传递与触发载体:事件由特定类表示,包含Id和Data属性,用于步骤间传递信息。 事件路由:事件路由基于Id,决定事件的流向。 上下文 运行时关键组件:上下文对象提供运行时信息和提交事件的方法,实现复杂流程控制逻辑。 SK的流程框架还在预发布版本,最终版代码可能会有偏差,但不影响我们学习。 二、构建第一个线性流程 1. 环境准备与项目设置 创建.NET控制台应用程序项目,安装Semantic Kernel流程框架核心依赖包。 Process.Core是核心库 Process.LocalRuntime提供本地运行组件。 PropertyGroup NoWarnSKEXP0080/NoWarn !-- 关闭警告 -- /PropertyGroup ItemGroup PackageReference Include=Microsoft.Extensions.Configuration Version=9.0.8 / …… 阅读全文

程序员的AI体验(八):Semantic Kernel 架构

2025-05-31 10:54:33

摘要:一、Semantic Kernel概述 1. 与LangChain对比 设计理念:LangChain以社区驱动,快速迭代,适合原型验证;Semantic Kernel则以企业级应用为目标,注重稳定性与可维护性。 核心概念:提供LangChain与Semantic Kernel的核心概念映射表,帮助开发者快速理解两者差异。 适用场景:LangChain适合快速开发和试验,Semantic Kernel更适合企业级应用,强调与现有系统的深度融合。 LangChain概念 Semantic Kernel对应概念 备注说明 Agent Agent(Planner) / Kernel Agent类似于一个高级的Agent,能根据用户目标自动生成执行计划(Plan)。而Kernel(内核)则扮演了AgentExecutor角色,是负责实际执行这个计划的核心引擎。 Tool Plugin(插件) / KernelFunction(内核函数) Plugin是SK中与tool对等的概念,代表一个能力的集合。SK的一个重要设计是它明确地将能力分成两种 Chain 手动调用链 LangChain的Chain是一种预先定义好的、线性的调用序列。在SK中,我们可以通过编写代码来手动实现类似的函数调用链,这种确定性的编排方式是理解后续自动化规划器工作原理的基础。 Memory Memory(记忆) 这个概念在两个框架中基本一致,都用于在多次交互中保持状态和上下午,从而实现连贯的对话或复杂的任务处理。 PromptTemplate 提示模版 SK将提示模板的工程化提到了一个新的高度。与LangChain中通常的代码里定义的字符串模板不同,SK推荐将提示模版做为独立的文件进行管理,并配有专门的配置文件,使其成为一个可复用、可配置的软件工件。 2. 架构概览 内核:内核是Semantic Kernel的核心,负责接收请求、编排插件、管理服务和执行任务。 插件:插件是功能扩展的核心机制,包含语义函数和原生函数,实现AI能力与传统代码的融合。 记忆:记忆模块使AI应用能够保持上下文,支持连贯对话和复杂任务处理。 3. 搭建Semantic Kernel应用 创建一个.NET项目,如控制台应用程序,并添加Semantic Kernel的NuGet包。 …… 阅读全文

程序员的AI体验(七):LangChain RAG

2025-05-24 17:36:12

摘要:一、RAG基本概念 RAG定义与价值:RAG(检索增强生成)是一种AI技术框架,通过检索外部知识源来增强大语言模型的知识储备和生成能力,解决模型知识过时和内容幻觉问题,提升回答的准确性和可信度。 RAG工作原理:RAG工作流分为索引阶段和检索与生成阶段。索引阶段将数据处理成可检索格式,存储于向量数据库;检索与生成阶段实时响应用户查询,检索相关文本块并生成答案。 RAG应用场景:RAG适用于企业知识管理、智能客服、法律咨询等专业领域,能够针对特定信息源回答问题,发挥巨大价值。 构建基础RAG流程: 索引阶段:线下数据准备过程 加载 分割 嵌入 存储 检索和生成阶段:线上阶段 检索 生成 开发难题 繁杂的数据接入 复杂的文本处理 多样的模型与接口 专业的向量存储 粘合所有环节 LangChain的价值 从零开发RAG应用面临数据接入、文本处理、模型接口、向量存储和环节粘合等诸多难题,LangChain通过模块化架构简化了构建过程。 LangChain由多个独立包组成,如langchain-core提供核心接口和数据类型,langchain-community集成第三方服务,langchain-openai针对特定模型提供商集成。 LangChain具有流式处理、异步与并行执行、可观察性与调试、标准化接口等核心优势,让构建复杂AI应用变得简单高效。 二、文档加载 1. LCEL语言 LCEL(LangChain表达式语言)是一种声明式编程范式,用于将LangChain组件组合在一起,通过管道操作符|实现数据流的高效表达。 LCEL支持流式处理、异步与并行执行、可观察性与调试、标准化接口,为构建高性能AI应用提供强大支持。 2. 文档加载器 文档加载器是RAG流程的入口,负责将各种数据源加载为LangChain能够处理的文档对象,其质量直接影响整个系统的性能。 文档对象包含page_content和metadata两个核心属性,分别存储文本内容和相关元数据,元数据对于数据过滤、答案引用和来源追溯至关重要。 from langchain_core.documents import Document doc = Document( page_content=这是一段示例文本内容,它将被用作文档的主要内容。, met…… 阅读全文

程序员的AI体验(六):LangChain 链

2025-05-17 18:43:27

摘要:一、链的概念 定义与作用:链是LangChain中最核心的概念,指将多个模块化组件按特定顺序链接起来,执行多步骤任务的序列,可将复杂任务分解为更小、更易于管理的独立步骤。 核心优势:链在LangChain生态系统中扮演“粘合剂”和“骨架”的角色,连接不同人工智能组件,促成协同工作,简化应用开发过程,提升开发效率。 链的演进 在早期LangChain版本中,链通过继承Chain抽象基类实现,采用命令式的面向对象继承编程模型,存在组合灵活性不足等问题。 LangChain引入了LangChain表达式语言(LCEL),采用声明式的管道操作符|连接组件,具有可组合性、可读性、灵活性、原生支持高级功能和可观察性等优势。 构建链的核心组件 模型:模型是链的核心引擎,包括大型语言模型(LLMs)和聊天模型(Chat Models),负责执行主要的智能任务。 提示模板:提示模板负责构建和格式化模型的输入,将用户输入与预设指令和示例结合,生成完整、结构化的提示。 输出解析器:输出解析器将模型返回的原始输出转换为更结构化、易于处理的格式,是连接非结构化智能与结构化数据的桥梁。 二、构建第一个LLM应用 1. LangChain表达式语言基础 基础链结构:最基础的链结构为提示 | 模型 | 解析器,是所有复杂链条的基础构建单元,体现了与大型语言模型交互的三个基本阶段。 工作原理:详细追踪了从输入到输出的完整数据流动过程,包括提示模板的格式化、模型的推理生成和输出解析器的结构化处理。 2. 从零构建翻译链 import os # 1. 导入所需的核心组件 from dotenv import load_dotenv from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_openai import ChatOpenAI # 从.env 文件加载我们配置的环境变量 load_dotenv() api_base = os.getenv(DASHSCOPE_API_BASE) api_key = os.getenv(DASHSCOPE_API_KEY) # 2. 定义我们…… 阅读全文

程序员的AI体验(五):LangChain 介绍

2025-05-11 18:27:34

摘要:我们先配置一下环境 安装anaconda,具体安装方法查看页面:Python环境Anaconda下载与安装教程(附安装包) 2025最新版详细图文安装教程 - 知乎 清华镜像站:清华大学开源软件镜像站 安装好后创建一个langchain的环境,建议使用python3.10的版本(避免安装插件时冲突),安装langchain相关插件5个 如果插件安装不上,可以打开工具 anaconda prompt conda create -n langchain python=3.10 conda activate langchain conda install -c conda-forge langchain-openai 安装PyCharm,社区版即可,2025.2是最后一个社区版,下载地址 安装方法PyCharm安装教程及基本使用(更新至2024年新版本),教你迈出学习python第一步-CSDN博客 自备一个云ai大模型环境,比如通义千问 通义大模型_AI大模型_一站式大模型推理和部署服务-阿里云 一、LangChain介绍 LangChain是基于大语言模型的应用开发框架,提供工具、组件和接口,让开发者像搭积木一样创建复杂AI应用。 特点 数据感知:能与多种数据源连接,将外部数据作为知识库,弥补大模型数据陈旧、无法实时获取信息等缺陷 代理交互:应用可主动与环境互动,如自动规划行程、总结邮件内容等,增强用户体验和工作效率。 解决痛点:针对大模型内部数据过时、无法联网、Token限制、无法调用API等问题,LangChain提供解决方案。 应用场景 文档摘要应用 智能客服 编程助手 智能私人助理 学习助手 模型支持 LangChain封装了LLM类、Chat类和Embedding类模型,提供标准化接口。 LLM模型:接收文本输入,返回文本输出,无状态,不记交互历史。适用于快速问答、文本摘要、信息提取、代码生成等任务。 Chat类模型:接收消息列表,返回AI消息,支持多轮对话和角色扮演。构建聊天机器人、角色扮演应用、多轮交互任务等。 Embedding类模型:将文本映射为高维向量,用于语义搜索和知识库问答。实现语义搜索,是RAG应用的基石。 与OpenAI、Google、阿里等主流供应商合作,集成多种大模型。 常见参数:temperat…… 阅读全文

程序员的AI体验(四):低代码平台

2025-05-10 21:29:54

摘要:一、Coze空间 1. Coze开发平台优势 界面简洁:Coze界面清爽,隐藏复杂技术细节,让市场运营人员、学生等无编程基础的用户也能轻松使用。 上手容易:用户可快速将想法转化为现实,无需关心底层逻辑和代码实现。 插件丰富:Coze提供上百种功能各异的插件,涵盖读新闻、查天气、订机票等,不断增长。 支持用户将私有API封装成自定义插件,拓展智能体应用场景。 知识库功能:用户可上传专业知识文档,如产品手册、业务流程等,让智能体成为领域专家。在垂直领域应用中,知识库功能是满足专业需求的关键。 快速生成智能体:Coze支持无代码生成AI智能体,用户可在短时间内完成智能体原型搭建。简化创建过程,缩短想法与成品之间的距离。 广泛应用场景:Coze不仅适用于客服,还适用于各种基于AI模型的智能问答智能体。能处理简单问询,也能应对多步骤思考、多逻辑判断的复杂对话场景。 数据管理与记忆功能:Coze让智能体记住对话关键信息和用户偏好,避免“金鱼记忆”。智能体可主动服务,如定时推送新闻、规划周末等,提升用户体验。 流量优势:Coze背靠字节跳动,作品可通过豆包、飞书等渠道触达亿级用户。对于开发者和创作者而言,流量优势意味着作品有更多展示机会。 2. Agent实现流程 需求分析 收集需求:真正倾听用户需求,了解他们希望Agent实现的功能,避免“自嗨”产品。 定义角色职责:明确Agent系统中各“员工”角色及职责,为后续设计开发提供清晰架构。 建立领域模型:梳理Agent需要打交道的概念及其关系,为实现复杂业务逻辑奠定基础。 优化问题研究:提前识别并研究影响效率和体验的环节,确保产品高效满足用户需求。 可视化需求分析:利用流程图、思维导图等可视化工具,更直观地理解和管理需求。 架构设计 人设模块:定义Agent身份、行为准则和说话风格,为其赋予独特魅力。 记忆模块:存储和管理Agent知识,包括短期记忆和长期记忆,构成“大脑海马体”。 规划模块:制定行动计划,将大任务分解为小步骤,优化执行路径。 行动模块:执行具体操作,如调用API、计算数据等,赋予Agent行动能力。 认知架构:确定各模块之间的对话、信息传递和协同工作方式,决定Agent思维逻辑。 多智能体协作:制定沟通“标准操作规程”,确保不同智能体高效分工协作。 迭代和对话式工作流:通过与Agent对话、测试…… 阅读全文

程序员的AI体验(三):Cursor

2025-05-03 16:35:25

摘要:一、安装Cursor 官网下周window版本,2025-6-5发布了1.0版本 Cursor - The AI Code Editor 设置语言包,跟vscode设置方法一样。(Cursor就是基于VSCode开发的) 设置Cursor 文件---自动保存 文件---首选项---功能---终端:window默认上终端配置文件,选择 git bush 设置Cursor所选的模型:取消自动 配置规则: 总是使用简体中文来进行回复 也可以添加项目规则,如 -总是使用uv作为Python环境和包管理工具 -总是将wsl+Ubuntu作为开发环境 -所有函数必须团结类型注释 -函数名使用snake_case,类名使用PascalCase -所有api都应该遵循restful规范 -注释必须使用简体中文 -总是遵循《代码整洁之道》 -总数遵循《设计原则与设计模式》 定价 Pricing | Cursor - The AI Code Editor 配置linux开发环境 安装wsl:wsl install 安装 uv:curl -LsSf https://astral.sh/uv/install.sh | sh 安装python环境:uv python install --preview 安装pip:sudo apt install python3-pip Cursor里面安装wsl插件 在Cursor左下方的按键就可以连接到wsl子系统了 连接上后在使用 /mnt挂在本机文件夹 二、生成前台代码体验 生成Login前台页面 初学者使用AI生成login页面的提示词 规范化提示词 请在login目录中设计一个响应式、风格美观的登录页面,页面应包含用户名和密码输入框,以及一个登录按钮。 请分别从HTML结构、CSS样式、JavaScript功能三个方面实现,确保用户体验良好,并具备基础的交互逻辑 创建一个标准的HTML登录页面结构,要求如下: -页面居中显示,使用一个主容器; -包含输入字段:用户名(type=username)和密码(type=password) -包含一个提交按钮,用于登录 -所有输入框和按钮放在一个表单form中; -每个输入区域使用语义化标签,适当嵌套和分组,方便样式和交互控制 使用Tailwin…… 阅读全文

程序员的AI体验(二):提示词工程

2025-04-26 18:29:00

摘要:一、提示词定义与重要性 1. 什么是提示词 提示词是输入给AI系统的指令,可以是问题、描述或关键词,目的是引导AI按期望思考或创造,输出所需结果。 提示词的作用:提示词如同打开AI能力之门的钥匙,其质量直接影响AI输出结果的质量,好的提示词能清晰指引AI工作方向,激发其潜能。 提示词与AI的关系:提示词是人类与AI沟通的桥梁,通过不断优化提示词,我们可以更好地理解AI的工作原理,与AI协同工作,共同创造更大价值。 2. 提示词的重要性 对AI输出质量的决定性作用:输入的是垃圾,输出的也是垃圾。优质提示词能引导AI准确把握需求,避免无用信息输出,提升工作效率。 提升AI创新创造能力:高阶提示词可引导AI进行创新创造,突破常规思维。如要求AI设计创意产品,通过特定提示词激发其创新灵感。 提示词促进对AI的理解:通过不断尝试和优化提示词,可了解AI的优势与局限。在提示词优化过程中,可学会与AI协同工作。 二、高质量提示词编写 1. 提示词的常见形式 指令式提示词:直接告诉AI具体要做什么,适用于任务目标明确的情况,如“写一篇关于气候变化的短文”。 问答式提示词:通过提问引导AI思考并回答问题,如“什么是人工智能”,适合获取知识或解答疑问。 填空式提示词:提供句子框架让AI填充内容,如“我最喜欢的动物是( ),因为( )”,有助于获得结构化且有逻辑的回答。 对话式提示词:模拟人与人之间的自然对话,进行多轮交流。例如:“我们好,能跟我聊聊今天的天气吗?”这种形式更适合日常沟通场景。 创意生成式提示词:给予AI更大的发挥空间,鼓励其进行创作。例如:“写一首描绘未来世界的诗。”这种形式常用于文学、艺术等创意领域。 思维链提示词:通过逐步推理的方式引导AI分析问题。例如:“让我们一步步来思考这个问题……”这种形式特别适合解决复杂问题,帮助AI理清思路。 2. 关键要素 明确目标:写提示词的第一步是明确目标,目标越清晰、越具体,AI越容易理解意图并给出精准回应。 提供充分的背景信息:给AI提供足够的背景信息,使其理解更深入,输出更贴合需求,需考虑受众特点、产品卖点、行业术语等。 明确输出要求:清楚告诉AI输出内容的类型、格式、字数限制、内容侧重点、风格和语气等,确保输出符合预期。 3. 提升提示词质量的实用技巧 指令清晰化:使用明确动词开头,用分隔符…… 阅读全文

程序员的AI体验(一):通识基础

2025-04-19 17:23:25

摘要:一、人工智能通识 1. 人工智能的应用场景与定义 日常生活中的AI应用: 手机语音助手利用自然语言处理和语音识别技术,为用户提供便捷服务,如查询信息、设置提醒等。智能家居设备通过语音控制实现家电操作,提升生活便利性。 自动驾驶汽车依靠AI进行环境感知和决策,提高行车安全。金融领域中,机器人投资顾问运用AI分析数据,提供个性化资产管理建议。 专业领域的AI应用 医院利用AI图像识别技术辅助诊断,提高诊断准确率。 制造业借助AI优化生产流程,提高效率和质量。 监控摄像头结合AI技术实现行为监测和犯罪预测,提升社会安全水平。 这些应用展示了AI在不同领域的强大潜力和广泛价值。 人工智能的定义与本质 约翰·麦卡锡将人工智能定义为“实现目标的计算能力”,强调其目标导向性。但目前的AI技术本质上是一种高级统计工具,仅在特定任务上表现出色。 真正的智能涉及意识、情感和创造力,而现有AI缺乏这些特质,只能在预设规则或数据支持下运行,无法像人类一样灵活应对复杂情况。 人工智能的分类 现有的AI大多是“弱人工智能”,只能完成特定任务,如翻译、推荐等。 而“强人工智能”或通用人工智能(AGI)是未来目标,能处理任何任务,目前仍遥不可及。 例如,扫地机器人和聊天机器人虽表现出一定智能,但不具备真正的智能。目前的AI产品和服务只是AGI研发过程中的副产品。 2. 人工智能的发展历程 第一次浪潮:规则驱动 1950s- 1980s,达特茅斯会议提出人工智能概念,开启第一次浪潮。基于逻辑和符号推理,依赖人工编写规则,如早期的专家系统。 这种方式在某些领域取得成就,但局限性明显,难以处理自然语言的歧义性和图像识别的复杂性,且成本高昂、可扩展性差,导致人工智能进入寒冬。 第二次浪潮:统计学习 1990s- 2010s,计算机硬件性能提升和互联网出现推动第二次浪潮。统计学习引入概率和统计方法,让计算机从数据中自动学习模式。 垃圾邮件过滤、语音识别和推荐系统等领域取得显著成果,但依赖人工特征工程,对于复杂任务和场景的处理能力有限,发展仍受限。 第三次浪潮:深度学习 21世纪10年代,深度学习和互联网兴起推动第三次浪潮。深度学习实现端到端学习,自动提取数据特征,取得重大突破,如AlphaGo战胜李世石、ChatGPT引发热潮。 在图像识别、自然语言处理等领域超越人…… 阅读全文

前端提升7:手撸Vue3组件渲染

2025-04-12 23:21:56

摘要:一、实现DOM操作API 1. 构建环境 创建runtime-dom目录,存放dom操作api 创建runtime-core目录,存放允许时虚拟dom操作核心代码 在两个目录中分别构建环境 /packages/runtime-dom/package.json { name: @vue/runtime-dom, module: dist/runtime-dom.esm-bundler.js, unpkg: dist/runtime-dom.global.js, buildOptions: { name: VueRuntimeDOM, formats: [ esm-bundler, cjs, global ] } } /packages/runtime-core/package.json { name: @vue/runtime-core, module: dist/runtime-core.esm-bundler.js, unpkg: dist/runtime-core.global.js, buildOptions: { name: VueRuntimeCore, formats: [ esm-bundler, cjs, global ] } } 2. 定义操作API /packages/runtime-dom/src/nodeOps.ts // dom操作 vue虚拟dom, 通过数据对象在内存中对比差异, 找到最小的改动点,使用dom操作完成更新。 // 原生dom操作api export const nodeOps = { // 插入, 追加 insert: (child, parent, anchor = null) = { parent.insertBefore(child, anchor); // parent.appendChild(child) }, // 删除子节点 remove: child = { const parent = child.parentNode; if (paren…… 阅读全文