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导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...
随机推荐
- MySQL底层概述—7.优化原则及慢查询
大纲 1.Explain概述 2.Explain详解 3.索引优化数据准备 4.索引优化原则详解 5.慢查询设置与测试 6.慢查询SQL优化思路 1.Explain概述 使用Explain关键字可以模 ...
- 正也科技案例 | 药企使用S2P深入营销管理数据化建设
为了获取更*的市场空间,医药健康行业正迎来一波前所未有的产业升级.尽管不少企业取得了许多成绩,但仍面临诸多挑战. 浙江某知名医药公司,在泌尿系统.心脑血管系统及眼科用药领域均拥有强势品牌.其产品更是荣 ...
- vue 使用 application/x-www-form-urlencoded格式提交数据
const params = new URLSearchParams();//前端在传参时需要先新建一个URLSearchParams对象,然后将参数append到这个对象中 params.appen ...
- Chrome浏览器本地安装插件
前情 Chrome是目前世面上很受欢迎的浏览器,你可以通过它的插件扩展功能安装插件优化使用体验和增加功能. 坑位 对于国内受墙影响的用户无法直接通过应用商店安装插件,通过离线安装插件会发现浏览器会提示 ...
- python 生成小学计算练习 docx
python3 生成二年级下计算练习,有口算,有竖式. import random import osfrom docx.shared import Pt from docx import Docum ...
- codeforces1849 D. Array Painting
题目链接 https://codeforces.com/problemset/problem/1849/D 题意 输入 \(n(1 \leq n \leq 2e5)\) 和长为 \(n\) 的数组 \ ...
- aws命令行cli创建VPC网络、公有子网、私有子网、nat网关+EIP
在AWS部署海外节点, 图简单使用web控制台创建VPC和k8s集群出错(k8s), 使用cli命令行工具创建成功 本实例为复盘, 记录aws命令行工具cli创建VPC网络, a区和b区分别创建公有子 ...
- 设置Docker的默认文件存储位置
对于windows下,直接修改docker desktop界面的配置项目.对于rocky linux下面,对应的配置文件存储在: vim /etc/docker/daemon.json 文件可以配置镜 ...
- 【自媒体直播】手机摄像电脑控制OBS多平台推流解决方案
1.准备iriun 官网:Iriun 这个软件是免费的,不过会有水印.你需要在官网下载安装包进行安装,有windows系统版本和MAC系统版本.Ubuntu版本可以选择,根据自己电脑系统版本选择. 这 ...
- 黑苹果(Hackintosh) - 安装1:用 VMware pro 16 安装 Big Sur 11.6
1. 背景情况 1.1 想法 想要体验体验macOS系统,不想花钱买 Macbook,就想着 装一个黑苹果体验下. 1.2 本机基本情况 笔记本:zx6 cp5s1 CPU:i5 8400 主板:H3 ...