现在网上各种的Excel接入deepseek文章满天飞,以为就是点点鼠标就能实现的事情,真正要想接入时发现各种坑啊,好些文章引用了AI生成的内容,搞的真的像那么回事,其实根本不存在那种插件,最终结论是Excel可以接入deepseek,但也不是什么事情都能干。
下面就说遇到的坑和如何使用华为云提供的deepseek API来实现在excel中的调用,需要用到VBA,所以不能是WPS。
避坑一:应用商店deepseek插件
如果在你百度中搜索“excel中使用deepseek”,最前面的回答就是使用deepseek插件,说是可以从官网上下载, 也可以到Excel中自带的应用商店中找到下载,好像搞的真的有那个插件似的。
坑一
官网上找了,没有,然后从网上搜索这个文件,也没有,那去应用商店看看吧,还是没有,放弃吧,压根就没有这个插件好不好。
应用商店中也没有
OfficeAI助手
这个也不能算是坑吧,以为是微软官方出品的,搜索了一下是个国产的第三方插件,如果不介意可以试一下,咱只想用最原汁原味的deepseek接入,这个也放弃了,有兴趣的可以去看看。
officeAI助手
WPS也有自己的AI助手,只不过是收费的
VBA接入deepseek
这个算是个小坑,不是说VBA不支持接入deepseek,而是目前来测试的话不支持接入官网的了,查看官网的DeepSeek API 文档,先是生成API Keys,然后再按照接口文档进行调用,发现返回值一直出错,无法使用。
以为是VBA代码的问题,就换成VS2022进行调试吧,还是一样的出错,放弃吧。
文档
有可能是对API接入进行了限制吧,那就试试国内其他厂商部署的deepseek。
接入华为云部署的deepseek
看了下国内部署的deepseek平台,选择华为云部署的试试,这里直接放网址了https://www.huaweicloud.com/product/modelarts/studio.html,打开看看
华为云
华为有详细的试用流程,看着操作就行了,具体的就不一一截图了,直接来到控件台,在模型部署中选择一个领取就行了
控制台
领取了并不能直接使用,还需要创建一个key,如下图
创建Key
这个key是一次性的,如果你没有保存的话,就只能删除重新建一个了。
点击右侧的调用时,会弹出API文档,里面最主要的就是调用的地址了,也可以查看更详细的API文档。
调用示例
这个示例是用python写的,可以换成VBA,也可以换成C#的,为了避免麻烦,可以先用C#写一下,没有任何问题时再写到Excel的VBA中。
C#中使用华为云deepseek
在C#中随意拖几个控件,用来显示华为云deepseek返回的内容就可以了。
界面
文本框key中填写申请好的key,代码如下
private static readonly HttpClient client = new HttpClient();
string apiKey = txt_key.Text.Trim().ToString();
string url = "https://infer-modelarts-cn-southwest-2.modelarts-infer.com/v1/infers/707c01c8-517c-46ca-827a-d0b21c71b074/v1/chat/completions";
// 设置请求头
var headers = new
{
ContentType = "application/json",
Authorization = $"Bearer {apiKey}" // 替换为你的 API Key
};
// Request body
var data = new
{
model = "DeepSeek-V3", // 调用的模型名称
//max_tokens = 20,
messages = new[]
{
new { role = "system", content = "今天天气怎么样" },
new { role = "user", content = "什么鱼刺少还好吃了" }
},
stream = false, // 是否开启流式推理
temperature = 1.0 // 控制采样随机性
};
using (var client = new HttpClient())
{
// 设置请求头
client.DefaultRequestHeaders.Add("Authorization", headers.Authorization);
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
// 将请求体序列化为 JSON
var jsonContent = JsonConvert.SerializeObject(data);
var httpContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");
// 发送 POST 请求
var response = await client.PostAsync(url, httpContent);
string responseBody = await response.Content.ReadAsStringAsync();
textBox1.Text=response.StatusCode.ToString();
textBox2.Text = responseBody;
}
在上面max_tokens表示返回内容的长度,如果你用的是默认的20,那么只能返回20个字,new { role = "user", content = "什么鱼刺少还好吃了" }这个是你提问的问题,运行一下
运行界面
运行后没有问题就把它写到Excel的VBA中去吧
Excel中VBA接入华为云deepseek
先在Excel中稍微设计个界面,然后按alt F11打开VAB编辑器,输入下面的代码
Sub CallDeepSeekAPI()
Dim http As Object
Dim url As String
Dim apiKey As String
Dim requestBody As String
Dim response As String
' 设置API地址和密钥
url = "https://infer-modelarts-cn-southwest-2.modelarts-infer.com/v1/infers/707c01c8-517c-46ca-827a-d0b21c71b074/v1/chat/completions"
apiKey = "你的key"
Qstr = Sheets("sheet2").Range("B1").Value
' 准备请求数据
requestBody = "{""model"": ""DeepSeek-V3"",""messages"": [{""role"": ""system"",""content"": ""今天天气怎么样""},{""role"": ""user"",""content"": """ & Qstr & """}],""stream"": false,""temperature"": 1.0}"
' 创建HTTP对象
Set http = CreateObject("MSXML2.XMLHTTP")
' 发送请求
http.Open "POST", url, False
http.setRequestHeader "Authorization", "Bearer " & apiKey
http.setRequestHeader "Content-Type", "application/json"
http.send requestBody
' 获取响应
response = http.responseText
' 将响应写入Excel
Sheets("Sheet2").Range("B2").Value = response
End Sub
然后关闭编辑器,返回到Excel界面,在视图中点击宏,然后执行
点这里
在执行的过程中,Excel会有一段时间的无响应,不要管它,等着就行了。
无响应等着就行
返回的内容
到此也算完成了Excel中使用deepseek的愿望,虽然说还不如搜索一下来的快了,只少是一个进步。
总结
总结一下,两个关键点
1、需要先申请一个华为云deepseek的试用,因为本例是按华为云的调用方式来设计的
2、VBA代码的使用,虽然是复制粘贴就行,但需要是office,不要拿wps来试,肯定不成功
评论 (0)