利用C#对接BotSharp本地大模型AI Agent示例(2)

上一篇博文已经介绍了怎么搭建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毛钱作为鼓励呗,穷逼一个,就当筹个网费吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亲测好用9个一键生成论文工具,自考学生轻松搞定论文!

亲测好用9个一键生成论文工具,自考学生轻松搞定论文! 自考论文写作的救星,AI 工具如何改变你的学习方式 随着人工智能技术的不断进步,越来越多的自考学生开始借助 AI 工具来提升论文写作效率。这些工具不仅能够快速生成内容&#…

基于A星算法的无人机三维路径规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

基于A星算法的无人机三维路径规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

实验数据处理的AI加速:架构师的分布式训练

实验数据处理的AI加速:架构师的分布式训练 关键词:实验数据处理、AI加速、分布式训练、架构师、并行计算、数据并行、模型并行 摘要:本文聚焦于实验数据处理中AI加速的关键手段——分布式训练,为架构师们提供深入且易懂的技术指导。首先阐述实验数据处理面临的挑战以及分…

Symbol不是摆设:前端老铁们怎么用它解决实际问题

Symbol不是摆设:前端老铁们怎么用它解决实际问题Symbol不是摆设:前端老铁们怎么用它解决实际问题为啥突然聊 Symbol?Symbol 到底是个啥玩意儿创建 Symbol 的几种姿势1. 裸奔创建:Symbol(description)2. 全局登记:Symbo…

论文挂科崩溃救命!2026年知网AIGC检测高达62%,这三款论文去AI痕迹神器帮你降重降AI率,秒过查重不掉线!

论文去AI痕迹为何成大学生刚需?知网AI率检测背后的痛点 作为一名研究生,最近深刻体会到论文查重和AIGC检测的压力,尤其是知网AI率越来越被学校重视,挂科焦虑实实在在。我的论文初稿经知网AIGC检测,AI率高达62%&#xf…

基于GWO-BP、PSO-BP、DBO-BP、IDBO-BP多变量时序预测模型一键对比研究(多输入单输出)附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

人工智能代理的10种常见故障模式及其修复方法

随着人工智能代理变得越来越自主,并日益融入业务流程,了解其故障模式至关重要。从幻觉推理到多代理协作不佳,这些问题都可能导致性能下降、信任度降低,并增加风险。本指南概述了人工智能代理中最常见的 10 种故障模式 、故障发生的…

华为openEuler 欧拉操作系统安装Docker方法和步骤

目前大部分公司的业务都基于docker容器集群化操作管理,所以安装好操作系统后第一件事就是需要安装好docker容器。 默认情况下openEuler安装好之后,要安装docker会报依赖container-se

技术学习:构建知识体系与提升实践能力

在当今技术飞速发展的时代,持续学习已成为技术人员必备的核心能力。然而,面对海量的信息、层出不穷的新框架和工具,如何高效、系统地学习技术,避免陷入碎片化和浅尝辄止的困境,是每个学习者都需要思考的问题。本文将从…

基于ILP的最优PMU放置优化研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

强烈安利!继续教育必用TOP8 AI论文工具测评

强烈安利!继续教育必用TOP8 AI论文工具测评 学术写作工具测评:为什么需要一份2026年度榜单? 在当前科研与学术写作日益数字化的背景下,AI论文工具已经成为提升效率、优化内容质量的重要助手。然而,面对市场上琳琅满目的…

洁诚新能源:践行双碳战略的绿色行动派

在碳达峰、碳中和目标引领的能源革命浪潮中,企业如何将国家战略转化为具体行动?江苏洁诚新能源有限公司(以下简称"洁诚")通过技术创新、项目实践与生态共建,探索出一条从政策响应到落地实施的完整路径,成为双碳目标坚定的"行动派"。一、政策引领:将国家战…

告别重复造轮子!MCP 协议科普:给大模型装上“USB-C”万能接口

场景想象: 你是一个开发者,电脑里有个 users.db 数据库。你想问 Claude:“帮我查查在这个数据库里,上个月注册的用户有多少?” 没有 MCP 之前:你得先自己写一段 Python 代码连数据库,把数据查出…

2025年12月 GESP CCF编程能力等级认证Python四级真题

答案和更多内容请查看网站:【试卷中心 -----> CCF GESP ----> Python ----> 四级】 网站链接 青少年软件编程历年真题模拟题实时更新 2025年12月 GESP CCF编程能力等级认证Python四级真题 一、单选题(每题 2 分,共 30 分&…

Docker Compose UI:让容器管理告别命令行,小白也能轻松上手

Docker Compose UI 是一款将 Docker Compose 命令行操作转化为图形界面的工具,能实现服务启动 / 停止、实时日志查看、配置动态调整等功能。它特别适合刚接触容器技术的新手,无需死记硬背复杂指令;对团队而言,直观的界面也能降低协…

最近在折腾一个高性能C#服务端轮子,目标是搞个能同时扛住各种网络协议的瑞士军刀。咱这轮子就得自己撸底层,从Socket开始造轮子。先上个核心架构图镇楼

c#高性能服务器源代码,其中包括mvc api服务,http服务,ftp服务,sokect服务,websocket服务,大文件传输服务。 这些服务均抛开iis及第三支持,可写成服务或随软件启动而启动。public class ServerHo…

pkill -15 monkey命令及信号15解释

pkill -15 monkey 这个命令的作用是: 命令功能 向所有名为 “monkey” 的进程发送信号 15(SIGTERM),请求它们正常终止。 信号 15 的含义 15 是信号编号,对应 SIGTERM(Termination Signal)这是 &…

OSPF邻居建立失败完整排查指南

阿祥综合多年经验今天整理了下,OSPF邻居建立失败的核心排查点、补充要点及实操技巧,覆盖物理层、链路层、协议层及安全配置,按优先级排序,方便运维人员高效定位问题。 一、基础排查(物理层链路层安全设备专属&#xff…

2025年12月 GESP CCF编程能力等级认证Python三级真题

答案和更多内容请查看网站:【试卷中心 -----> CCF GESP ----> Python ----> 三级】 网站链接 青少年软件编程历年真题模拟题实时更新 2025年12月 GESP CCF编程能力等级认证Python3级真题 1 单选题(每题 2 分,共 30 分&#xf…