IM即时通讯系统接入DeepSeek等AI大模型可行吗?

摘要:随着DeepSeek的热潮,越来越多的企业也开始部署并训练自己的AI大模型,于是有客户希望能在私有部署的即时通讯系统中集成AI大模型,这样可以大大提升办公效率。那么如何实现在IM中集成大模型了?
随着DeepSeek的热潮,越来越多的企业也开始部署并训练自己的AI大模型,这样能使企业以前沉淀的专业知识和经验能更高效地被利用起来。有客户反馈了这样的需求场景:客户私有部署了自己的AI大模型以及私有化部署自己的内部即时通讯系统,他们希望可以在即时通讯的聊天界面中,直接和AI大模型对话,就像和同事对话一样,这将大大提升工作效率。所以,我们决定在傲瑞通(OrayTalk)中接入DeepSeek等AI大模型,来满足这一需求。    那么具体如何实现了? 1. 客户端UI实现    首先,傲瑞通客户端新增了与AI大模型对话的UI入口: 在我的好友中,有一个“AI智能体”,点击它,就可以和AI大模型进行对话了。    其次,傲瑞通客户端也提供了查询与AI对话的历史记录:    点击对话记录中的问题,会弹出新窗口显示问题的答案。    2. 数据库实现   数据库中增加AIChatRecord表,用于存储与AI的对话记录。 AIChatRecord 表的创建脚本如下所示: CREATE TABLE [dbo].AIChatRecord( [GUID] [nvarchar](50) NOT NULL, [UserID] [nvarchar](50) NOT NULL, [ModelType] [int] NOT NULL, [Question] [nvarchar](max) NOT NULL, [Attachments] [nvarchar](1000) NOT NULL, [Answer] [nvarchar](max) NOT NULL, [ProcessResult] [int] NOT NULL, [ErrorMessage] [nvarchar](max) NOT NULL, [CreateTime] [datetime] NOT NULL, CONSTRAINT [PK_AIChatRecord] PRIMARY KEY CLUSTERED ( [GUID] ASC )   AIChatRecord 表中几个关键字段的含义如下所示: (1)ModelType:用于记录所采用的大模型类型,比如DeepSeek、通义千问、文心一言 等等。 (2)Question:记录所提问的问题。 (3)Attachments:表示该问题所涉及的附件的URL,如图片或文件的URL。 (4)ProcessResult:表示问题的处理结果。0表示成功,其它值表示不同类型的错误,如超时、API调用报错等。 (5)ErrorMessage:如果有报错,ErrorMessage字段记录了具体的错误信息。 (6)Answer:AI给出的问题的答案。只有当ProcessResult为0时,该值才有效。   3. 服务端对接AI大模型    傲瑞通服务端实现了与私有部署的大模型(如DeepSeek、通义千问等)的对接。    使用C#调用DeepSeek 的API是相当简单的,示例如下所示: class DeepSeekApiClient { private readonly string _apiKey; private readonly HttpClient _httpClient; // 构造函数,传入你的API密钥 public DeepSeekApiClient(string apiKey) { _apiKey = apiKey; _httpClient = new HttpClient(); // 设置基础URL(根据DeepSeek API文档调整) _httpClient.BaseAddress = new Uri("https://api.deepseek.com/v1/"); // 设置授权头 _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {_apiKey}"); } // 发送聊天请求的异步方法 public async Task<string> SendChatRequestAsync(string prompt) { try { // 构造请求体 var requestBody = new { model = "deepseek-chat", // 根据API文档调整模型名称 messages = new[] { new { role = "user", content = prompt } }, temperature = 0.7, max_tokens = 1000 }; // 序列化为JSON var json = JsonSerializer.Serialize(requestBody); var content = new StringContent(json, Encoding.UTF8, "application/json"); // 发送POST请求 var response = await _httpClient.PostAsync("chat/completions", content); // 确保请求成功 response.EnsureSuccessStatusCode(); // 读取并返回响应内容 var responseContent = await response.Content.ReadAsStringAsync(); return responseContent; } catch (Exception ex) { Console.WriteLine($"Error calling DeepSeek API: {ex.Message}"); throw; } } }   服务端的主要业务逻辑如下: (1)当服务端收到来自客户端的AI提问时,便在DB中插入一条记录,该记录的ProcessResult字段的值是“处理中”,然后将该问题通过上面的DeepSeekApiClient提交给AI大模型,并等待回复。 (2)当服务端收到了AI大模型的回复(或超时、或报错)后,再更新DB中对应的那条记录的ProcessResult、Answer等字段的值。接着,再将AI回复发送给客户端。 (3)特殊情况处理:比如,当在等待大模型回复期间,如果客户端掉线了的情况。   到这里,在傲瑞通中集成DeepSeek等AI大模型的工作就完成了,有兴趣的朋友欢迎留言多多交流!