😀
本文详细介绍了如何通过Next.js的Router Handler来调用DeepSeek的API。
📝 调用DeepSeek的API
基于DeepSeek API文档
第一种方法是基于DeepSeek API文档中的示例代码进行集成,核心是使用OpenAI包进行API调用。
首次调用 API | DeepSeek API Docs
首次调用 API | DeepSeek API Docs
DeepSeek API 使用与 OpenAI 兼容的 API 格式,通过修改配置,您可以使用 OpenAI SDK 来访问 DeepSeek API,或使用与 OpenAI API 兼容的软件。
这种方式不仅支持JSON格式的数据传输,还支持流式渲染,但相较于第二种方案,其实现代码会稍显复杂。
💡注意:只有deepseek-chat模型支持json数据返回,deepseek-reasoner也就是我们俗称的效果更好的R1模型是不支持json数据的,需要自己手动处理。
我自己尝试下来会按渣markdown的格式进行返回,可以写一个简单的工具对字符串进行处理,或者按照第二种方法中vercel官网建议的解决方案。分享一下我的处理方案
工具函数进行简单替换:
这样处理的好处是非常快,完全根据markdown的文本特征进行处理,不需要再调用额外的API,但是同时也可能会存在异常的处理情况,比如返回值中本身就存在类似的字符或者返回值的主体本身不符合jsonString的格式。
利用@ai-sdk/deepseek进行调用
第二种方法则是利用@ai-sdk/deepseek进行调用,具体实现细节可参考Vercel官方文档。
需要注意的是,这种方法不支持直接返回JSON格式的数据,官方建议通过另一个免费模型对数据进行二次处理以解决这一问题。
官网这里使用了zod对返回的数据格式进行了约束,这种方案适用于对格式要求较为严格的场景,建议搭配TS一起使用
🤗 总结归纳
deepseek-chat的返回速度较快但是内容质量确实比不上deepseek-reasoner,但是R1模型的返回速度较慢,尤其是最近饱受外部非法请求的骚扰,时常会出现请求超时、中断的情况,所以在实际的应用开发中建议考虑多层的降级方案。
📎 参考文章