广西壮族自治区网站建设_网站建设公司_CSS_seo优化
2026/1/7 20:38:43 网站建设 项目流程

上一篇博文已经介绍了怎么搭建BotSharp本地大模型环境

https://blog.csdn.net/zxy13826134783/article/details/156653773?spm=1001.2014.3001.5501

本文运行环境:

win11

visual studio 2022

本文利用C#对接BotSharp本地大模型的Api,废话不多说,先上代码及运行结果

1 在Vistual Studio中新建名为POSTDemo1的控制台项目,选择.net framework 4.7

2 利用nuget安装Newtonsoft.Json及System.Text.Json,直接安装最新版就行

3 编辑代码如下:

using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Text.Json; using System.Threading.Tasks; namespace POSTDemo1 { internal class Program { static void Main(string[] args) { var base_url = $"http://localhost:5500"; string userName = "admin@gmail.com"; string password = "123456"; string token = GetToken(base_url,userName, password); if (string.IsNullOrEmpty(token)) { Console.WriteLine("获取token失败"); return; } //解析token JsonDocument doc = JsonDocument.Parse(token); string accessToken = doc.RootElement .GetProperty("access_token") .GetString(); if(string.IsNullOrEmpty(accessToken)) { Console.WriteLine("获取access_token失败"); return; } Console.WriteLine($"获取到的token{accessToken}"); //输入的问题 string question = "hello"; //发送对话 PostConverSation(base_url, accessToken, question); Console.WriteLine("运行完毕"); Console.ReadLine(); } private static void SetClientHeader(HttpClient client,string authorization) { client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", authorization); } private static void PostConverSation(string base_url,string token,string question) { var client = new HttpClient(); string agentId = "01e2fc5c-2c89-4ec7-8470-7688608b496c"; //会话Id string conversationId = "abc"; string converSationUrl = $"{base_url}/conversation/{agentId}/{conversationId}"; SetClientHeader(client, token); var data = new { text = question, provider = "llama-sharp", model = "llama-2-7b-chat.Q8_0.gguf" }; Console.WriteLine($"输入的问题:{question}"); string ret=PostJsonData(client, converSationUrl, data, 3); Console.WriteLine($"机器人回复:{ret}"); } private static string PostJsonData(HttpClient client,string url,object data,int timeOut) { string jsonContent = ""; if (data != null) { jsonContent= JsonConvert.SerializeObject(data); } var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"); string result = ""; try { client.Timeout = TimeSpan.FromMinutes(timeOut); // 设置超时时间 var response = client.PostAsync(url, content).Result; if (response.IsSuccessStatusCode) { var responseJson = response.Content.ReadAsStringAsync().Result; result= responseJson; } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (HttpRequestException e) { Console.WriteLine($"Network error: {e.Message}"); } return result; } private static string GetToken(string base_url,string userName,string password) { string credentials=Convert.ToBase64String(Encoding.UTF8.GetBytes($"{userName}:{password}")); string authorization = $"Basic {credentials}"; var client = new HttpClient(); string tokenUrl = $"{base_url}/token"; SetClientHeader(client, authorization); return PostJsonData(client, tokenUrl, null, 1); } } }

先启动BotSharp后台服务,再运行该代码,运行结果如下:

机器人回复的文本:

{ "conversation_id": "abc", "sender": { "id": "", "user_name": "", "first_name": "", "last_name": null, "email": null, "phone": null, "type": "client", "role": "user", "full_name": "", "source": null, "external_id": null, "avatar": "/user/avatar", "permissions": [ ], "create_date": "0001-01-01T00:00:00", "update_date": "0001-01-01T00:00:00", "regionCode": "CN" }, "function": null, "rich_content": { "recipient": { "id": "abc" }, "messaging_type": "RESPONSE", "message": { "rich_type": "text", "text": "\uD83D\uDE0A Hello there! *chuckles* I'm here to help you with any questions or tasks you may have. Is there something specific you'd like to chat about or ask?" }, "fill_postback": false, "editor": "text" }, "has_message_files": false, "is_streaming": false, "created_at": "2026-01-07T05:09:14.5500535Z", "message_id": "59b97608-bcd7-4df7-b659-69304524f7b2", "text": "\uD83D\uDE0A Hello there! *chuckles* I'm here to help you with any questions or tasks you may have. Is there something specific you'd like to chat about or ask?", "data": null, "template": null, "states": { "prompt_total": "0", "temperature": "0", "model": "llama-2-7b-chat.Q8_0.gguf", "sampling_factor": "0", "use_stream_message": "false", "provider": "llama-sharp", "llm_total_cost": "0", "channel": "openapi", "completion_total": "0" }, "log_id": null }

同时也可以看到BotSharp的控制台日志有输出回复:

不知道是不是电脑配置问题,输入问题后,要很久才获取到回复,有时候3分钟都没回复就报错了

先要获取到token,token信息从前端BotSharp-UI中的代码中获取到启发

模型的代理agentId是固定的

会话conversationId是唯一的,自己定义,我这里为了偷懒,正常来说还得再调用一个接口(在BotSharp-UI前端界面新建会话时会调用),相当于设置会话Id,直接运行上述代码也会创建会话,但第一次可能返回的结果不是需要的结果,运行第二次就正常了

代理agentId及conversationId可以通过这里直接获取到:

点击上台右边chat小图标,直接进入会话,如下图:

看上图中的浏览器地址栏这里,已经标注AgentId及conversationId

好了,本文到此结束,如果本文对你有帮助,资助2毛钱作为鼓励呗,穷逼一个,就当筹个网费吧

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询