AI-接入
前言
前面已经申请了模型,并且通过测试已经可以访问使用了,本篇的接入还是使用Ollama,前面我们已经可以在命令行终端能够进行交互了,现在将AI接入到代码中;
准备
作为一名Neter这里使用的是.net,首先是创建项目,这里使用的是WebApi项目,也可以使用控制台;
使用SemanticKernel接入AI,SemanticKernel是一个帮助程序连接AI模型的工具,以下是官方的介绍:
Semantic Kernel is a lightweight, open-source development kit that lets you easily build AI agents and integrate the latest AI models into your C#, Python, or Java codebase. It serves as an efficient middleware that enables rapid delivery of enterprise-grade solutions.
引入SemanticKernel包
dotnet add package Microsoft.SemanticKernel
dotnet add package Microsoft.SemanticKernel.Connectors.Ollama
ollama connector目前是alpha版本,Nuget中搜索需要勾选包括预发行版
Ollama接入示例
注册
Program.cs
using Microsoft.SemanticKernel.ChatCompletion;
using Microsoft.SemanticKernel;
using OllamaSharp.Models;
using OllamaSharp;
var endpoint = new Uri("http://localhost:11434");
var modelId = "llama3:latest";
builder.Services.AddSingleton(new OllamaApiClient(endpoint, modelId));
创建接口
[Route("api/[controller]")]
[ApiController]
public class AIChatController : ControllerBase
{
private readonly OllamaApiClient _ollamaApiClient;
public AIChatController(OllamaApiClient ollamaApiClient)
{
_ollamaApiClient = ollamaApiClient;
}
[HttpGet("Chat")]
public async Task Chat()
{
#pragma warning disable SKEXP0001
var history = new List<Message>();
history.Add(new Message()
{
Role = ChatRole.System,
Content = "you are a useful assistant",
});
history.Add(new Message()
{
Role = ChatRole.User,
Content = "hello",
});
var req = new OllamaSharp.Models.Chat.ChatRequest()
{
Messages = history,
Stream = true
};
var sb = new StringBuilder();
var content = _ollamaApiClient.ChatAsync(req);
await foreach (var chatMessageContent in content)
{
var msg = chatMessageContent?.Message.Content;
sb.Append(msg);
Console.Write(msg);
await Response.WriteAsync($"data: {msg}\n\n");
await Response.Body.FlushAsync();
}
}
}
响应:
Hello! It's nice to meet you. I'm here to assist you with any questions, tasks, or just about anything you'd like to chat about. What's on your mind today?
Moonhost接入示例
注册
Program.cs
var MoonshotAIKey = "sk-2xyIeQ49Xl714yquKkMrIdvsuI4aZmnvgNHHKxEaXkk384Os";
var endpoint = new Uri("https://api.moonshot.cn/v1");
var modelId = "moonshot-v1-8k";
var kernelBuilder = Kernel.CreateBuilder()
.AddOpenAIChatCompletion(modelId: modelId!, apiKey: MoonshotAIKey, endpoint: endpoint, httpClient: new HttpClient());
[Route("api/[controller]")]
[ApiController]
public class AIChatController : ControllerBase
{
private readonly Kernel _kernel;
public AIChatController(Kernel kernel)
{
_kernel = kernel
}
/// <summary>
/// MoonShot
/// </summary>
/// <returns></returns>
[HttpGet("MoonShotChat")]
public async Task MoonShotChat()
{
var settings = new OpenAIPromptExecutionSettings()
{
Temperature = 0,
ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions
};
var history=new ChatHistory();
history.AddSystemMessage("you are a useful assistant");
history.AddUserMessage("hello");
var chatCompletionService=_kernel.GetRequiredService<IChatCompletionService>();
var result=await chatCompletionService.GetChatMessageContentAsync(history,settings,_kernel);
System.Console.WriteLine(result.ToString());
//Hello! How can I help you today?
}
}
AI-接入的更多相关文章
- 【活动公告】Hackathon —— 腾讯云AI API接入迷你赛
一. 活动简介 编程马拉松(Hackathon)是将热爱软硬件开发的人聚集起来所举办的一项比赛,本次活动由腾讯云AI联合云+社区发起,希望让广大开发者体验到腾讯云AI的魅力.比赛过程中,参赛者可以尽情 ...
- EasyNVR智能云终端接入AI视频智能分析功能,用户可自定义接入自己的分析算法
视频分析的需求 人工智能的发展和在行业中的作用就不用多说了,已经到了势在必行的一个程度了,尤其是对于流媒体音视频行业来说,这基本上是人工智能重中之重的领域,视频人工智能,也就是视频视觉分析的应用方式大 ...
- 利用百度AI快速开发出一款“问答机器人”并接入小程序
先看实现效果: 利用百度UNIT预置的智能问答技能和微信小程序,实现语音问答机器人.这里主要介绍小程序功能开发实现过程,分享主要功能实现的子程序模块,都是干货! 想了解UNIT预置技能调用,请参看我之 ...
- AI人脸识别SDK接入 — 参数优化篇(虹软)
引言 使用了虹软公司免费的人脸识别算法,感觉还是很不错的,当然,如果是初次接触的话会对一些接口的参数有些疑问的.这里分享一下我对一些参数的验证结果(这里以windows版本为例,linux.andro ...
- 虹软AI 人脸识别SDK接入 — 参数优化篇
引言 使用了免费的人脸识别算法,感觉还是很不错的,但是初次接触的话会对一些接口的参数有些疑问的.这里分享一下我对一些参数的验证结果(这里以windows版本为例,linux.android基本一样), ...
- 含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入)
所谓文无第一,武无第二,云原生人工智能技术目前呈现三足鼎立的态势,微软,谷歌以及亚马逊三大巨头各擅胜场,不分伯仲,但目前微软Azure平台不仅仅只是一个PaaS平台,相比AWS,以及GAE,它应该是目 ...
- 吾剑未尝不利,国内Azure平替,科大讯飞人工智能免费AI语音合成(TTS)服务Python3.10接入
微软Azure平台的语音合成(TTS)技术确实神乎其技,这一点在之前的一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),已经做过详细介绍, ...
- 文心一言,通营销之学,成一家之言,百度人工智能AI大数据模型文心一言Python3.10接入
"文心"取自<文心雕龙>一书的开篇,作者刘勰在书中引述了一个古代典故:春秋时期,鲁国有一位名叫孔文子的大夫,他在学问上非常有造诣,但是他的儿子却不学无术,孔文子非常痛心 ...
- 【AI开发第一步】微软认知服务API应用
目录 介绍 API分类 使用‘视觉’API完成的Demo 点击直接看干货 介绍 从3月份Google家的阿尔法狗打败韩国围棋冠军选手李世石,到之后微软Build2016大会宣布的“智能机器人”战略.种 ...
- 为测试赋能,腾讯WeTest探索手游AI自动化测试之路
作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...
随机推荐
- Threejs的三维坐标系
在三维空间中,所有的物体和相机都需要基于一个统一的坐标系来进行定位和操作.理解坐标系的基本概念,对于创建稳定.准确的三维效果至关重要. 基础 Three.js 采用的是右手坐标系,这意味着如果你将右手 ...
- JPEG格式研究——(4)反量化、逆ZigZag变化和IDCT变换
反量化 反量化其实很简单,将霍夫曼解码出来的数据乘上对应的量化表就好了 通过当前色度选择出SOF中的Component,其中的Tqi指出了这一色度所需的量化表id Component的结构如下: 名称 ...
- Python 学习记录(1)
前言 简单说明: 简单情况:主要记录学习Python的简单情况,包括代码与结果,以及关键注释 工具与来源: 以下代码与结果都可在JupyterLab上实现,更多情况可看Github 使用 NumPy ...
- canvas实例:绚丽小球
1.思路分析 监听页面尺寸变化(防抖),动态设置canvas大小 监听鼠标移动事件(节流),动态创建小球,小球包含大小,原点坐标,移动方向等信息,其内部方法支持移动和缩小 开启定时器,更新画布内容(清 ...
- 【C++】关于 Visual Studio 的使用技巧(保姆级教程)
目录 fliter 视图 输出文件位置设置 查看预处理结果 将目标文件转换为可读的汇编 自定义程序入口 调试时查看变量在内存中的具体值 查看代码的反汇编 fliter 视图 visual studio ...
- uView的DatetimePicker组件在confirm回调中取不到v-model的最新值
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app,在uniapp生态中u ...
- 阿里云最新npm地址
npm config set registry https://registry.npmmirror.com -g
- RHEL8安装docker
1,安装yum-utils和dnf-utils yum install -y yum-utils dnf-utils 2,添加源 docker官方源 yum-config-manager --add- ...
- metasploit模块
模块类型 辅助模块(Auxiliary) 渗透攻击模块(Exploits) 后渗透攻击模块(Post) 攻击载荷模块(Payloads) 空指令模块(Nops) 编码器模块(Encoders) 后渗透 ...
- 【数据库】MongoDB服务启动失败的问题。
1.确保MongoDB所在文件夹拥有所有权限 2.确保打开CMD窗口是以管理员身份运行的 3.配置文件中的路径应该为完整路径,且不包含空格和特殊字符(不建议包含) systemLog: destina ...