1.AI Code Translator 编程语言自动转换工具源码分析
2.揭秘OpenAI新神器:Cursor源码深度解析与应用探索
3.AI办公自动化:kimi批量搜索提取PDF文档中特定文本内容
4.腾讯T2I-adapter源码分析(3)-训练源码分析
5.带桌面推送Ai智能客服系统在线客服源码
6.AI与PDE(七):AFNO模型的办公办源代码解析
AI Code Translator 编程语言自动转换工具源码分析
近期,关注到开源库 PuerTS 提及“Lua到TS的续写续写AI转写”。基于此,源码源码我探究了一款基于GPT的分析分析代码翻译工具——“AI Code Translator”。此工具能将一种编程语言自动转换为另一种语言。办公办PuerTS提及的续写续写出售抖阴源码“AI转写”可能采用了相似原理。本文将深入分析“AI Code Translator”中“转写”部分的源码源码实现。
项目地址:未提供
项目截图:未提供
尝试使用在线工具 aicodeconvert.com/ 将一段TS代码转为Lua。分析分析实际体验中,办公办AI转换的续写续写Lua代码保留了TS代码的含义、结构和写法,源码源码但需要开发者补充一些在目标语言中不存在的分析分析类型或函数,例如Lua的办公办class。此外,续写续写名称保持与源代码一致,源码源码但如果源代码中使用特定库或框架,转换后的代码同样使用该库,但目标语言可能并未提供相应版本,需要开发者自行实现或先用AI转写源库。
分析工具的前端使用next.js编写,核心功能在Index.ts文件中,包含createPrompt和OpenAIStream两个关键方法。createPrompt负责构造AI翻译所需的提示词,OpenAIStream则封装了与OpenAI API的交互。createPrompt方法根据输入语言、输出语言以及代码内容构建提示词,旨在让AI理解翻译任务并生成目标代码。
创建提示词的方法分为三个主要分支,分别针对自然语言输入、自然语言输出以及具体编程语言的输入和输出情况。在构建提示词时,采用身份说明、任务描述、举例、具体文本填充和输出格式续写等步骤,旨在引导AI完成代码翻译。
对于大工程的转写,建议采用以下改进策略:分析代码依赖关系,优先转写底层代码;分段处理代码,避免超过AI处理的token长度限制;对AI生成的代码进行人工检查和测试,提升代码质量。这些技巧可帮助开发者更高效地利用AI转写工具。
总结,AI转写工具“AI Code Translator”通过简单的提示词构造实现代码自动转换。虽然适用于小型代码段,但对于大工程的执剑江湖源码转写还需结合人工辅助,以提高效率和代码质量。此外,若目标是学习和开发网络游戏,特别是手机游戏或游戏行业相关工作,推荐阅读《Unity3D网络游戏实战(第2版)》,本书由作者总结多年经验编写,提供实用的教程和知识,非常适合这一领域的需求。
揭秘OpenAI新神器:Cursor源码深度解析与应用探索
Cursor,一款专为编程与人工智能打造的编辑器,目前仍处于早期阶段,具备多项功能。由两家MIT高材生创立的公司于年在旧金山成立,获得OpenAI的投资。虽然Cursor的代码质量参差不齐,甚至可能部分由AI生成,其官网与代码仓库简陋,无详细文档。根据其官方声明,Cursor在智能性上比Copilot更出色。然而,实际功能还需通过官方提供的视频评估,视频展示了Cursor支持两种交互方式:通过cmd+k激活代码生成模式与cmd+l激活的聊天模式。生成代码的逻辑在源码文件的features/chat/chatThunks.ts中,通过向Cursor服务器发送POST请求,将信息通过token的方式流式返回,提供类似ChatGPT的体验。聊天模式下,Cursor能根据问题和文件上下文向AI提问。Cursor在理解工程上下文方面有显著进步,能够识别并提供项目中相关实现的文件路径。当前Cursor的核心优势在于免费特性及理解项目工程的能力,但其劣势在于对VSCode生态的挑战。
在Cursor的内部实现中,通过解析输入的指令,结合编辑器与AI进行交互,实现代码生成、内容编辑与工程上下文理解等功能。对于生成代码和AI续写内容的请求,Cursor通过向服务器发送包含选中文本、指令类型等信息的POST请求实现。聊天模式下,Cursor通过简单的请求实现向AI提问。编辑器与AI之间的双向通信通过文本事件流技术实现,确保流畅的汇折卡源码交互体验。然而,Cursor的核心后台实现尚未开源,这构成了其商业策略的一部分。
Cursor未来面临的挑战包括维持竞争优势、优化用户体验、解决与VSCode生态的兼容性问题,并进一步完善其核心功能。随着技术的不断进步与迭代,Cursor有望在编程辅助领域发挥更大的作用。尽管当前存在一些限制和不足,如代码质量、文档建设和后台实现的非开源性,但Cursor在编程辅助工具领域展现出了创新潜力,值得持续关注。
AI办公自动化:kimi批量搜索提取PDF文档中特定文本内容
要实现AI办公自动化,通过Python脚本批量搜索并提取PDF文档中的特定文本内容,如“资料来源”、“数据来源”和“来源”等,Kimi提供了一个解决方案。以下是一个步骤清晰的实现过程:
在Python编程环境下,你面临一个任务,目标是从数百个PDF文档中提取特定的文本信息。首先,使用pdfplumber库打开位于F:\研报下载\AIGC研报文件夹中的所有PDF文件。然后,通过遍历每个文件,逐行查找以“资料来源:”、“数据来源:”和“来源:”开头的文本,这些可能是你需要的内容来源。
脚本开始于导入必要的库,如os、re和pdfplumber,定义关键词列表和文件路径。对于每个PDF文件,代码首先检查文件类型,如果是PDF,它会尝试打开并提取文本。使用正则表达式搜索关键词,匹配到的文本会被保存到一个Excel文件中,文件名是'AI_Industry_Analysis.xlsx',保存在F:\AI自媒体内容\AI行业数据分析文件夹。
在处理过程中,脚本会监控可能出现的异常,如文件损坏或权限问题,并在遇到时提供错误信息。源码屏蔽视频源一旦所有文件处理完毕,脚本会输出一个总结,确认数据已保存到指定的Excel文件中。
下面是Kimi生成的简化版源代码片段:
...
import os
import re
import pdfplumber
...
# 遍历源文件夹中的PDF文件
for filename in os.listdir(source_folder):
if filename.endswith('.pdf'):
file_path = os.path.join(source_folder, filename)
try:
with pdfplumber.open(file_path) as pdf:
for page in pdf.pages:
text = page.extract_text()
for keyword in keywords:
pattern = re.compile(keyword + ".*")
matches = pattern.findall(text)
for match in matches:
sheet.append([match])
except Exception as e:
print(f"处理文件{ filename}时发生错误:{ e}")
...
通过这段代码,你可以有效地自动化提取PDF文档中的特定文本信息。
腾讯T2I-adapter源码分析(3)-训练源码分析
随着stable-diffusion和midjourney等AI技术展现令人惊叹的艺术创作,人们对AI可控绘图的追求日益高涨。为提升AI图像生成的可控性,Controlnet和T2I-adapter等解决方案应运而生。系列文章将从T2I-adapter的源码出发,深入剖析其训练部分的实现原理。
本篇我们将聚焦于训练源码的解析,通过代码结构的梳理,了解T2I-Adapter的训练流程。
训练代码的运行涉及数据处理、模型加载、优化器设置以及实际训练过程。在第一部分,我们首先设置参数并加载数据,如DepthDataset,它从txt文件中读取、对应的深度图和文本描述。
在模型加载阶段,我们区分了stable-diffusion模型和adapter。stable-diffusion模型加载时,其配置与推理阶段有所差异,如增加调度器参数、提高精度、调整分辨率和训练相关参数。adapter模型的加载则遵循推理过程中的初始化方法,通过构建不同模块来实现。
训练过程中,adapter模型的关键结构包括下采样、卷积和ResnetBlock的使用,相比controlnet,T2I-adapter的参数更少,没有注意力层,这使得训练更为高效。模型放入GPU后,使用adamW优化器进行训练,同时设置学习率和数据保存路径。
状态恢复部分,程序会判断是否从头开始或恢复训练,设置log信息。接下来,汇优的源码代码进入实际的训练循环,包括条件编码、隐藏状态生成、adapter结果附加至sd模型以及adapter梯度计算。
loss函数定义在模型配置中,采用L2损失来衡量生成图像与给定时间点加噪ground truth的接近程度。训练过程中,loss计算和模型保存都在代码中明确体现。
总的来说,T2I-adapter的训练源码展示了精细的结构和参数设置,确保了AI绘画的可控性和性能。在AI艺术的探索中,每一行代码都承载着技术进步的点滴痕迹。
带桌面推送Ai智能客服系统在线客服源码
该系统集安全防护和国际化多语言功能于一身,确保了客户信息的安全性同时支持全球多语言交流,助力外贸新机遇。
采用Thinkphp5和Workerman框架,搭配Nginx、PHP7.3和MySQL5.6环境,构建稳定高效的服务平台。支持多商户客服模式,不限坐席数量,用户可独立运行系统,数据存储于自服务器上,提供SSL加密和离线对话功能。
系统更新日志涵盖多项功能优化,如新增桌面右下角悬浮推送,方便用户在进行其他操作时亦能即时回复客户消息。此外,聊天页面集成常见问题及品牌logo、公司简介,提升用户沟通效率。客服配置中心增设自定义上传广告及链接选项,增强个性化服务体验。会话页面允许用户上传背景,进一步定制化交互环境。
欲获取源代码,请访问客服系统.zip文件,存放于蓝奏云。
AI与PDE(七):AFNO模型的源代码解析
本文旨在解析AFNO模型的源代码,帮助读者理解模型细节与主干结构。首先,AFNO模型的主干框架在afnonet.py文件中定义,通过类AFNONet实现。模型的核心功能封装在多个类与函数中,依据代码注释逐步解析。
在代码中,forward_features函数负责模型的核心逻辑,包括patch切割与mixing过程。这些操作由PatchEmbed类实现。位置编码self.pos_embed通过高斯初始化得到,增加模型的表示能力。
关键模块AFNO2d位于代码中,它基于FNO的原理,负责处理输入数据。AFNO2d模块在forward_features函数中通过循环调用,实现数据的转换与混合。
经过数个L layer处理后,模型进入类似解码器的结构,用于将中间结果映射为目标结果。这一过程通过self.head(x)实现,以解决特定分类问题。
本文通过梳理代码流程与结构图,直观展示了AFNO模型的工作原理。读者可参考AFNO的GitHub源代码与论文,深入理解细节。后续文章将继续探讨基于AFNO模型框架的其他应用,如FourCastNet。
AI办公自动化:用kimi批量把word转换成txt文本
在Kimichat中输入提示词:
你是一个Python编程专家,要完成一个Python脚本编写的任务,具体步骤如下:
打开文件夹:F:\aword
读取里面docx格式的word文档,提取word文档中的第一行文字作为txt文本文档的标题名,将word文档转换为txt文档;重命名txt文档;注意:每一步相关信息都要输出到屏幕;在 Windows 系统中,默认的文件编码是 GBK,它不支持某些特殊的 Unicode 字符,为了解决这个问题,可以在打开文件进行写入操作时,指定使用 utf-8 编码。
kimichat生成Python源代码:
python
import os
from docx import Document
# 定义文件夹路径
folder_path = 'F:\\aword'
# 确保文件夹存在
if not os.path.exists(folder_path):
print(f"文件夹 { folder_path} 不存在。")
else:
# 列出文件夹中所有的docx文件
docx_files = [f for f in os.listdir(folder_path) if f.endswith('.docx')]
# 检查是否有docx文件
if not docx_files:
print("没有找到docx格式的Word文档。")
else:
for docx_file in docx_files:
# 构建完整的文件路径
docx_file_path = os.path.join(folder_path, docx_file)
# 读取Word文档
doc = Document(docx_file_path)
try:
# 提取第一行文字作为标题
title = doc.paragraphs[0].text.strip()
print(f"提取的标题为: { title}")
# 构建txt文件的完整路径
txt_file_path = os.path.join(folder_path, f"{ title}.txt")
# 将Word文档转换为txt
with open(txt_file_path, 'w', encoding='utf-8') as txt_file:
for para in doc.paragraphs:
txt_file.write(para.text + ' ')
print(f"文档 { docx_file} 已转换为txt格式。")
except IndexError:
print(f"文档 { docx_file} 中没有文本。")
except Exception as e:
print(f"处理文档 { docx_file} 时发生错误: { e}")
在vscode中运行源代码,成功。
AI编译器技术剖析(二)-传统编译器
AI技术的广泛应用中,智能家居和自动驾驶都依赖于NLP和计算机视觉等AI模型,这些模型部署在云、专用设备和物联网设备中。在将AI模型从研发到实际应用的过程中,编译器的作用日益凸显,特别是在处理非标准算子的模型部署上。AI编译器的兴起预示着未来十年的快速发展。
AI编译器技术建立在传统编译器的基础之上。它首先在IR层面优化模型,然后通过lowering将高级IR转换为传统编译器理解的低级IR,最后依赖传统编译器生成机器码。要理解AI编译器,先要掌握传统编译器的基本原理,包括其预处理、编译和链接流程,以及前端、优化器和后端的分工。
传统编译器的核心是源代码到机器码的转换过程。它通常由预处理器、编译器(分前端、优化器和后端)和链接器组成。编译器负责将高级语言转换为机器代码,而解释器则在运行时进行转换。AOT和JIT编译的区别在于执行时间:AOT在编译前完成,JIT则在运行时动态优化。
主流编译器如GCC,其源代码庞大且复杂,包含语言相关的代码、通用代码和根据机器描述生成的代码。GCC的流程包括词法分析、语法分析、优化,以及目标代码生成。而LLVM提供了一种模块化的编译器框架,支持自定义前端和后端,比如Apple的Clang,它直接支持C++等语言并转化为LLVM IR。
编译器优化是提升性能的关键,包括常量传播、常量折叠、复写传播等。它们通过消除冗余计算和改进代码结构来提高执行效率。例如,通过公共子表达式消除,可以避免不必要的计算;通过函数调用优化,如尾递归优化,减少函数调用的开销。
总的来说,本文概述了传统编译器的基础,以及AI编译器如何在其基础上发展,展示了编译器的架构、优化策略和不同编译器工具的特性,为理解AI编译器技术提供了基础。
腾讯T2I-adapter源码分析(1)-运行源码跑训练
稳定扩散、midjourney等AI绘图技术,为人们带来了令人惊叹的效果,不禁让人感叹技术发展的日新月异。然而,AI绘图的可控性一直不是很好,通过prompt描述词来操控图像很难做到随心所欲。为了使AI绘制的图像更具可控性,Controlnet、T2I-adapter等技术应运而生。本系列文章将从T2I-adapter的源码出发,分析其实现方法。
本篇是第一篇,主要介绍源码的运行方法,后续两篇将以深度图为例,分别分析推理部分和训练部分的代码。分析T2I-Adapter,也是为了继续研究我一直在研究的课题:“AI生成同一人物不同动作”,例如:罗培羽:stable-diffusion生成同一人物不同动作的尝试(多姿势图),Controlnet、T2I-adapter给了我一些灵感,后续将进行尝试。
T2I-Adapter论文地址如下,它与controlnet类似,都是在原模型增加一个旁路,然后对推理结果求和。
T2I-Adapter和controlnet有两个主要的不同点,从图中可见,其一是在unet的编码阶段增加参数,而controlnet主要是解码阶段;其二是controlnet复制unit的上半部结构,而T2I-Adapter使用不同的模型结构。由于采用较小的模型,因此T2I-Adapter的模型较小,默认下占用M左右,而controlnet模型一般要5G空间。
首先确保机器上装有3.6版本以上python,然后把代码clone下来。随后安装依赖项,打开requirements.txt,可以看到依赖项的内容。然后下载示例,下载的会放到examples目录下。接着下载sd模型到model目录下,再下载T2I-Adapter的模型到目录下,模型可以按需到huggingface.co/TencentA...下载。这里我下载了depth和openpose。sd模型除了上述的v1-5,也还下载了sd-v1-4.ckpt。
根据文档,尝试运行一个由深度图生成的例子,下图的左侧是深度图,提示语是"desk, best quality, extremely detailed",右侧是生成出来的。运行过程比较艰辛,一开始在一台8G显存的服务器上跑,显存不够;重新搭环境在一台G显存的服务器上跑,还是不够;最后用一台G显存的服务器,终于运行起来了。
接下来尝试跑openpose的例子,下图左侧是骨架图,提示词为"Iron man, high-quality, high-res",右侧是生成的图像。
既然能跑推理,那么尝试跑训练。为了后续修改代码运行,目标是准备一点点数据把训练代码跑起来,至于训练的效果不是当前关注的。程序中也有训练的脚步,我们以训练深度图条件为例,来运行train_depth.py。
显然,习惯了,会有一些问题没法直接运行,需要先做两步工作。准备训练数据,分析代码,定位到ldm/data/dataset_depth.py,反推它的数据集结构,然后准备对应数据。先创建文件datasets/laion_depth_meta_v1.txt,用于存放数据文件的地址,由于只是测试,我就只添加两行。然后准备,图中的.png和.png是结果图,.depth.png和.depth.png是深度图,.txt和.txt是对应的文本描述。
文本描述如下,都只是为了把代码跑起来而做的简单设置。设置环境变量,由于T2I-Adapter使用多卡训练,显然我也没这个环境,因此要让它在单机上跑。而代码中也会获取一些环境变量,因此做简单的设置。
做好准备工作,可以运行程序了,出于硬件条件限制,只能把batch size设置为1。在A显卡跑了约8小时,完成,按默认的配置,模型保存experiments/train_depth/models/model_ad_.pth。那么,使用训练出来的模型试试效果,能生成如下(此处只是为了跑起来代码,用训练集来测试),验证了可以跑起来。
运行起来,但这还不够,我们还得看看代码是怎么写法,下一篇见。
PS:《直观理解AI博弈原理》是笔者写的一篇长文,从五子棋、象棋、围棋的AI演进讲起,从深度遍历、MAX-MIN剪枝再到蒙特卡罗树搜索,一步步介绍AI博弈的原理,而后引出强化学习方法,通俗易懂地介绍AlphaGo围棋、星际争霸强化学习AI、王者荣耀AI的一些强化学习要点,值得推荐。
AUTOMATIC的webui是近期很流行的stable-diffusion应用,它集合stable-diffusion各项常用功能,还通过扩展的形式支持controlnet、lora等技术,我们也分析了它的源码实现,写了一系列文章。