> 自媒体 > (AI)人工智能 > SimpleAIAgent:使用免费的glm-4-flash即可开始构建简单的AI Agent应用
SimpleAIAgent:使用免费的glm-4-flash即可开始构建简单的AI Agent应用
来源:opendotnet
2025-02-05 15:01:54
543
管理

SimpleAIAgent是基于C# Semantic Kernel 与 WPF构建的一款AI Agent探索应用。主要用于使用国产大语言模型或开源大语言模型构建AI Agent应用的探索学习,希望能够帮助到感兴趣的朋友。

接下来我想分享一下我的AI Agent应用实践。

翻译文本并将文本存入文件

第一个例子是翻译文本,并将文本存入指定的文件。

输入如下内容:

执行过程

第一步,LLM判断应该调用的函数与参数如下:

第四步,LLM调用这个函数,并返回函数返回值:

第五步,LLM判断任务已经完成,调用结束函数:

查看结果

是一段关于WPF的中文描述,现在我想让LLM帮我翻译成英文之后再保存到另一个文件。

同样还是使用免费的glm-4-flash

执行过程

第一步,LLM判断应该调用的函数与参数如下:

第四步,返回最终的回应:

实现要点

大家可能会注意到实现的要点其实就是要让LLM自动调用函数,也就是实现自动函数调用的功能。

之后要做的就是根据你想让LLM自动做的事去写插件,然后导入这个插件罢了。

插件中函数最好不要太多,太多模型能力弱的就会乱调用。根据你的需求,实现不同人物导入不同的插件比较好。

插件可以这样写,以上面的翻译插件为例:

#pragma warning disable SKEXP0050internal class TranslationFunctions{private readonly Kernel _kernel;public TranslationFunctions{var handler = new OpenAIHttpClientHandler;var builder = Kernel.CreateBuilder.AddOpenAIChatCompletion(modelId: ChatAIOption.ChatModel,apiKey: ChatAIOption.Key,httpClient: new HttpClient(handler));_kernel = builder.Build;}[KernelFunction, Description("选择用户想要的语言翻译文本")]public async Task TranslateText([Description("要翻译的文本")] string text,[Description("要翻译成的语言,从'中文'、'英文'中选一个")] string language){string skPrompt = """{{$input}}将上面的文本翻译成{{$language}},无需任何其他内容""";var result = await _kernel.InvokePromptAsync(skPrompt, new { ["input"] = text, ["language"] = language });var str = result.ToString;return str;}[KernelFunction, Description("实现文件到文件的翻译")]public async Task TranslateTextFileToFile([Description("要翻译的文件路径")] string path1,[Description("保存翻译结果的文件路径")] string path2,[Description("要翻译成的语言,从'中文'、'英文'中选一个")] string language){string fileContent = File.ReadAllText(path1);var lines = TextChunker.SplitPlainTextLines(fileContent,100);var paragraphs = TextChunker.SplitPlainTextParagraphs(lines, 1000);string result = "";string skPrompt = """{{$input}}将上面的文本翻译成{{$language}},无需任何其他内容""";foreach (var paragraph in paragraphs){var result1 = await _kernel.InvokePromptAsync(skPrompt, new { ["input"] = paragraph, ["language"] = language });result = result1.ToString "rn";}var str = result.ToString;// 使用 StreamWriter 将文本写入文件using (StreamWriter writer = new StreamWriter(path2, true)){writer.WriteLine(str);}string message = $"已成功实现文件{path1}到文件{path2}的翻译";return message;}[KernelFunction, Description("将文本保存到文件")]public string SaveTextToFile([Description("要保存的文本")] string text,[Description("要保存到的文件路径")] string filePath){// 使用 StreamWriter 将文本写入文件using (StreamWriter writer = new StreamWriter(filePath, true)){writer.WriteLine(text);}return "已成功写入文件";}[KernelFunction, Description("从文件中读取文本")]public string GetTextFromFile([Description("要读取的文件路径")] string filePath){string fileContent = File.ReadAllText(filePath);return fileContent;}}

就是加上了一些描述用于帮助LLM理解函数的用途罢了,相信对程序员朋友来说不是什么问题,现在就可以动手构建自己的AI Agent应用了。

希望这次的分享对使用LLM构建AI Agent应用感兴趣的朋友有所帮助。

对这个应用感兴趣的朋友,拉一下代码,将appsettings.example.json改为appsettings.json,填入你的API Key与模型名或者使用Ollma填入地址,填入模型名即可快速体验。

GitHub地址:https://github.com/Ming-jiayou/SimpleAIAgent

0
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 凡本网注明 “来源:XXX(非本站)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。 如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。 QQ:617470285 邮箱:617470285@qq.com
相关文章
问界汽车通报广东惠州车辆起火事件:车辆三电系统状态正常,且未见车辆其它..
2月23日,问界汽车发布关于广东省惠州市车辆起火的说明:经初步调查,车..
去年我国汽车产量是美日德总和的1.5倍!今年有望再创新高..
2025年,全球每卖出三辆新车,就有一辆是中国制造,这个数字有实实在在的..
2026,没有“新技术”?
2026年中国汽车行业的技术演进,呈现出一个共识:没有颠覆性技术涌现,竞..
新技术密集发布,2026补贴少了,反而更适合买高端电车?..
龙年春节喜气洋洋的气氛里,提前开工的车企,正酝酿着年后的价格厮杀。尤..
YU7销量远超特斯拉!谁能告诉我:到底是谁在买小米汽车啊?..
小米YU7,可以说是继吉利星愿之后,又一台“非典型”神车。1月份,在绝大..
问界汽车回应M9起火事件,称“三电系统正常,将配合调查”..
2 月 23 日,问界汽车发布关于广东省惠州市车辆起火的说明。问界汽车表示..
迈入全新阶段!百年车企官宣
2月19日,雷诺集团发布2025年年度报告。财报显示,2025年全年,雷诺集团..
奔驰C级纯电版要来了!续航800km,全新平台打造,入华会好卖?..
在奔驰现有的产品体系里,奔驰C级绝对是贡献销量的绝对主力车型,要知道..
德国汽车业逼宫默茨:中国人都不爱买德国车了,必须和中国提要求..
相比之下,反而是如今的欧洲,正高举着关税大棒,对中国产的电动车严防死..
关于作者
司机(普通会员)
文章
1968
关注
0
粉丝
0
点击领取今天的签到奖励!
签到排行

成员 网址收录40418 企业收录2986 印章生成263660 电子证书1157 电子名片68 自媒体103473

0
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索