VB.NET,C#.NET接入文心一言4.0AI对话大模型
作者:weixin02 · 2024-11-28 · 阅读时间:7分钟
1.新增文心一言3.5-4.0大模型 Nuget直接搜索Ohh.ChatAi.TotalApi 2.代码示例 […]
1.新增文心一言3.5-4.0大模型
Nuget直接搜索Ohh.ChatAi.TotalApi
https://www.nuget.org/packages/Ohh.ChatAi.TotalApi

2.代码示例
2.1.支持创建AccessToken访问凭证(一次运行只创建一次,后续将在缓存在中读取)
CreateAccessTokenAsync
2.2.普通聊天和流式聊天示例(支持多轮和单论对话)
vb.net示例
Imports System.IO
Imports Ohh.ChatAi.TotalApi.ErnieTurbo
Imports Ohh.ChatAi.TotalApi.ErnieTurbo.Models
Imports Ohh.ChatAi.TotalApi.ErnieTurbo.Models.Consts
Public Class ErnieWenXinExample
''' <summary>
''' DeepSeek对象
''' </summary>
Private _ernieTurboClient As ErnieTurboClient
''' <summary>
''' 系统角色设定
''' </summary>
Private Const SysContent As String = "你是 百度千帆大模型 文心一言 AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。通义千问 为专有名词,不可翻译成其他语言"
''' <summary>
''' 构造函数
''' </summary>
Public Sub New()
InitializeComponent()
''----------
_ernieTurboClient = New ErnieTurboClient("AK-XXXXXXX", "SK-XXXXXXXXXX")
End Sub
Private Sub ErnieWenXinExample_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
''' <summary>
''' 单论流式对话
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Async Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
Try
richTextBox1.Clear()
''------
Dim chatReq As New ChatRequest With
{
.model = ChatModels.Ernie40Turbo8K,
.system = SysContent,
.messages = New List(Of MessagesItem) From {
New MessagesItem With {
.role = ChatRoles.User,
.content = textBox1.Text
}
},
.stream = True
}
'' 订阅事件
RemoveHandler _ernieTurboClient.MessageReceivedEventHandler, AddressOf OnMessageReceived
RemoveHandler _ernieTurboClient.ErrorEventHandler, AddressOf OnErrorMsg
AddHandler _ernieTurboClient.MessageReceivedEventHandler, AddressOf OnMessageReceived
AddHandler _ernieTurboClient.ErrorEventHandler, AddressOf OnErrorMsg
'' 开始任务
Await _ernieTurboClient.ChatStreamAsync(chatReq)
Catch ex As Exception
Console.WriteLine("流式聊天失败:" + ex.Message)
End Try
End Sub
''' <summary>
''' 订阅SSE事件
''' </summary>
''' <param name="s"></param>
''' <param name="m"></param>
Sub OnMessageReceived(s As Object, m As ChatResponse)
''Console.WriteLine("聊天内容:" + ee);
Invoke(Sub()
Dim msg As String = m.result
If Not String.IsNullOrWhiteSpace(msg) Then richTextBox1.AppendText(msg.Replace("vbLf", vbCrLf))
End Sub)
End Sub
''' <summary>
''' 局部函数,订阅SSE 错误事件
''' </summary>
Sub OnErrorMsg(s As Object, ex As Exception)
MessageBox.Show(ex.Message)
End Sub
''' <summary>
''' 单论普通对话
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Async Sub button2_Click(sender As Object, e As EventArgs) Handles button2.Click
Try
''------
Dim chatReq As New ChatRequest With
{
.model = ChatModels.Ernie40Turbo8K,
.system = SysContent,
.messages = New List(Of MessagesItem) From {
New MessagesItem With {
.role = ChatRoles.User,
.content = textBox1.Text
}
}
}
''-------------
Dim chatRes As ChatResponse = Await _ernieTurboClient.ChatAsync(chatReq)
Console.WriteLine("聊天内容:" & chatRes.result)
richTextBox1.Text = chatRes.result.Replace("vbLf", vbCrLf)
Catch ex As Exception
Console.WriteLine("聊天失败:" & ex.Message)
End Try
End Sub
End Class
C# 示例
using Ohh.ChatAi.TotalApi.ErnieTurbo;
using Ohh.ChatAi.TotalApi.ErnieTurbo.Models;
using Ohh.ChatAi.TotalApi.ErnieTurbo.Models.Consts;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ohh.ChatAi.TotalApi.CSharp.Example
{
public partial class ErnieWenXinExample : Form
{
/// <summary>
/// DeepSeek对象
/// </summary>
private ErnieTurboClient _ernieTurboClient;
/// <summary>
/// 系统角色设定
/// </summary>
private const string SysContent = "你是 百度千帆大模型 文心一言 AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。通义千问 为专有名词,不可翻译成其他语言";
/// <summary>
/// 构造函数
/// </summary>
public ErnieWenXinExample()
{
InitializeComponent();
//----------
_ernieTurboClient = new ErnieTurboClient("AK-XXXXXXX", "SK-XXXXXXXXXXXXX");
}
/// <summary>
/// 单轮流式聊天
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void button1_Click(object sender, EventArgs e)
{
try
{
richTextBox1.Clear();
//------
var chatReq = new ChatRequest
{
model = ChatModels.Ernie40Turbo8K,
system = SysContent,
messages = new List<MessagesItem> {
new MessagesItem {
role = ChatRoles.User, content = textBox1.Text
}
},
stream = true
};
// 订阅事件
_ernieTurboClient.MessageReceivedEventHandler -= OnMessageReceived;
_ernieTurboClient.ErrorEventHandler -= OnErrorMsg;
_ernieTurboClient.MessageReceivedEventHandler += OnMessageReceived;
_ernieTurboClient.ErrorEventHandler += OnErrorMsg;
// 开始任务
await _ernieTurboClient.ChatStreamAsync(chatReq);
// 局部函数,订阅SSE 消息事件
void OnMessageReceived(object s, ChatResponse m)
{
//Console.WriteLine("聊天内容:" + ee);
Invoke(new Action(() =>
{
var msg = m.result;
if (msg != null) richTextBox1.AppendText(msg);
}));
}
// 局部函数,订阅SSE 错误事件
void OnErrorMsg(object s, Exception ex)
{
MessageBox.Show(ex.Message);
}
}
catch (Exception ex)
{
Console.WriteLine("流式聊天失败:" + ex.Message);
}
}
/// <summary>
/// 单轮普通聊天
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void button2_Click(object sender, EventArgs e)
{
try
{
var chatReq = new ChatRequest
{
model = ChatModels.Ernie40Turbo8K,
system = SysContent,
messages = new List<MessagesItem> {
new MessagesItem {
role = ChatRoles.User,
content = textBox1.Text
}
}
};
var chatRes = await _ernieTurboClient.ChatAsync(chatReq);
Console.WriteLine("聊天内容:" + chatRes.result);
richTextBox1.Text = chatRes.result;
}
catch (Exception ex)
{
Console.WriteLine("聊天失败:" + ex.Message);
}
}
}
}
文章转自微信公众号@办公魔盒
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- Duolingo API 使用指南:语言学习与智能应用的融合实践
- 超级英雄尽在掌握:超级英雄数据API的超能力
- 了解API端点:初学者指南
- API版本控制:URL、标头、媒体类型版本控制
- Python 查询专利信息:轻松获取最新技术专利数据
- IOT语义互操作性之API接口
- 地图API服务商百度的竞争对手和替代品
- 强化 API 访问控制:基于属性的授权(ABAC)安全实践指南
- SIGN×Bithumb 永续行情 API:边缘缓存 3 天优化策略
- 百度地图批量算路api服务介绍及应用场景
- Express + TypeScript + OpenFGA 权限控制实践指南
- 细粒度授权修复关键API安全风险 – Auth0
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册