2025-05-17 23:30:40
摘要:一、链的概念
定义与作用:链是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. 定义我们……
阅读全文
2025-05-11 20:03:37
摘要:我们先配置一下环境
安装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……
阅读全文
2025-05-10 11:15:22
摘要:一、Coze空间
1. Coze开发平台优势
界面简洁:Coze界面清爽,隐藏复杂技术细节,让市场运营人员、学生等无编程基础的用户也能轻松使用。
上手容易:用户可快速将想法转化为现实,无需关心底层逻辑和代码实现。
插件丰富:Coze提供上百种功能各异的插件,涵盖读新闻、查天气、订机票等,不断增长。
支持用户将私有API封装成自定义插件,拓展智能体应用场景。
知识库功能:用户可上传专业知识文档,如产品手册、业务流程等,让智能体成为领域专家。在垂直领域应用中,知识库功能是满足专业需求的关键。
快速生成智能体:Coze支持无代码生成AI智能体,用户可在短时间内完成智能体原型搭建。简化创建过程,缩短想法与成品之间的距离。
广泛应用场景:Coze不仅适用于客服,还适用于各种基于AI模型的智能问答智能体。能处理简单问询,也能应对多步骤思考、多逻辑判断的复杂对话场景。
数据管理与记忆功能:Coze让智能体记住对话关键信息和用户偏好,避免“金鱼记忆”。智能体可主动服务,如定时推送新闻、规划周末等,提升用户体验。
流量优势:Coze背靠字节跳动,作品可通过豆包、飞书等渠道触达亿级用户。对于开发者和创作者而言,流量优势意味着作品有更多展示机会。
2. Agent实现流程
需求分析
收集需求:真正倾听用户需求,了解他们希望Agent实现的功能,避免“自嗨”产品。
定义角色职责:明确Agent系统中各“员工”角色及职责,为后续设计开发提供清晰架构。
建立领域模型:梳理Agent需要打交道的概念及其关系,为实现复杂业务逻辑奠定基础。
优化问题研究:提前识别并研究影响效率和体验的环节,确保产品高效满足用户需求。
可视化需求分析:利用流程图、思维导图等可视化工具,更直观地理解和管理需求。
架构设计
人设模块:定义Agent身份、行为准则和说话风格,为其赋予独特魅力。
记忆模块:存储和管理Agent知识,包括短期记忆和长期记忆,构成“大脑海马体”。
规划模块:制定行动计划,将大任务分解为小步骤,优化执行路径。
行动模块:执行具体操作,如调用API、计算数据等,赋予Agent行动能力。
认知架构:确定各模块之间的对话、信息传递和协同工作方式,决定Agent思维逻辑。
多智能体协作:制定沟通“标准操作规程”,确保不同智能体高效分工协作。
迭代和对话式工作流:通过与Agent对话、测试……
阅读全文
2025-05-03 16:11:26
摘要:一、安装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……
阅读全文
2025-04-26 14:36:44
摘要:一、提示词定义与重要性
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. 提升提示词质量的实用技巧
指令清晰化:使用明确动词开头,用分隔符……
阅读全文
2025-04-19 15:27:42
摘要:一、人工智能通识
1. 人工智能的应用场景与定义
日常生活中的AI应用:
手机语音助手利用自然语言处理和语音识别技术,为用户提供便捷服务,如查询信息、设置提醒等。智能家居设备通过语音控制实现家电操作,提升生活便利性。
自动驾驶汽车依靠AI进行环境感知和决策,提高行车安全。金融领域中,机器人投资顾问运用AI分析数据,提供个性化资产管理建议。
专业领域的AI应用
医院利用AI图像识别技术辅助诊断,提高诊断准确率。
制造业借助AI优化生产流程,提高效率和质量。
监控摄像头结合AI技术实现行为监测和犯罪预测,提升社会安全水平。
这些应用展示了AI在不同领域的强大潜力和广泛价值。
人工智能的定义与本质
约翰·麦卡锡将人工智能定义为“实现目标的计算能力”,强调其目标导向性。但目前的AI技术本质上是一种高级统计工具,仅在特定任务上表现出色。
真正的智能涉及意识、情感和创造力,而现有AI缺乏这些特质,只能在预设规则或数据支持下运行,无法像人类一样灵活应对复杂情况。
人工智能的分类
现有的AI大多是“弱人工智能”,只能完成特定任务,如翻译、推荐等。
而“强人工智能”或通用人工智能(AGI)是未来目标,能处理任何任务,目前仍遥不可及。
例如,扫地机器人和聊天机器人虽表现出一定智能,但不具备真正的智能。目前的AI产品和服务只是AGI研发过程中的副产品。
2. 人工智能的发展历程
第一次浪潮:规则驱动
1950s- 1980s,达特茅斯会议提出人工智能概念,开启第一次浪潮。基于逻辑和符号推理,依赖人工编写规则,如早期的专家系统。
这种方式在某些领域取得成就,但局限性明显,难以处理自然语言的歧义性和图像识别的复杂性,且成本高昂、可扩展性差,导致人工智能进入寒冬。
第二次浪潮:统计学习
1990s- 2010s,计算机硬件性能提升和互联网出现推动第二次浪潮。统计学习引入概率和统计方法,让计算机从数据中自动学习模式。
垃圾邮件过滤、语音识别和推荐系统等领域取得显著成果,但依赖人工特征工程,对于复杂任务和场景的处理能力有限,发展仍受限。
第三次浪潮:深度学习
21世纪10年代,深度学习和互联网兴起推动第三次浪潮。深度学习实现端到端学习,自动提取数据特征,取得重大突破,如AlphaGo战胜李世石、ChatGPT引发热潮。
在图像识别、自然语言处理等领域超越人……
阅读全文
2025-03-15 10:19:14
摘要:TypeScript 是一种由微软开发的自由开源的编程语言,他是JavaScript的一个超集,扩展了JavaScript的 语法,主要提供了类型系统和对 ES6 的支持。
一、类型定义
window.onload=function(){
//类型系统
let flag:boolean = false; //布尔类型
let num:number = 15; //数值类型
let str:string = 'abc'; //字符串类型
let str2:string=`hello,${str}`;
let msg:string = `hello,${str},${num}`;
let u: undefined = undefined;
let n: null = null;
//为什么要TS
// function sum(n1:number,n2:number){
// return n1+n2
// };
// sum(10,20);
// sum('10',20);
let count:number = 10;
count = 100;
//声明的变量有多种类型——联合类型
let id:number | string = 10;
id = '111';
//任意类型 :any 万能类型
let x:any = true;
x = 111;
x = 'abc';
//引用类型
//数组
let arr:number[] = [1,2,3,4,5];
//最简单的方法是使用「类型 + 方括号」来表示数组: number[]
let arr2:string[] = ['a','b','hello'];
let arr3:(number|string)[] = ['a',100,'hello'];
let arr4:any[] = ['a',100,'hello'];
//数组泛型 Array类型
let arr5:Arraynumber= [1,2,3,4,5];
let ……
阅读全文
2022-09-04 23:46:49
摘要:一、了解MVVM
1. 什么是MVVM
一种设计模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
为什么需要MVVM?解决什么问题?
降低耦合、独立开发、逻辑重用(Xamarin MAUI多平台应用)、可测试
响应式布局
2. 控件交互到MVVM模式的转变
控件交互:基于控件的功能开发
-MVVM****模式
代码/项目结构
Models:
Views:
ViewModels:
3. MVVM绑定模式下的信息交互
数据类型:INotifyPropertyChanged接口
public event PropertyChangedEventHandler? PropertyChanged;
执行事件,发公告
ContextMenu,注意:命令的数据源的指定
行为动作:ICommand接口
public event EventHandler? CanExecuteChanged;
public bool CanExecute(object? parameter)
public void Execute(object? parameter)
是不是所有控件都有Command属性?是不是所有动作都可以使用Command?
无法绑定的动作如何处理?
4. MVVM绑定扩展
无法绑定的对象属性
通过附加属性进行扩展
无法绑定的动作事件
(InputBindings: )
单击鼠标左键 :LeftClick 双击鼠标左键:LeftDoubleClick
单击鼠标中键 :MiddleClick 双击鼠标中键:MiddleDoubleClick
单击鼠标右键:RightClick 双击鼠标右键:RightDoubleClick
不执行任何操作:None 旋转鼠标滚轮:WheelClick
事件转命令
Behavior
自定义实现
5. MVVM案例
一般页面信息绑定
页面集合绑定
任意数据源绑定
自定义控件
6. MV……
阅读全文
2022-08-29 23:42:50
摘要:一、WPF控件的组成
1. 逻辑与呈现的分离
控件模板旨在成为展示详细信息的自包含单元,对外部用户和对象(包括 Style 对象)不可见。 操作控件模板内容的唯一方法是在当前控件模板中。
2. 模板修改:显示区域的内容重组
Button模板Template:渲染对象、属性值的关联、触发器
样式与模板
3. 基础控件如何显示的?
功能最强大,布局最灵活的容器
主要属性配置:
ColumnDefinitions(ColumnDefinition)、RowDefinitions(RowDefinition)、ShowGridLines、IsSharedSizeScope(SharedSizeGroup)、给子项控件使用:Grid.Row Grid.Column
使用场景:广泛,不知道用什么布局,就用Grid,意外(WrapPanel)
二、模板中的基础控件
1. 基础元素的呈现:DrawingContext DrawRect
TextBlock
Border
OnRender
2. 控件模板案例解析
Label、GroupBox、CheckBox、RadioButton、ToggleButton
TextBox/PasswordBox、TabControl/TabItem、TreeView/TreeViewItem、ListBox/ListBoxItem、ListView/ListViewItem、Menu/MenuItem
ComboBox、ScrollViewer、ProgressBar、Slider
Calendar/DatePicker、DataGrid
模板的添加与修改
默认模板:wpf\src\Microsoft.DotNet.Wpf\src\Themes
3. 控件模板案例解析
基本控件的使用
名称、基本作用表现、特征
常用属性:尺寸、定位、显示内容
常用事件:点击、输入
控件的特殊属性
Style:用来统一设置控件属性的对象
Resources:资源管理,存放可共用的数据(变量、样式、模板)
Template:用来控制控件的呈现
目的:
三、属性与绑定
1. WPF的数据关系
绑定关系:数据绑定是应用呈现数据并与数据交互提供了一种简单而一致的方法,在应用 UI 与其显示的数据之间建立连接的过程。
2. 建……
阅读全文
2022-08-28 10:40:57
摘要:一、界面布局
1. 布局原则
不用显式的方式设定元素的尺寸
不使用屏幕坐标来指定位置
2. 常用布局控件与布局处理
Grid
StackPanel
DockPanel
WrapPanel
UniformGrid
Canvas
InkCanvas
Border(装饰控件:背景色/边框 圆角 子对象也只能一个)
3. Grid
功能最强大,布局最灵活的容器
主要属性配置:
ColumnDefinitions(ColumnDefinition)、RowDefinitions(RowDefinition)、ShowGridLines、IsSharedSizeScope(SharedSizeGroup)、给子项控件使用:Grid.Row Grid.Column
使用场景:广泛,不知道用什么布局,就用Grid,意外(WrapPanel)
4. StackPanel
最简单的布局容器之一
主要属性配置:Orientation-调整排列方向、FlowDirection
使用场景:图文并显、工具栏
可以Grid代替
5. WrapPanel
唯一一个不能被Grid替代的布局控件,水平方向排列,过程中当前子项出界了,进行折行
主要属性配置:Orientation-调整排列方向
使用场景:桌面式图标排列、搜索历史关键词排列
6. DockPanel
通过设置Dock停靠进行布局
主要属性配置:LastChildFill、DockPanel.Dock
使用场景:应用的主窗口布局(标题栏、状态栏、工具栏、菜单栏)
7. UniformGrid
另一种行列风格布局,自动生成统一一致的行列
主要属性配置:Columns、Rows 指定的是当前区域均分多少行和列,不存在指定行高和列宽
使用场景:9宫格的功能区域、图表
8. Canvas
通过精确坐标定位放置子元素
主要属性配置:Canvas.Left、Top、Right、Bottom
使用场景:组态、组件封装(仪表)
9. InkCanvas
支持任意笔画输入的画布组件
主要属性配置:
使用场景:手写墨迹识别(不是手写图像识别):文字、图形
10. Border
最基础的装饰控件
主要属性配置:
使用场景:
二、界面布局处理案例分析
1. 可视化数字看板
使用控件总结:Border ……
阅读全文