- 博客(299)
- 资源 (8)
- 收藏
- 关注
原创 开源webmail邮箱客户端rainloop的分支版本SnappyMail 设置发件人允许多重身份
8、 如果邮箱服务和SnappyMail是部署在同一台服务器上,可以不用配置域名。,user:admin, pwd: 在/www/wwwroot/mail.xxxx.com/data/_data_/_default_/admin_password.txt中复制, TOTP不填写。解决方案:宝塔面板-->软件商店-->php 7.4 -->设置-->安装扩展-->fileinfo-->安装。1、网站-->php项目-->添加站点-->配置对话框中[数据库]选择[不创建],PHP版本 ≥ 7.4。
2025-03-26 11:31:47
502
原创 langchain 认识embeddings (用于生成向量) 及阿里云deepseek如何embedding
是 OpenAI 最新的嵌入模型,生成高维度的文本向量。以下例子把文本转成1536个维度的向量。
2025-03-18 10:32:15
207
原创 deepseek 不支持 langchain 的 bind_tools 方法。
另,经一番搜索,暂时找到的折衷方案是 :在 model 调用工具函数时进行审核,即由人来确定是否应该调用工具函数。chatgpt提供的解决方案是手动调用工具,然后把工具返回的结果交给大模型。
2025-03-18 00:37:14
318
原创 理解langgraph工作流的驱动逻辑,以适应langgraph工作流模式的编程。
A、B两车在一条笔直的公路上同向行驶。A车在B车后方 1000 米处。A车以每秒 20 米的速度行驶,B车以每秒 16 米的速度行驶。两车同时出发,问多少秒后A车能够追上B车?当然,langgraph 的优势是工作流这类的处理,对于常规的并不一定高效。以下这些例子只是为了练习 从函数式编程思维->工作流思维 转变。langgraph的工作流模式虽然方便直观,但习惯了普通函数式编程的数据流处理。刚开始接触时,确实容易试图用函数式编程的思维去适配它,解题思路:分两步 1、计算A,B辆车的相对速度。
2025-03-16 18:29:14
219
原创 理解langgraph.graph.StateGraph中 State 的 Annotated 以函数作为元数据(meta)如何影响State传递
里面的StateMessage通过Annotated中引用的add_message实现了自动叠加历史消息的逻辑。因为数据(state)是从一个节点流入另一个节点,连接节点的是边(edge),为了形象,我们用管道来描述,即edge是数据流通的管道。以下代码展示的是一个有三个节点的工作流,数据从一个节点流入下一个节点的过程中,会被Annotated中元数据的函数修改。为了展示数据是在管道中被修改的,我们分别把节点收到的state、节点输出的state、管道中的state分别打印出来。定义不同的任务,通过。
2025-03-16 16:37:15
191
原创 理解langchain官方文档- 带历史消息的对话 - Annotated,Sequence,add_messages
Python 中注解是一种为函数、类、变量等添加元数据(meta)的语法机制,是一种实用的工具,它可以提高代码的质量和可维护性。函数add_messages的内部逻辑:add_messages 会检查新消息列表中的每个消息,如果其 ID 与现有消息列表中的某个消息相同,则替换旧消息(同时也实现了去重);否则,将新消息追加到列表中。允许你在类型提示中添加任意的元数据,这些元数据可以是任何 Python 对象,包括函数、类、字符串等。最常见的注解:冒号后跟数据类型提示(变量注解,函数参数注解,返回值注解)
2025-03-15 02:59:01
192
原创 理解langchain langgraph 官方文档示例代码中的MemorySaver
中间件有什么特征:它在程序执行过程中某些数据流的环节介入,并根据设定的逻辑对部分数据进行加工或调整数据的流向,而这一切对用户来说是透明的,看不见的,像一只看不见的手在那里做了些什么。在这里中的作用类似于一个“中间件”,workflow编译的时候提供了一个“检查点(Checkpointing)”让这个中间件介入进去,让这个看不见的手去捕获并加工里面数据。节点 (Nodes): 节点是工作流中的执行单元,每个节点都关联一个函数,该函数定义了节点的执行逻辑。:标记节点及节点的状态,定义节点之间的连接和流向。
2025-03-14 10:41:27
663
原创 理解 LangChain的Runnable RunnableWithMessageHistory
最终会生成 :store['my_topic_123456']=[(user的第1次input), (AI的第1次response), (user的第2次input), (AI的第2次response), (user的第3次input), (AI的第3次response),.....]注意,这里用的是.extend()而不是.append(),说明new_messages也是一个list,包含了input_message和output_message。支持结构化的数据流处理。
2025-03-13 11:39:18
979
原创 关于.env环境变量设置/配置的文件
1、os.getenv()并不会主动去读取.env的内容,它读取的是环境变量中的内容。要读取.env的内容需要先load_dotenv()。2、load_dotenv()后,不一定需要显式地进行xxx=os.getenv("XXX"),因为很多库把xxx参数值的默认值设为os.getenv("XXX")以下正常运行,但api_key=os.getenv("OPENAI_API_KEY") 和 base_url=os.getenv("OPENAI_BASE_URL")是多余的
2025-03-11 12:59:39
188
原创 文件名批量改名工具MiniRenamer,Advanced Renamer
文件名批量改名这种小工具不常用,所以用过之后通常软件名字都不会记住。下次要用的时候又要上网去找,哪个好用哪个不好用又要一轮试一下。这个用过还不错,先记录一下,作者直接发布在 52pojie 上的。(还可以把中文数字可以转为阿拉伯数字)
2025-03-05 07:14:07
227
原创 git管理的项目 发布时有收费版/免费版/客户定制版,如何管理分支,通过merge(合并) 还是 cherry-pick(挑拣) 引入更新的代码?
发布版本有收费版/免费版/客户定制版,虽然说在代码中增加条件判断,使用环境变量切换逻辑,能适配多个版本,但实际操作中常常无法这样理想化,有些差异就是写死在代码上。12、切换到release分支,把main分支合并到release分支。1、创建main分支 (可以初始化 README.md、.gitignore、初始代码、目录结构等)6、切换到dev分支,把feature分支合到dev分支。7、切换到main分支,把dev分支合并到main分支。8、从main分支创建release分支。
2025-03-01 18:13:39
348
原创 git 鼓励频繁提交commit early, commit often,用好分支,多用分支
代码本身很多逻辑是深度耦合的,一个调试/试错可能要改动很多个地方,一不小心污染到无法恢复。所以版本管理要随时回退,并且要做到小颗粒度回退,原子级别回退。对于代码来说,因为是文本+增量存储(差异存储)+diff算法,使得Git 的存储非常高效,频繁commit和创建分支,存储的开销简直是微不足道,完全是零成本,无负担!所以请尽情commit,尽情分支。分支管理:即使是一个人开发的项目,如果是功能简单的小项目,可以一直直接在dev分支开发,简单直观。
2025-03-01 09:14:53
247
原创 git 的 Detached HEAD
在 Git 版本管理中,是指你当前的工作状态不再指向任何分支,而是指向一个特定的提交(commit)。通常情况下,HEAD是指向你当前工作分支的指针,例如main或。当你切换到一个特定的提交或标签(而不是分支)时,HEAD会指向该提交,而不再是分支的最新提交。这种状态下,Git 会显示类似于的提示,表示你当前处于一个“分离头指针”(detached HEAD)状态。在这种状态下做的修改和提交不会直接影响任何分支,它们仅会存在于你当前的提交历史中,直到你明确地切换到一个分支。
2025-02-27 21:23:06
517
原创 常用的配置文件格式对比(ini,toml,yaml,json,env,settings.py)及应用程序修改自身配置并保留注释
git分支的代码应做到“环境无关”:代码本身不硬编码任何环境特定的配置(如数据库连接、密钥、API地址),而是通过外部机制动态注入。配置与代码分离:将配置信息存储在代码库之外(如环境变量、独立配置文件、密钥管理服务),避免提交到 Git 仓库。环境变量/配置文件 随便用,对内存的影响完全可以忽略不记。案例:典型 Web 应用的配置。
2025-02-25 10:49:57
345
原创 被AWS反撸了,试一下能否申请退还
向 AWS 客服提交退款申请,说明你是新用户,在免费试用期结束后没有留意到 EC2 仍在运行,导致了意外扣费,并请求 AWS 免除费用并退款。
2025-02-24 15:15:48
502
转载 为什么C盘莫名其妙就爆满了
如果是全新的电脑,并且系统是Win10的话,直接在设置、系统、存储、更改新内容的保存位置,在这里操作会更方便一点。用于保存内存数据的文件,只能在C盘根目录,文件名是Hiberfil.sys,Windows 8之后,默认大小通常是物理内存大小的75%,也就是16G内存的话占用12G C盘空间,可以自行设置到50-100%之间的值。如果习惯了分区使用的话,没有太多大型软件、游戏,分配给C盘的空间不少于100G,如果有大型软件、游戏,即使会安装到其它分区,也请酌情增加C盘容量。
2025-02-21 14:53:53
158
原创 mysql数据库 Data文件夹.MYD/.MYI恢复还原到数据库
我本地开发环境用的是phpstudy附带的MySQL,它安装方便,又不注册windows服务,不会开机自动启动,用完停止就释放资源了。对于mysql 8.0及之后的版本,默认是用 InnoDB引擎的,但这次我发现我的无论是本地开发环境还是服务器端的生产环境都是MyISAM引擎(文件夹中是 .MYD/.MYI ),我觉得奇怪,后来才发现原来是phpstudy在搞鬼。4、对于数据的恢复,早期版本相对容易恢复,早期版本的数据文件对各种数据恢复工具比较友好,但我试了多款工具都未能恢复8.0版本的数据。
2025-02-20 10:55:39
1007
转载 腾讯云服务器续费太贵了,有没有办法绕过?
不过价格和上面的100元/月的价格差不多,这个价格并不是实际的价格,你选中之后会按照你之前购买的云服务器的折扣来打折的,实际费率是102元一年。比如你在迁移数据的时候,在制作镜像的时候,镜像已经生成了,然后中途来了一个新用户注册,数据写入到了这台机子的数据库里面,而没在镜像里面,就不一致了。因为笔者也不是新客了,所以很多的优惠也没法用的了。这里有一个问题,这个配置的硬盘容量是70GB的,而我之前的轻量服务器的硬盘是80GB的。这样的话,新的轻量服务器70GB的硬盘是无法使用原来的轻量服务器制作的镜像的。
2025-02-15 22:11:42
44
原创 openai库 及LangChain 跟ChatGPT对话的主要接口
API 方法适用场景主要参数适用模型ChatGPT 对话gpt-4传统文本补全文本/代码编辑input文本向量化内容审核💡如果你是 FastAPI 开发者(用于聊天应用)(用于搜索、推荐系统)(用于用户内容审核)在LangChain框架中,提交提示词(Prompt)等内容给ChatGPT的主要函数/接口如下:在LangChain框架中,提交提示词(Prompt)等内容给ChatGPT1️⃣ChatOpenAI(用于 ChatGPT 对话模型)ChatOpenAI。
2025-02-07 13:29:29
1386
原创 deepseek回答质量高于豆包/文心一言/Gemini,接近ChatGPT 4o 的具体例子。
DeepSeek / ChatGPT:把 LangChain 类比 Django 这个Web框架,DeepSeek 把 大模型类比“数据库”, ChatGPT 把 大模型类比 “Web Server+数据库”。ChatGPT的表达更透彻。问题一:豆包 / Gemini / 文心一言:纯文字解释,ChatGPT / DeepSeek 结合代码示例。Gemini: 用“大脑-身体/工具”作类比,也很牵强,进一步引导下稍有改善。豆包/文心一言:拿建房子作类比,表达牵强,进一步引导下少有改善。
2025-02-06 11:18:37
597
原创 项目配置的最常见文件格式(ini,toml,yaml,conf,json,env)
简单配置场景:INI 和 CONF 适合简单的配置,使用解析。需要丰富数据类型:TOML 和 JSON 是不错的选择,分别使用toml和json库解析。复杂数据结构和可读性:YAML 是首选,使用PyYAML库解析。环境变量配置:ENV 文件适合,使用库加载。
2025-02-05 11:13:00
581
原创 RainLoop邮局邮箱忘记管理员密码admin
其实可能不是忘记管理员密码,只是把管理员登录入口地址记错了。管理员登录的地址是:mail.yourdomain.com/?admin。
2025-01-23 16:27:59
335
原创 pip error: microsoft visual c++ 14.0 or greater is required
报错原因:软件包作者发布的是为编译的*.tar.gz包,我们安装的时候需要调用系统C++编译器来进行编译安装,如果系统没有安装编译器或者编译器版本不对就会报这个错误。安装"C++生成工具" + "Windows 11 SDK" 即可,不需要安装整个visual Studio。解决方式一:安装编译器,但不需要安装完整的visual c++您也可以使用我们开发的下载工具下载,仅支持windows。解决方式二:去找编译好的.whl文件来安装。由于gitee限制,whl镜像可以访问。
2025-01-06 19:26:33
463
1
原创 AlphaPi相关硬件驱动提取
看了核桃编程和量子兔编程的安装程序,从文件结构和文件名称可以确定,软件是用Unity游戏引擎写的,相关资源被打包成Asset Bundle(*.ab)文件,目录路径(量子兔机器人_Data\StreamingAssets\Bundles\Windows\)初涉硬件编程,在咸鱼上搞了几块AlphaPi和microbit的板鼓捣了一下,alphapi生态不完善,网上又无任何文档,搞封闭,可玩性实在有限,但貌似相关扩展板是可以插microbit的,于是想把这些扩展版用microbit来驱动。
2025-01-05 14:28:34
446
原创 一台电脑上同时安装多个python版本
如果电脑上已经安装了高版本的python,再安装低版本的python时,若勾选了“Install for all users” 会提示:“已安装这个产品的另一个版本。这个版本的安装无法继续。2、如果便携版python(精简了tkinter、pip、documents等内容)够用,可以直接下载便携版并解压,直接使用,无需安装。1、选择自定义,最多只能有一个版本的安装勾选“Install for all users”,其他版本都仅限当中用户使用。不同项目可能需要不同版本的虚拟环境。
2025-01-03 17:40:25
1306
原创 downkyi 下载姬登录二维码不显示无法登录
原因是B站返回的二维码URL太长,当前代码中设置的二维码生成参数不允许生成包含这么长URL的二维码,所以触发异常,不能正常显示。解决方案:替换原文件DownKyi.Core.dll这个文件,登录二维码就显示出来的了。github上 downkyi 项目的issues搜“二维码”就能找到答案。
2024-12-24 12:25:44
5581
2
原创 openwrt 通过DHCP/DNS(Dnsmasq)屏蔽指定域名(hosts)
vi hosts_by_me 创建/打开 hosts_by_me文件,把准备好的hosts文件的内容复制粘贴进去,然后保存退出:wq。如果要屏蔽的域名不多,可以直接在web交互界面逐个添加“自定义挟持域名”,跟使用“额外hosts文件”等效的。cat hosts_by_me查看确认保存成功。4、拉到底部,点击“保存并应用”按钮!1、准备好hosts文件。
2024-12-16 00:05:36
1271
1
原创 新电脑验机-允许上网,同时禁止windows系统联网自动激活
注:(1)、若在hosts中限制访问microsoft.com及相关域名,Windows Defender 会报“ SettingsModifier:Win32 / HostsFileHijack”威胁,并使hosts文件修改失败。(2)、登录用户默认没有权限修改hosts,需要在hosts文件安全属性中授权当前本地用户编辑权限, 或者 以管理员身份允许命令窗口,并进入 c:\Windows\System32\drivers\etc 后运行 notepad hosts。在[Manual]键编辑窗口中,将。
2024-11-28 15:39:29
687
转载 windows server中opencv运行过程中MF.dll/MFReadWrite.dll/MFPlat.DLL文件丢失问题解决
windows server 2008/2012 使用opencv出现 DLL load failed错误,发现缺失部分dll:MFPlat.dll、MF.dll、MFReadWrite.dll等等,原因:服务器版本默认没有安装windows media player。使用低版本opencv(比如2.4.9),高版本(比如3.4.0)需要依赖MFPlat.dll、MF.dll、MFReadWrite.dll文件。3)、勾选“桌面体验”和“优质Windows音频视频体验”;4)、单击“安装”按钮;
2024-11-16 21:50:32
191
原创 Django ORM 数据库管理 提高查询、更新性能的技巧和编程习惯:
以下是一个很常见的例子(并非极端条件才发生):在配置低的服务器上,表格TableA 的记录数10w,字符串字段K无索引,一个简单查询耗时10秒,一个插入耗时50毫秒。总体上,索引带来的查询性能提升(10秒级)会远远大于插入性能的下降(毫秒级)。如果可以确保匹配结果有且只有一个(即无需处理异常),get()通常略微更高效,但几乎可以忽略不计。对于非预期结果的处理filter().first()通常更轻松,由于不需要try,代码更简洁,可读性更强。
2024-10-29 13:20:25
1084
原创 将Django项目从PyCharm迁移到VSCode
我有一个django项目正在使用pycharm开发,我现在想换成用vscode进行开发,我的项目目录主要结构如下:虚拟环境目录为:D:\pyproject\chatroom\venv ,项目根目录(manage.py所在目录):D:\pyproject\chatroom\xchat,settings.py所在目录:D:\pyproject\chatroom\xchat\backend,views.py所在目录:D:\pyproject\chatroom\xchat\chat。
2024-10-23 12:12:58
626
原创 Django admin后台的静态文件css文件无法加载,及 搞懂Django静态文件配置 +
2010年代中期开始,特别是在单页应用(SPA)流行之后,前后端分离的开发模式让静态文件的优化成为重点,构建工具(如 Webpack)开始广泛使用,使得静态文件的打包、优化成为常态。那时候的网站通常是“页面驱动”的,静态文件简单地组织在特定的目录下,然后直接在 HTML 模板中引用它们即可。随着web项目复杂程度提高,一个项目有很多模块、子模块,若按旧模式管理静态资源,文件存放的目录层次可能很深,静态资源分布散乱。3、Webpack等构建工具,使静态文件的收集和处理成为了现代项目构建过程中的标准步骤。
2024-10-18 16:55:34
825
原创 if response.get(“X-Frame-Options“) is not None:AttributeError: ‘Response‘ object has no attribute
对象(requests请求获得response)直接return 给前端浏览器了。视图函数 def func(request): 应该返回的是一个Django。的响应内容转换为Django的。方法来访问 HTTP 头信息。要解决这个问题,你可以将。对象与Django的。
2024-10-18 10:53:29
441
转载 vscode 配置git
一、安装Git(2)其次你需要安装Git(下面这两个是Git安装教程)(3)配置Git二、在VS Code中安装和配置扩展(1)在VS Code的扩展选项中,搜索该插件并进行安装(2)安装完成之后,在VS Code的设置中搜索“git.path”点击“在setting.json中编辑”(3)添加git.exe路径1.获取git.exe的路径在命令窗口中,输入"where git",回车,就会看到路径了2.将路径复制,粘贴到settings.json的“git.path”的冒号后面。
2024-10-17 15:15:02
2495
原创 web自动化测试中根据headers原文raw构建requests通用参数
【代码】web自动化测试中根据headers原文raw构建requests通用参数。
2024-10-11 17:12:06
122
原创 requests 中data=xxx、json=xxx、params=xxx 分别什么时候用
相当于get访问 URL:https://example.com/api?如果是要做爬虫模拟一个页面提交,看原页面是post还是get,以及Content-Type是什么。(常见于AJAX提交)相当于直接网页提交表单。
2024-10-06 22:49:36
590
Tkinter 8.5 reference: a GUI for Python
2022-03-05
IISAdmin(让XPIIS支持多站点)
2009-12-08
密码查看器viewpass
2008-10-07
HttpWatch Pro v6.0.14授权文件可用
2008-10-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人