Spiga

分类为读书笔记的文章

程序员的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引发热潮。 在图像识别、自然语言处理等领域超越人…… 阅读全文

前端提升3:TS

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 …… 阅读全文

WPF学习笔记5:MVVM

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…… 阅读全文

WPF学习笔记4:控件模版

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. 建…… 阅读全文

WPF学习笔记3:基本布局

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 …… 阅读全文

WPF学习笔记2:3D绘图

2022-08-22 12:37:23

摘要:一、基本对象 1. WPF 3D WPF 中 3D 功能的设计初衷并非提供功能齐全的游戏开发平台。 WPF 中的 3D 图形内容封装在 Viewport3D 元素中,该元素可以参与二维元素结构。 该图形系统将 Viewport3D 视为一个二维视觉元素,就像 WPF 中的许多其他元素一样。 Viewport3D 充当三维场景中的窗口(即视区)。 更准确地说,它是 3D 场景所投影到的图面。 2. 模型3D场景 3D视口 坐标系 点、线、面、三角顶点网格 材质 光源 相机 3. 3D对象模型结构 MeshGemetry3D Positions TraiangleIndices TextureCoordinates:如何对应? 4. 相机 OrthographicCamera:正交 PerspectiveCamera:透视 基本属性: Position:相机的空间坐标(X,Y,Z) LookDirection:观察方向,向量,相机观察口朝向 FieldOfView(透视相机属性) / Width(正交相机属性):视野范围(焦距),一个值 UpDirection:相机上方方向,控制相机观察口旋转 FarPlaneDistance:远景距离,大于这个距离的场景不渲染 NearPlaneDistance:近景距离,小于这个距离的场景不渲染 5. 3D对象模型材质 DiffuseMaterial:漫反射,反射场景光效果 EmissiveMaterial:自发光,类似于电灯 SpecularMaterial:全反射,可以映射场景 贴图(平面贴图、曲面贴图-地球) 背面材质 6. 3D对象模型光源 AmbientLight:环境光 DirectionalLight:平行光 PointLight:点光源 SpotLight:聚光灯 相关属性 Color:灯光颜色 Direction:光线方向(平行光、聚光灯) Position:光源坐标(点光源、聚光灯) Range:灯光范围(点光源) InnerConeAngle:内光柱照射角度(聚光灯) OuterConeAngle:外光柱照射角度(聚光灯) 7. 3D对象的变换 Transform3D:平移 xyz ScaleTransform3D:缩放 RotateTransform3D:旋转 M…… 阅读全文

WPF学习笔记1:基础控件

2022-08-21 22:56:30

摘要:一、基础控件汇总 控件类型 主要控件 按钮控件 Button、RepeatButton、RadioButton 数据显示控件 TextBlock、Label、Image、ItemsControl**、ListView、ListBox、**DataGrid、DocumentViwer 输入控件 TextBox、RichTextBox、CheckBox、ComboBox、DatePicker、PasswordBox、Slider、ProgressBar 菜单导航控件 MenuItem、ContextMenu、ToolBar、TreeView、TabControl、Expander 信息提示控件 Popup、Window、PrintDialog、ToolTip 布局控件 Grid**、StackPanel、WrapPanel、DockPanel、UniformGrid、Canvas、InkCanvas、**Border 图形控件 Line、Rectangle、Ellipse、Polyline、Polygon、Path 其他控件 ScrollViwer、GroupBox、ViewBox 1. 常用属性 尺寸(宽高)、定位(Margin,HorizontalAlignment、VerticalAlignment)、颜色(Background、Foreground)、信息显示(Text、Content、ListViewItem、ListBoxItem、DataGridTextColumn…..) 鼠标事件、键盘事件 特别属性 RadioButton:GroupName 集合控件:AlternationCount ComboBox:SelectedItem、SelectedValue、SelectedValuePath、DisplayMemberPath、SelectedIndex DatePicker:SelectedDate、DisplayDateStart、DisplayDateEnd PasswordBox:Password(普通属性) Silder、ProgressBar:最小值、最大值、当前值 Popup:IsOpen、Placement、PlacementTarget、StaysOpen Window:无边…… 阅读全文

[推荐] Kubernates学习思路导图笔记

2021-04-25 23:46:47

摘要: 阅读全文

[推荐] kubectl 常用命令总结

2021-01-25 11:40:01

摘要:# 查看所有 pod 列表, -n 后跟 namespace, 查看指定的命名空间 kubectl get pod kubectl get pod -n kube kubectl get pod -o wide # 查看 RC 和 service 列表, -o wide 查看详细信息 kubectl get rc,svc kubectl get pod,svc -o wide kubectl get pod pod-name -o yaml # 显示 Node 的详细信息 kubectl describe node 192.168.0.212 # 显示 Pod 的详细信息, 特别是查看 pod 无法创建的时候的日志 kubectl describe pod pod-name eg: kubectl describe pod redis-master-tqds9 # 根据 yaml 创建资源, apply 可以重复执行,create 不行 kubectl create -f pod.yaml kubectl apply -f pod.yaml # 基于 pod.yaml 定义的名称删除 pod kubectl delete -f pod.yaml # 删除所有包含某个 label 的pod 和 service kubectl delete pod,svc -l name=label-name # 删除所有 Pod kubectl delete pod --all # 查看 endpoint 列表 kubectl get endpoints # 执行 pod 的 date 命令 kubectl exec pod-name -- date kubectl exec pod-name -- bash kubectl exec pod-name -- ping 10.24.51.9 # 通过bash获得 pod 中某个容器的TTY,相当于登录容器 kubectl exec -it pod-name -c container-name -- bash eg: kubectl exec -it redis-master-cln81 -- bash # 查看容器的日志 kubectl logs pod-name kube…… 阅读全文