在Llama 2和.NET 6中构建AI代理
一个AI代理是一种能够感知环境、处理信息并做出决策或采取行动以达到特定目标的计算机程序或系统。AI代理的设计目的是模仿人类智能和行为的一些方面,使其能在环境中自主或半自主地运行。
AI代理和LLMs之间的连接在于它们的交互方式。AI代理使用LLMs作为推理引擎来确定应该采取哪些动作以及以何顺序采取它们。您可以使用代理而不是直接使用LLM,并使其可以访问一组工具来根据您的预期任务提供一个序列。这种方法实现了代理和LLM之间的智能高效交互。
如何轻松快速构建一个人工智能代理?
我现在正在使用一些开源工具来构建我的自己的AI Agent,其中涉及到两个主要的开源项目:BotSharp/UI和LLamaSharp。我将在这个博客中详细介绍每个步骤,并保持更新。这里介绍的步骤是关于本地开发和运行的方法,因此它们将涉及一些配置文件的操作和一些C#代码的解释。因为这里使用的环境是.NET,所以这篇技术博客适合那些已经对.NET/C#有一定基础的开发者作为参考。在整个项目配置完成后,你可能会看到一个像这样的运行截图。
让我们开始记录每一步的操作。
我们使用BotSharp官方提供的一个名为Pizza Restaurant的商业场景演示,以展示具体的配置步骤。首先,我们需要将源代码从Github克隆到本地。这个步骤需要克隆两个开源项目。
git clone https://github.com/SciSharp/BotSharp
cd BotSharp
dotnet run -p .\src\WebStarter
git clone https://github.com/SciSharp/BotSharp-UI
cd BotSharp-UI
npm install
npm run dev
如果在本地的WebStarter项目中没有对BotSharp.Plugin.LLamaSharp.csproj的引用,请手动添加项目引用。并在appsetting.json中的PluginLoader.Assemblies中添加BotSharp.Plugin.LLamaSharp。最后,在WebStarter中安装LLamaSharp后端包。您可以选择安装CPU版本或CUDA版本。前端和后端项目都正常启动后,您可以访问http://localhost:5015/继续操作。您可以使用默认的管理员账户登录。该账户已经放置在本地配置文件中。
第二步是配置兼容的llama 2模型设置。您需要添加一个LLM提供者。在此之前,您需要下载模型文件。以下是LLM提供者配置的参考代码。您需要替换llama-sharp的配置。
"LlmProviders": [
{
"Provider": "azure-openai",
"Models": [
{
"Name": "gpt-35-turbo",
"ApiKey": "",
"Endpoint": "https://gpt-35-turbo-chat.openai.azure.com/",
"Type": "chat",
"PromptCost": 0.0015,
"CompletionCost": 0.002
},
{
"Name": "gpt-35-turbo-instruct",
"ApiKey": "",
"Endpoint": "https://gpt-35-turbo-text.openai.azure.com/",
"Type": "text",
"PromptCost": 0.0015,
"CompletionCost": 0.002
}
]
},
{
"Provider": "llama-sharp",
"Models": [
{
"Name": "llama-2-7b-guanaco-qlora.Q2_K.gguf",
"Type": "chat"
}
]
}
]
修改appsettings.json文件后,需要重新启动BotSharp项目才能使更新生效。接下来,您可以在插件界面中看到LLamaSharp插件。它目前仍处于禁用状态。单击安装以启用此插件。关于BotSharp插件的工作原理,您可以参考官方文档了解更多。为了运行比萨餐厅示例,您还需要安装PizzaBot插件。
安装完这两个插件后,点击“代理人”菜单,你会发现这里有几个更多的代理人。这些代理人是由相应的插件提供的。你也可以自己制作代理人插件以满足你的业务需求。在这里,我们可以看到订购、订单查询和支付的代理人。不同的代理人会根据用户的不同请求进行相应的处理。
还有一个配置需要支持Llama 2模型。可以在代理详细信息中修改此配置。将LLM配置的提供者模型更新为您的配置。"Model"是您刚刚下载的模型文件的名称。
好的,伟大的工作已经完成。您现在可以测试PizzaBot了。返回到代理界面,点击Ordering代理下的Chat Test按钮。如果您正在使用LLamaSharp的CPU后端,您会遇到响应速度慢的问题。切换到GPU版本会快得多。
好的,到目前为止,你可以使用.NET本地运行Llama模型的LLM代理。BotSharp是一个开源的、可扩展的代理设计和管理工具。如果你对这个项目感兴趣,请到Github上保存并收藏它。