网页设计视频网站,做网站开创和中企动力哪家强,宁波网站建设ysdsh,网站安全架构大家好#xff0c;我今天带来了一个让人瞠目结舌的实验#xff1a;在一小时内快速生成了100个API#xff01; 其实如果手速高#xff0c;可以更多。要知道#xff0c;这得益于之前介绍过的Natasha —— 一个可以动态编译并加载代码的神奇工具。
动态编程神器! 探秘.Net… 大家好我今天带来了一个让人瞠目结舌的实验在一小时内快速生成了100个API 其实如果手速高可以更多。要知道这得益于之前介绍过的Natasha —— 一个可以动态编译并加载代码的神奇工具。
动态编程神器! 探秘.Net中的AI时代秘密武器——Natasha框架全解析 而当它与Semantic Kernel结合时我们可以使用AI来动态生成代码这可不是闹着玩的 首先让我们先来观摩一下这个令人震惊的效果 效果视频 在这个视频中我们可以看见我通过一句话就能生成出一个API接口。包含加法接口爬取百度内容的接口以及求质数转大写的接口。 接下来让我们深入了解一下背后的代码实现吧。 首先在开始之前需要确保我们的项目中引入了Semantic Kernel。大家若还不够了解它请回顾我之前的文章。 下面是Natasha相关的NuGet包引用别忘了添加到你的项目中
PackageReference IncludeDotNetCore.Natasha.CSharp.Compiler Version8.0.0 /PackageReference IncludeDotNetCore.Natasha.CSharp.Compiler.Domain Version8.0.0 /PackageReference IncludeDotNetCore.Natasha.Domain Version8.0.0 / Natasha工作前需要做一些准备我们需要将它注入依赖
public void ConfigureServices(IServiceCollection services){ // ...省略其他依赖注入... services.AddSingletonDynamicChangeTokenProvider() .AddSingletonIActionDescriptorChangeProvider(provider provider.GetRequiredServiceDynamicChangeTokenProvider());} 然后在Configure方法中我们进行一些设置使得Natasha可以正常运作
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider){ NatashaController.Builder (ApplicationBuilder)app; // ...省略其他配置... app.UseEndpoints(endpoints { endpoints.MapControllers(); NatashaController.Endpoints endpoints.DataSources; });} 现在来到了最关键的部分定义Semantic Kernel的Semantic Function。我们需要一个能够根据用户需求动态生成需要的Controller层Action代码的代码生成器示例如下
你作为一个代码生成器需要通过用户需求生成对应Controller层的Action代码你需要完成以下功能{{$input}}
---------------------------------------------参考如下代码示例进行生成,并且不要有其他多余文字csharp[HttpPost]public async TaskIActionResult Test(){ //代码路径 var a0; return Ok(a.Success());} 在准备好上述步骤之后我创建了一个通用的API
/// summary/// Natasha示例控制器/// /summary[Route(api/[controller]/[action])][ApiController]public class NatashaController : ControllerBase{ // ...省略NatashaController部分成员变量和构造器...[HttpPost] public async TaskIActionResult AICode(CodeDTO model, [FromServices] ApplicationPartManager manager, [FromServices] DynamicChangeTokenProvider tokenProvider) { // ...此处省略SK执行Semantic Function代码生成的详细实现...// 动态编译生成的代码并加入到项目中进行加载 AssemblyCSharpBuilder builder new AssemblyCSharpBuilder(); var myAssembly builder.UseRandomDomain().UseSmartMode().Add(classCode).GetAssembly(); var assembly new AssemblyPart(myAssembly); AssemblyCache.Enqueue(assembly); manager.ApplicationParts.Add(assembly); tokenProvider.NotifyChanges(); return Ok(code); }}然后每当我们调用这个API时我们就可以生成一个新的API了 在本次测试里我们先按比较简单的方式让AI来生成接口并进行动态加载和刷新路由。 这里由于我们是预编译的c#语言也可以针对AI生成的代码进行预编译检测如果有异常把异常信息重新包装Prompt进行提交 让AI进行修改。这将是一个非常不错的主意未来我会继续完善让AI具备写Service以及仓储层的能力 往期文章回顾
揭秘AI与RPA结合的强大力量轻松实现AI自动化网页操作
语音革命打造您的个人AI助手悄悄分享我的开源语音识别全攻略
Semantic Kernel与Everything相结合实现本地文件搜索新境界让你的文件“无所遁形”
探索Avalonia与SemanticKernel打造全能AI本地助手 如果这些文章帮助到了你欢迎订阅我的公众号