GitHub_Trending/smar/smartcomponents:低代码平台中的AI功能集成
【免费下载链接】smartcomponents 项目地址: https://gitcode.com/GitHub_Trending/smar/smartcomponents
在当今快速发展的软件开发领域,低代码平台正以其高效、便捷的特性改变着传统开发模式。然而,如何在低代码环境中无缝集成人工智能(AI)功能,为用户提供更智能、更高效的体验,一直是开发者面临的挑战。GitHub上的热门项目SmartComponents正是为解决这一痛点而生,它提供了一系列预构建的AI驱动组件,让开发者能够轻松地将强大的AI功能集成到.NET应用中,无需深入研究复杂的机器学习算法或提示工程。
SmartComponents简介
SmartComponents是由.NET团队开发的一个实验性项目,旨在让开发者能够快速、轻松地向.NET应用添加真正有用的AI功能,而不必担心浪费精力。它的核心思想是提供预构建的端到端AI功能组件,开发者可以将这些组件直接嵌入到现有的用户界面中,从而提升应用的生产力,为最终用户带来实实在在的价值。
目前,SmartComponents支持ASP.NET Core 6.0及更高版本,并提供了对以下两种UI技术的支持:
- Blazor(参见:Smart Controls and Blazor 入门指南)
- MVC / Razor Pages(参见:Smart Controls and MVC/Razor Pages 入门指南)
根据社区反馈,未来可能会添加对其他UI技术(如原生应用)的支持。
核心AI组件介绍
SmartComponents目前包含多个强大的AI组件,这些组件针对不同的应用场景,为用户提供智能化的交互体验。
Smart Paste(智能粘贴)
Smart Paste是一项智能应用功能,它能够利用用户剪贴板中的数据自动填充表单。您可以在Web应用中的任何现有表单上使用此功能,极大地减少用户的输入工作量。
典型应用场景:
- 邮寄地址表单:用户可以从电子邮件或Word文档中复制整个邮寄地址,然后点击应用中的"Smart Paste"按钮,系统会自动填充所有与地址相关的字段(姓名、地址行1、地址行2、城市、州等)。
- 错误报告表单:用户可以复制一段关于问题的自然语言描述,然后点击"Smart Paste"按钮,系统会自动填充"标题"、"严重程度"、"重现步骤"等字段,并对原文进行适当的改写。
集成示例(Blazor):
@page "/"
@using SmartComponents
<form>
<p>姓名: <InputText @bind-Value="@name" /></p>
<p>地址行1: <InputText @bind-Value="@addr1" /></p>
<p>城市: <InputText @bind-Value="@city" /></p>
<p>邮政编码: <InputText @bind-Value="@zip" /></p>
<button type="submit">提交</button>
<SmartPasteButton DefaultIcon />
</form>
@code {
string? name, addr1, city, zip;
}
Smart TextArea(智能文本区域)
Smart TextArea是对传统文本区域的AI升级。它能够根据配置和用户当前输入的内容,提供整句的自动补全建议,帮助用户更快速、更规范地完成文本输入。
典型应用场景:
- 客户服务:在实时聊天系统、支持工单系统、CRM或错误跟踪系统中,客服人员可以利用Smart TextArea更快地撰写回复,同时保持一致的语气和格式。
- 业务流程跟踪:许多流程需要使用自由文本跟踪事件和状态,Smart TextArea可以减少输入行业或业务特定术语和事件所需的按键次数。
集成示例(Blazor):
@page "/"
@using SmartComponents
<SmartTextArea @bind-Value="@text" UserRole="人力资源专员回复员工咨询"
UserPhrases="@userPhrases" />
@code {
string? text;
string[] userPhrases = [
"您的假期津贴为28天,详见我们的政策:https://example.com/policies/vacation",
"根据公司规定,",
"请提供更多详细信息以便我们进一步协助您。",
"感谢您的咨询。"
];
}
Smart ComboBox(智能组合框)
组合框(combo box)是一种允许用户输入值并从自动完成下拉列表中选择预定义值的UI输入元素。传统的组合框仅基于精确的子字符串匹配来建议值,而Smart ComboBox通过语义匹配(即意义最相关的选项)来提供建议,这对于那些不知道或不记得确切预定义字符串的用户来说非常有帮助。
典型应用场景:
- 会计类别:在费用跟踪应用中,用户输入"plane tic",Smart ComboBox会提供"Transport: Airfare"作为建议,帮助用户快速找到正确的会计类别。
- 标签和标签:在错误跟踪系统中,用户输入"slow",Smart ComboBox会提供"Performance"和"Usability"等现有标签作为建议,避免创建重复标签。
集成关键点: 与其他需要配置OpenAI后端的组件不同,Smart ComboBox完全在本地运行,因此不需要额外的AI服务配置。它利用本地嵌入(Local Embeddings)技术进行语义匹配。
核心代码示例:
// 在Program.cs中注册LocalEmbedder服务
builder.Services.AddSingleton<LocalEmbedder>();
// 设置Smart ComboBox的API端点
var embedder = app.Services.GetRequiredService<LocalEmbedder>();
var categories = embedder.EmbedRange(new[] { "Groceries", "Utilities", "Rent", "Mortgage", "Car Payment", "Car Insurance", ... });
app.MapSmartComboBox("api/accounting-categories",
request => embedder.FindClosest(request.Query, categories));
Local Embeddings(本地嵌入)
嵌入(Embeddings)用于语义相似性搜索。自然语言字符串被转换为称为嵌入的数值向量。两个字符串在概念上的关联越紧密,它们的向量就越接近。虽然您可以使用外部AI服务来计算嵌入,但在许多情况下,您可以直接在服务器上本地计算(不需要GPU,CPU即可正常工作)。SmartComponents.LocalEmbeddings就是一个简化此过程的包。
核心功能:
- 计算嵌入:将文本字符串转换为数值向量。
- 相似性评估:计算两个嵌入向量之间的相似度得分。
- 相似性搜索:从一组候选嵌入中找到与目标嵌入最相似的结果。
代码示例:
using var embedder = new LocalEmbedder();
// 计算嵌入
var cat = embedder.Embed("Cats can be blue");
var dog = embedder.Embed("Dogs can be red");
var snooker = embedder.Embed("Snooker world champion Stephen Hendry");
// 评估语义相似性
var kitten = embedder.Embed("Kittens!!!");
Console.WriteLine(kitten.Similarity(cat)); // 输出: 0.65
Console.WriteLine(kitten.Similarity(dog)); // 输出: 0.53
Console.WriteLine(kitten.Similarity(snooker)); // 输出: 0.37
// 查找最接近的匹配
var candidates = embedder.EmbedRange(["Soccer", "Tennis", "Swimming", "Horse riding", "Golf", "Gymnastics"]);
var target = embedder.Embed("ball game");
var closest = LocalEmbedder.FindClosest(target, candidates, maxResults: 3);
Console.WriteLine(string.Join(", ", closest)); // 输出: Soccer, Golf, Tennis
快速开始
要开始使用SmartComponents,您需要按照相应的指南进行安装和配置。
前提条件
- .NET 6.0或更高版本
- 对于Smart Paste和Smart TextArea,需要配置OpenAI后端(参见:配置OpenAI后端)
安装步骤
-
克隆仓库
git clone https://gitcode.com/GitHub_Trending/smar/smartcomponents cd smartcomponents -
按照您使用的UI技术,参考相应的入门指南:
-
对于需要OpenAI后端的组件,编辑解决方案根目录下的
RepoSharedConfig.json文件,添加您的API密钥。 -
运行示例应用
cd samples/ExampleBlazorApp dotnet run
性能与扩展性考虑
SmartComponents在设计时充分考虑了性能和扩展性,特别是对于Local Embeddings组件。
- 嵌入计算速度:在Intel i9-11950H CPU上,使用
embedder.Embed处理一个50字符的字符串大约需要0.5毫秒的CPU时间(文本越短越快)。 - 相似性搜索速度:使用
LocalEmbedder.FindClosest进行内存中的单线程相似性搜索,在1,000个候选中搜索大约需要0.06毫秒,在100,000个候选中搜索大约需要6毫秒(与候选数量成线性关系,与文本长度无关)。
扩展建议: 如果您的应用需要处理大量数据或更高的并发,可以考虑以下扩展策略:
- 使用外部嵌入服务:如OpenAI embeddings或Azure OpenAI embeddings。
- 使用专业向量数据库:如Faiss、pgvector或其他云向量数据库服务。
总结与展望
SmartComponents为.NET开发者提供了一个强大而便捷的方式,将AI功能集成到低代码平台中。通过其预构建的组件,开发者可以快速提升应用的智能化水平,而无需深入AI领域的复杂知识。无论是智能表单填充、文本自动补全,还是语义化搜索,SmartComponents都能为用户带来更智能、更高效的交互体验。
作为一个实验性项目,SmartComponents的未来发展将高度依赖社区反馈。我们鼓励开发者尝试这些组件,并通过项目Issue提供宝贵的意见和建议。
无论您是构建企业内部工具还是面向最终用户的应用,SmartComponents都能帮助您以最小的成本和精力,为应用注入强大的AI能力,从而在竞争激烈的软件市场中脱颖而出。
反馈与支持
SmartComponents目前还不是.NET官方支持的一部分。它能否升级到完全支持状态取决于社区反馈和使用水平。我们非常期待您的反馈,即使只是简单地说"是的,我需要这个"或"我不会使用这个,因为..."。
贡献
本项目采用了Microsoft Open Source Code of Conduct。有关更多信息,请参见Code of Conduct FAQ或联系opencode@microsoft.com提出任何其他问题或意见。
【免费下载链接】smartcomponents 项目地址: https://gitcode.com/GitHub_Trending/smar/smartcomponents
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考






