Add LLamaSharp.

This commit is contained in:
Haiping Chen 2023-05-26 20:58:31 -05:00
parent 96e64e60fb
commit 4d5ac2111d
31 changed files with 403 additions and 108 deletions

View file

@ -23,11 +23,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebStarter", "src\WebStarte
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Platform.AzureAi", "src\Platforms\BotSharp.Platform.AureAi\BotSharp.Platform.AzureAi.csproj", "{B874E946-AE39-4731-8DA5-16A99115D111}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BotUIs", "BotUIs", "{42226933-0A0D-48E8-85EC-AFE773A1F841}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UiAdapters", "UiAdapters", "{42226933-0A0D-48E8-85EC-AFE773A1F841}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChatbotUI", "src\BotUIs\ChatbotUI\ChatbotUI.csproj", "{E33CC7F2-225E-42A9-8B4A-EAA97930D820}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ChatbotUI", "src\UiAdapters\ChatbotUI\ChatbotUI.csproj", "{223895FB-EE4C-4225-8042-292352B43973}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Platform.Local", "src\Platforms\BotSharp.Platform.Local\BotSharp.Platform.Local.csproj", "{7ECA0231-ECE5-416B-AC61-9B1A8DACCD39}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Platform.LlamaSharp", "src\Platforms\BotSharp.Platform.LlamaSharp\BotSharp.Platform.LlamaSharp.csproj", "{0D2CA3E8-11A1-4CA4-B07B-4EF01378866D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -93,22 +93,22 @@ Global
{B874E946-AE39-4731-8DA5-16A99115D111}.Release|Any CPU.Build.0 = Release|Any CPU
{B874E946-AE39-4731-8DA5-16A99115D111}.Release|x64.ActiveCfg = Release|Any CPU
{B874E946-AE39-4731-8DA5-16A99115D111}.Release|x64.Build.0 = Release|Any CPU
{E33CC7F2-225E-42A9-8B4A-EAA97930D820}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E33CC7F2-225E-42A9-8B4A-EAA97930D820}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E33CC7F2-225E-42A9-8B4A-EAA97930D820}.Debug|x64.ActiveCfg = Debug|Any CPU
{E33CC7F2-225E-42A9-8B4A-EAA97930D820}.Debug|x64.Build.0 = Debug|Any CPU
{E33CC7F2-225E-42A9-8B4A-EAA97930D820}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E33CC7F2-225E-42A9-8B4A-EAA97930D820}.Release|Any CPU.Build.0 = Release|Any CPU
{E33CC7F2-225E-42A9-8B4A-EAA97930D820}.Release|x64.ActiveCfg = Release|Any CPU
{E33CC7F2-225E-42A9-8B4A-EAA97930D820}.Release|x64.Build.0 = Release|Any CPU
{7ECA0231-ECE5-416B-AC61-9B1A8DACCD39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7ECA0231-ECE5-416B-AC61-9B1A8DACCD39}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7ECA0231-ECE5-416B-AC61-9B1A8DACCD39}.Debug|x64.ActiveCfg = Debug|Any CPU
{7ECA0231-ECE5-416B-AC61-9B1A8DACCD39}.Debug|x64.Build.0 = Debug|Any CPU
{7ECA0231-ECE5-416B-AC61-9B1A8DACCD39}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7ECA0231-ECE5-416B-AC61-9B1A8DACCD39}.Release|Any CPU.Build.0 = Release|Any CPU
{7ECA0231-ECE5-416B-AC61-9B1A8DACCD39}.Release|x64.ActiveCfg = Release|Any CPU
{7ECA0231-ECE5-416B-AC61-9B1A8DACCD39}.Release|x64.Build.0 = Release|Any CPU
{223895FB-EE4C-4225-8042-292352B43973}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{223895FB-EE4C-4225-8042-292352B43973}.Debug|Any CPU.Build.0 = Debug|Any CPU
{223895FB-EE4C-4225-8042-292352B43973}.Debug|x64.ActiveCfg = Debug|Any CPU
{223895FB-EE4C-4225-8042-292352B43973}.Debug|x64.Build.0 = Debug|Any CPU
{223895FB-EE4C-4225-8042-292352B43973}.Release|Any CPU.ActiveCfg = Release|Any CPU
{223895FB-EE4C-4225-8042-292352B43973}.Release|Any CPU.Build.0 = Release|Any CPU
{223895FB-EE4C-4225-8042-292352B43973}.Release|x64.ActiveCfg = Release|Any CPU
{223895FB-EE4C-4225-8042-292352B43973}.Release|x64.Build.0 = Release|Any CPU
{0D2CA3E8-11A1-4CA4-B07B-4EF01378866D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0D2CA3E8-11A1-4CA4-B07B-4EF01378866D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0D2CA3E8-11A1-4CA4-B07B-4EF01378866D}.Debug|x64.ActiveCfg = Debug|Any CPU
{0D2CA3E8-11A1-4CA4-B07B-4EF01378866D}.Debug|x64.Build.0 = Debug|Any CPU
{0D2CA3E8-11A1-4CA4-B07B-4EF01378866D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0D2CA3E8-11A1-4CA4-B07B-4EF01378866D}.Release|Any CPU.Build.0 = Release|Any CPU
{0D2CA3E8-11A1-4CA4-B07B-4EF01378866D}.Release|x64.ActiveCfg = Release|Any CPU
{0D2CA3E8-11A1-4CA4-B07B-4EF01378866D}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -120,8 +120,8 @@ Global
{36F5CEBD-31A8-4BEF-8BAA-BAC4E63E4815} = {E29DC6C4-5E57-48C5-BCB0-6B8F84782749}
{286C7DE5-1EBC-4D28-AB25-4FAAD4C31D2A} = {FFA662D3-B67B-478D-92FC-76DC5EB64412}
{B874E946-AE39-4731-8DA5-16A99115D111} = {FFA662D3-B67B-478D-92FC-76DC5EB64412}
{E33CC7F2-225E-42A9-8B4A-EAA97930D820} = {42226933-0A0D-48E8-85EC-AFE773A1F841}
{7ECA0231-ECE5-416B-AC61-9B1A8DACCD39} = {E29DC6C4-5E57-48C5-BCB0-6B8F84782749}
{223895FB-EE4C-4225-8042-292352B43973} = {42226933-0A0D-48E8-85EC-AFE773A1F841}
{0D2CA3E8-11A1-4CA4-B07B-4EF01378866D} = {FFA662D3-B67B-478D-92FC-76DC5EB64412}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A9969D89-C98B-40A5-A12B-FC87E55B3A19}

View file

@ -1,4 +1,5 @@
# The Open Source AI Chatbot Platform Builder
# Chatbot Platform Builder
## Powered by LLM
[![Discord](https://img.shields.io/discord/1106946823282761851?label=Discord)](https://discord.gg/qRVm82fKTS)
[![QQ群聊](https://img.shields.io/static/v1?label=QQ&message=群聊&color=brightgreen)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=sN9VVMwbWjs5L0ATpizKKxOcZdEPMrp8&authKey=RLDw41bLTrEyEgZZi%2FzT4pYk%2BwmEFgFcrhs8ZbkiVY7a4JFckzJefaYNW6Lk4yPX&noverify=0&group_code=985366726)

View file

@ -1,39 +0,0 @@
using BotSharp.Abstraction;
using BotSharp.Abstraction.Models;
using ChatbotUI.ViewModels;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
namespace BotSharp.Platform.AzureAi.Controllers;
[ApiController]
public class ChatbotUiController : ControllerBase, IBotUiAdapter
{
private readonly ILogger<ChatbotUiController> _logger;
public ChatbotUiController(ILogger<ChatbotUiController> logger)
{
_logger = logger;
}
[HttpGet("/v1/models")]
[HttpGet("/openai/deployments")]
public OpenAiModels GetOpenAiModels()
{
return new OpenAiModels
{
Data = new List<AiModel>
{
new AiModel
{
Id = "gpt-3.5-turbo",
Model = "gpt-3.5-turbo",
Name = "Default (GPT-3.5)",
MaxLength = 4000,
TokenLimit = 4000
}
}
};
}
}

View file

@ -6,4 +6,10 @@
<LangVersion>10.0</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />
</ItemGroup>
</Project>

View file

@ -0,0 +1,4 @@
global using System;
global using System.Collections.Generic;
global using System.Text;
global using System.Threading.Tasks;

View file

@ -0,0 +1,6 @@
namespace BotSharp.Abstraction;
public interface IChatCompletionHandler
{
Task GetChatCompletionsAsync(string text, Func<string, bool, Task> onChunkReceived);
}

View file

@ -0,0 +1,6 @@
namespace BotSharp.Abstraction;
public interface IPlatformMidware
{
Task GetChatCompletionsAsync(string text, Func<string, bool, Task> onChunkReceived);
}

View file

@ -1,9 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<LangVersion>10.0</LangVersion>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>0.4.0</Version>
</PropertyGroup>
@ -56,8 +56,6 @@
<ItemGroup>
<PackageReference Include="CherubNLP" Version="0.5.0" />
<PackageReference Include="Colorful.Console" Version="1.2.15" />
<PackageReference Include="Ding.Core" Version="1.1.8" />
<PackageReference Include="DotNetToolkit" Version="1.7.0" />
<PackageReference Include="EntityFrameworkCore.BootKit" Version="6.2.0" />
</ItemGroup>

View file

@ -0,0 +1,28 @@
using BotSharp.Core.Services;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
namespace BotSharp.Core;
public static class BotSharpServiceCollectionExtensions
{
public static IServiceCollection AddBotSharp(this IServiceCollection services)
{
services.AddScoped<IPlatformMidware, PlatformMidware>();
return services;
}
public static void ConfigureBotSharp(this IServiceCollection services)
{
}
public static IApplicationBuilder UseBotSharp(this IApplicationBuilder app)
{
if (app == null)
{
throw new ArgumentNullException(nameof(app));
}
return app;
}
}

View file

@ -0,0 +1,6 @@
global using System;
global using System.Collections.Generic;
global using System.Text;
global using System.Threading.Tasks;
global using BotSharp.Abstraction;
global using System.Linq;

View file

@ -0,0 +1,22 @@
using Microsoft.Extensions.DependencyInjection;
namespace BotSharp.Core.Services;
public class PlatformMidware : IPlatformMidware
{
private readonly IServiceProvider _services;
public PlatformMidware(IServiceProvider services)
{
_services = services;
}
public async Task GetChatCompletionsAsync(string text, Func<string, bool, Task> onChunkReceived)
{
var handlers = _services.GetServices<IChatCompletionHandler>().ToList();
for (int i = 0; i < handlers.Count(); i++)
{
var handler = handlers[i];
await handler.GetChatCompletionsAsync(text, onChunkReceived);
}
}
}

View file

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
@ -7,7 +7,11 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Infrastructure\BotSharp.Core\BotSharp.Core.csproj" />
<PackageReference Include="Azure.AI.OpenAI" Version="1.0.0-beta.5" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Infrastructure\BotSharp.Abstraction\BotSharp.Abstraction.csproj" />
</ItemGroup>
</Project>

View file

@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Nullable>enable</Nullable>
<LangVersion>10</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="LLamaSharp" Version="0.3.0" />
<PackageReference Include="LLamaSharp.Backend.Cpu" Version="0.3.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Infrastructure\BotSharp.Abstraction\BotSharp.Abstraction.csproj" />
</ItemGroup>
</Project>

View file

@ -0,0 +1,46 @@
using BotSharp.Abstraction;
using BotSharp.Platform.LlamaSharp;
using LLama;
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
namespace BotSharp.Platform.Local.Handlers;
public class ChatCompletionHandler : IChatCompletionHandler
{
private readonly IChatModel _model;
private readonly LlamaSharpSettings _settings;
public ChatCompletionHandler(LlamaSharpSettings settings)
{
_settings = settings;
_model = new LLamaModel(new LLamaParams(model: _settings.ModelPath,
n_ctx: 512,
interactive: true,
repeat_penalty: 1.0f,
verbose_prompt: false));
if (!string.IsNullOrEmpty(settings.InstructionFile))
{
var prompt = File.ReadAllText(settings.InstructionFile);
_model.InitChatPrompt(prompt, "UTF-8");
}
_model.InitChatAntiprompt(new string[] { "User:" });
}
public Task GetChatCompletionsAsync(string text, Func<string, bool, Task> onChunkReceived)
{
string totalResponse = "";
foreach (var response in _model.Chat(text, "", "UTF-8"))
{
Console.WriteLine(response);
totalResponse += response;
onChunkReceived(response, false);
}
onChunkReceived("", true);
return Task.CompletedTask;
}
}

View file

@ -0,0 +1,8 @@
namespace BotSharp.Platform.LlamaSharp;
public class LlamaSharpSettings
{
public string ModelPath { get; set; }
public string InstructionFile { get; set; }
public int MaxContextLength { get; set; } = 512;
}

View file

@ -0,0 +1,22 @@
using BotSharp.Abstraction;
using BotSharp.Platform.LlamaSharp;
using BotSharp.Platform.Local.Handlers;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace BotSharp.Core;
public static class LlamaSharplServiceCollectionExtensions
{
public static IServiceCollection AddLlamaSharp(this IServiceCollection services, IConfiguration config)
{
services.AddSingleton(x =>
{
var settings = new LlamaSharpSettings();
config.Bind("LlamaSharp", settings);
return settings;
});
services.AddScoped<IChatCompletionHandler, ChatCompletionHandler>();
return services;
}
}

View file

@ -1,13 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Nullable>enable</Nullable>
<LangVersion>10</LangVersion>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Infrastructure\BotSharp.Core\BotSharp.Core.csproj" />
</ItemGroup>
</Project>

View file

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
@ -6,8 +6,4 @@
<LangVersion>10</LangVersion>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Infrastructure\BotSharp.Core\BotSharp.Core.csproj" />
</ItemGroup>
</Project>

View file

@ -7,7 +7,9 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Azure.AI.OpenAI" Version="1.0.0-beta.5" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.0" />
<PackageReference Include="System.Text.Json" Version="7.0.0" />
</ItemGroup>
<ItemGroup>

View file

@ -0,0 +1,117 @@
using BotSharp.Abstraction;
using BotSharp.Abstraction.Models;
using ChatbotUI.ViewModels;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.Net.Http.Headers;
using Newtonsoft.Json.Serialization;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System;
using Azure.AI.OpenAI;
namespace BotSharp.Platform.AzureAi.Controllers;
[ApiController]
public class ChatbotUiController : ControllerBase, IBotUiAdapter
{
private readonly ILogger<ChatbotUiController> _logger;
private readonly IPlatformMidware _platform;
public ChatbotUiController(ILogger<ChatbotUiController> logger,
IPlatformMidware platform)
{
_logger = logger;
_platform = platform;
}
[HttpGet("/v1/models")]
[HttpGet("/openai/deployments")]
public OpenAiModels GetOpenAiModels()
{
return new OpenAiModels
{
Data = new List<AiModel>
{
new AiModel
{
Id = "gpt-3.5-turbo",
Model = "gpt-3.5-turbo",
Name = "Default (GPT-3.5)",
MaxLength = 4000,
TokenLimit = 4000
}
}
};
}
[HttpPost("/v1/chat/completions")]
[HttpPost("/openai/deployments/one/chat/completions")]
public async Task SendMessage([FromBody] OpenAiMessageInput input, [FromQuery(Name = "api-version")] string apiVersion = "2023-03-15-preview")
{
Response.StatusCode = 200;
Response.Headers.Add(HeaderNames.ContentType, "text/event-stream");
Response.Headers.Add(HeaderNames.CacheControl, "no-cache");
Response.Headers.Add(HeaderNames.Connection, "keep-alive");
var outputStream = Response.Body;
await _platform.GetChatCompletionsAsync(input.Messages.Last().Content, async (content, end) =>
{
if (end)
{
if (content.Length > 0)
{
await OnChunkReceived(outputStream, content);
}
await OnEventCompleted(outputStream);
}
else
{
await OnChunkReceived(outputStream, content);
}
});
}
private async Task OnChunkReceived(Stream outputStream, string content)
{
var response = new OpenAiChatOutput
{
Choices = new List<OpenAiChoice>
{
new OpenAiChoice
{
Delta = new ChatMessage(ChatRole.Assistant, content)
}
}
};
var json = JsonConvert.SerializeObject(response, new JsonSerializerSettings
{
Formatting = Formatting.None,
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
var buffer = Encoding.UTF8.GetBytes($"data:{json}\n");
await outputStream.WriteAsync(buffer, 0, buffer.Length);
await Task.Delay(100);
buffer = Encoding.UTF8.GetBytes("\n");
await outputStream.WriteAsync(buffer, 0, buffer.Length);
}
private async Task OnEventCompleted(Stream outputStream)
{
var buffer = Encoding.UTF8.GetBytes("data:[DONE]\n");
await outputStream.WriteAsync(buffer, 0, buffer.Length);
buffer = Encoding.UTF8.GetBytes("\n");
await outputStream.WriteAsync(buffer, 0, buffer.Length);
await outputStream.FlushAsync();
}
}

View file

@ -0,0 +1,8 @@
using System.Collections.Generic;
namespace ChatbotUI.ViewModels;
public class OpenAiChatOutput
{
public List<OpenAiChoice> Choices { get; set; }
}

View file

@ -0,0 +1,11 @@
using Azure.AI.OpenAI;
using System.Text.Json.Serialization;
namespace ChatbotUI.ViewModels;
public class OpenAiChoice
{
[JsonPropertyName("finish_reason")]
public string FinishReason { get; set; }
public ChatMessage Delta { get; set; }
}

View file

@ -0,0 +1,7 @@
namespace ChatbotUI.ViewModels;
public class OpenAiMessageBody
{
public string Role { get; set; }
public string Content { get; set; }
}

View file

@ -0,0 +1,20 @@
using System.Collections.Generic;
using System.Linq;
using System.Text.Json.Serialization;
namespace ChatbotUI.ViewModels;
public class OpenAiMessageInput
{
public string Model { get; set; } = string.Empty;
public List<OpenAiMessageBody> Messages { get; set; } = new List<OpenAiMessageBody>();
[JsonPropertyName("max_tokens")]
public int MaxTokens { get; set; } = 4000;
public bool Stream { get; set; } = true;
public float Temperature { get; set; } = 0.9f;
public override string ToString()
{
return string.Join("\n", Messages.Select(x => x.Role + ": " + x.Content));
}
}

View file

@ -1,16 +0,0 @@
using Microsoft.AspNetCore.Mvc;
namespace WebStarter.Controllers
{
[ApiController]
[Route("[controller]")]
public class LlmAgentController : ControllerBase
{
private readonly ILogger<LlmAgentController> _logger;
public LlmAgentController(ILogger<LlmAgentController> logger)
{
_logger = logger;
}
}
}

View file

@ -1,3 +1,5 @@
using BotSharp.Core;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
@ -8,9 +10,9 @@ builder.Services.AddSwaggerGen();
builder.Services.AddHttpContextAccessor();
// Streaming response to Redis
// var multiplexer = ConnectionMultiplexer.Connect("192.168.0.26:6379");
// builder.Services.AddSingleton<IConnectionMultiplexer>(multiplexer);
// Add BotSharp
builder.Services.AddBotSharp();
builder.Services.AddLlamaSharp(builder.Configuration);
var app = builder.Build();
@ -25,4 +27,7 @@ app.UseAuthorization();
app.MapControllers();
// Use BotSharp
app.UseBotSharp();
app.Run();

View file

@ -0,0 +1,7 @@
Transcript of a dialog, where the User interacts with an Assistant named Bob. Bob is helpful, kind, honest, good at writing, and never fails to answer the User's requests immediately and with precision.
User: Hello, Bob.
Bob: Hello. How may I help you today?
User: Please tell me the largest city in Europe.
Bob: Sure. The largest city in Europe is Moscow, the capital of Russia.
User:

View file

@ -7,15 +7,24 @@
<UserSecretsId>4fb8c9df-7975-4926-ba73-46c8ca440691</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<None Remove="Prompts\chat-with-bob.txt" />
</ItemGroup>
<ItemGroup>
<Content Include="Prompts\chat-with-bob.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\BotUIs\ChatbotUI\ChatbotUI.csproj" />
<ProjectReference Include="..\Channels\BotSharp.Channel.FacebookMessenger\BotSharp.Channel.FacebookMessenger.csproj" />
<ProjectReference Include="..\Channels\BotSharp.Channel.Weixin\BotSharp.Channel.Weixin.csproj" />
<ProjectReference Include="..\Platforms\BotSharp.Platform.OpenAi\BotSharp.Platform.OpenAi.csproj" />
<ProjectReference Include="..\Infrastructure\BotSharp.Core\BotSharp.Core.csproj" />
<ProjectReference Include="..\Platforms\BotSharp.Platform.LlamaSharp\BotSharp.Platform.LlamaSharp.csproj" />
<ProjectReference Include="..\UiAdapters\ChatbotUI\ChatbotUI.csproj" />
</ItemGroup>
</Project>

View file

@ -10,5 +10,11 @@
"OpenAi": {
"userName": "",
"password": ""
},
"LlamaSharp": {
"ModelPath": "C:\\Users\\haipi\\Downloads\\ggml-vic13b-q5_1.bin",
"InstructionFile": "Prompts\\chat-with-bob.txt",
"MaxContextLength": 512
}
}