随笔分类 - .net
.net 系列文章
摘要:Plugins在SK中是一个神奇的功能。我们说大语言模型具有不确定性,我们的代码是确定性的,而Plugins有把这种不确定性转成确定性能功能。 下面的例子是一个通过自然语言实现购买的案例,客户可以通过文字或语音来输入自然语言, <ItemGroup> <PackageReference Includ
阅读全文
摘要:LLM下的Agent代表着一个“智能体”角色,或是大领域全才,或是细分领导专才。成为一个代理后的最大好处是可以让Agent作为代表,与其他的Agent进行交互,直到达到想要的结果。 下面是一个高级程序员和架构师两个架构作为代理的案例,高级程序员写完程序后,架构师来Review,针对性地提出修改意见。
阅读全文
摘要:体之前说过结构化Prompt,这是一个具体案例的使用,本例是把公众号上中文技术文章翻译成选择的语言。 基本思路是用户输入文章的url,系统用Playwright读取html内容,然后利用SemanticKernel的OpenAIChatCompletionService功能,按照提示词翻译,最后用P
阅读全文
摘要:本篇看一下ImageToText,获取图片内的信息,加以利用。全例是用户上传图片,利用AI来判断上传的图片是否正确。 <ItemGroup> <PackageReference Include="Microsoft.SemanticKernel" Version="1.6.2" /> </ItemG
阅读全文
摘要:生成图片是LLM多模态中的基本功能,SemanticKernel也把这个基本功能引入进来了,是通过添加TextToImage来实现的,对于GPT,内部对应着DallE模型,下面的例子通过一个简单的方式来实现生成。 首先引入SemanticKernel。 <ItemGroup> <PackageRef
阅读全文
摘要:去年写过几过几篇关于SemanticKernel的文章,由于正式发布的版本与之前的版本变化较大,加上前的东京《生成式AI应用开发》活动,想把演示的Demo逐一分享出来,的以再次开启SemanticKernel系统。 下面是一个Chat的例子,用户提问,如果本地有固定数据能对应,直接返回,如果没有,就
阅读全文
摘要:前两篇关于Prompt的文章分别从提示词规则建议和具体框架角度说明了一下Prompt的使用技巧,接下来可以说是对框架式提示词的的进一步升级——结构化提示词。 结构化定义: 对信息进行组织,使其遵循特定的模式和规则,从而方便有效理解信息。 结构化提示词语法: 这个结构支持 Markdown 语法,也支
阅读全文
摘要:在Prompt入门里,我们分享了OpenAI官方给出的提示词建议,但这些建议基本上是指导性的,方向性的,概念性的,虽然对我们编写提示词有很大帮助,但究竟我们的提示词好还是不好,效率怎么性,很大程度上要看每个人的理解,和提示词输出。 那么有没有一个可操作性的,方法论的,谁都能套格式呢?肯定是有的,下面
阅读全文
摘要:还记得ChatGPT刚出来时,体验后的感觉是:知识渊博,无所不通;智慧在线,逻辑清晰,简直可以用“高端,大气,上档次”形容,但也不失“低调,奢华,有内涵”。 使用GPT经历过几个阶段:最开始是娱乐阶段:以聊天,写诗之类为主;之后经历了漫长的搜索引擎阶段:搜索知识点,技术点或输出文案题纲;再到现在的生
阅读全文
摘要:Coravel 通过使高级应用程序功能(如任务/作业调度、排队、缓存、邮件(以及更多!))易于访问且易于使用,帮助开发人员快速启动并运行 .NET 应用程序。具有简单、富有表现力和直接的语法。 Coravel引入一个广播事件机制,可以通过简单的事件注册,事件订阅,完成一个广播。下面是一个修改密码的功
阅读全文
摘要:Prompt,,提示词,是使用生成式AI的必备前提,好的提示词能让生成式AI给出更精准的结果,不仅能节省时间,还能节省tokens(这可是美金呀),所以在生成式AI出来后,就有Prompt Engineer提示工程师之说。于是,就有很多分享提示的文章,还有很多网站,专门收集各种场合的提示词。 Ope
阅读全文
摘要:Coravel 通过使高级应用程序功能(如任务/作业调度、排队、缓存、邮件(以及更多!))易于访问且易于使用,帮助开发人员快速启动并运行 .NET 应用程序。具有简单、富有表现力和直接的语法。 Coravel非常简单,通过Rember来保存缓存数据,同时可以设定缓存的时长,然后通过Get来获取缓存。
阅读全文
摘要:Coravel 通过使高级应用程序功能(如任务/作业调度、排队、缓存、邮件(以及更多!))易于访问且易于使用,帮助开发人员快速启动并运行 .NET 应用程序。具有简单、富有表现力和直接的语法。 Coravel还提供了一种简单的Queue机制,通过把任务放入队列,系统会自动在30秒执行一次,每次都会把
阅读全文
摘要:Json缩进 增加了Json输出时的缩进控制,代码如下: using System.Text.Json; var options = new JsonSerializerOptions { //启用缩进 WriteIndented = true, //缩进字符 IndentCharacter = '
阅读全文
摘要:Coravel 通过使高级应用程序功能(如任务/作业调度、排队、缓存、邮件(以及更多!))易于访问且易于使用,帮助开发人员快速启动并运行 .NET 应用程序。具有简单、富有表现力和直接的语法。 下面是简单的用法,通过注入Scheduler和在中间件中定义调度的实现,来完成简单的定时使用。 using
阅读全文
摘要:Rin 可以捕获对 ASP.NET Core 应用程序的 HTTP 请求,并为捕获的数据提供查看器。它是调试 Web 应用程序(例如,网站、API 应用)的有用工具。 先看如下代码: var builder = WebApplication.CreateBuilder(args); builder.
阅读全文
摘要:构造函数,是在初始化对象时,把数据传给对象。那Deconstruct正好相反,是从对象中把想要的数据返回。 下面看一个使用场景,下面是定义一个record的Order,我们可以用元数据的方式,从Order对象中把no,orderTime取出来,这是怎么做到的呢? //Order定义成record r
阅读全文
摘要:记得之前在做医保接口时,经常要调一些C++或delphi写的本地dll(这些dll通常是用来读医保卡之类),这里简单介绍一下用C#生成本地可以直接调用dll,具体做法是通过UnmanagedCallersOnlyAttribute来完成。 dll项目文件如下 <Project Sdk="Micros
阅读全文
摘要:在AOT项目中,使用反射有一些问题,本程序包利用源生成器,按不同的维度,提前获取对应类型的元数据,从而达到平滑使用Reflection部分功能。 项目: https://github.com/axzxs2001/AOTReflection nuget: https://www.nuget.org/p
阅读全文
摘要:Dapper.AOT可以是第一时间响应.NET发布AOT项目的ORM,虽然不像Dapper功能完善,但也基本能满足使用。 还记得我在拦截器Interceptors中最后的提示吗?当源生成器遇上拦截器后,就迸射出爱的火花,Dapper.AOT就是它们爱的结晶。 拦截器 桂素伟,公众号:桂迹.net8:
阅读全文