一.前言:
- 本文章代码基于该系列前文章,如果是0基础小白建议先学习之前文章,至少把python环境配置完成按照代码流程一步一步进行
- 目前deepseek热度不减,但是官网使用时总是出现“服务器繁忙,请稍后再试”的卡顿现象,大大降低了用户的使用体验。
也可以理解,毕竟他们专注于模型能力,且初创公司也没有大规模流量承载的工程经验。好在deepseek开源!!!所以很多大厂都在自己的服务器上部署了满血版deepseek并提供api供下游用户使用,例如阿里百炼、字节火山引擎、硅基流动等。目前小编使用下来,发现火山引擎提供的服务最快也最稳定(至少写稿的当下是这样的……)所以接下来小编将演示如何申请火山引擎的deepseek api以及在第三方平台(以cherry studio和前系列的gradio界面为例)使用。
二.火山引擎API申请
点击该链接:火山方舟大模型体验中心-火山引擎,进入注册界面,输入手机号和验证码就可以进入火山方舟的欢迎界面(tips:该链接是小编的邀请链接,注册后会获得15元的代金券,约可抵扣375万R1模型tokens~)
这里小编使用的微信APP扫脸认证:
实名认证成功后,点击该界面下的开通模型:
开通模型之后我们就可以调用R1的api接入第三方平台进行交互。
三.cherry studio介绍及使用
cherry studio是国产的第三方模型调用平台,一站式调用各大主流模型,例如openai系列、deepseek系列等,并且配置简单,特别适合0基础使用,搭建例如个人知识库的AI助理,并且每个模型支持联网,强烈推荐。
官网Cherry Studio - 全能的AI助手,目前支持Windows、macos和Linux,可以按照自己的需求进行选择下载安装,安装过程一直下一步即可,这里不过多赘述。
安装之后进入的界面如下,我们点击左下方的设置,找到火山引擎:
这里的api密钥填入刚才我们申请的R1密钥即可,点击右方的“检查”确定后显示“连接成功”后说明配置成功!!!
之后在聊天界面的默认助手里,点击上方的模型即可切换我们刚才的R1模型,切换后模型我们即可流畅的与R1进行对话!!!
Tips:cherry studio有很多好玩的设置,例如联网搜索、知识库配置、智能体配置等,有兴趣的伙伴可以多多探索一下。
四.基于gradio界面的调用
如果看了小编之前的模型开发系列,便会立马想到也可以使用我们的基于gradio界面调用api与R1进行交互。
我发现很多厂商(如火山引擎、XAI)不再支持小于1.0.0版本的openai调用规则,之前的代码示例都是0.28版本的,所以这里我们先升级一下,在终端输入:
pip install --upgrade openai ,等待升级成功即可。
完整代码如下:
from openai import OpenAI
import gradio as gr
OPENAI_API_KEY = "e****7ea"
OPENAI_API_BASE = "https://ark.cn-beijing.volces.com/api/v3/"
client = OpenAI(
api_key=OPENAI_API_KEY,
base_url=OPENAI_API_BASE
)
# 添加自定义CSS样式
custom_css = """
<style>
details {
background: #f8f9fa;
padding: 10px;
border-radius: 5px;
margin: 5px 0;
}
details > summary {
cursor: pointer;
padding: 8px;
user-select: none;
}
details[open] > summary {
margin-bottom: 10px;
}
.reasoning-text {
font-size: 0.85em;
color: #666;
white-space: pre-wrap;
line-height: 1.5;
}
.answer-text {
font-size: 1.1em;
line-height: 1.6;
}
</style>
"""
def chat_with_llm(message, history):
history = history or []
# 构建完整的对话历史
prompt = []
for human, assistant in history:
prompt.append({"role": "user", "content": human})
prompt.append({"role": "assistant", "content": assistant})
prompt.append({"role": "user", "content": message})
try:
reasoning_content = ""
content = ""
for chunk in client.chat.completions.create(
model="deepseek-r1-250120",
messages=prompt,
temperature=0.7,
stream=True
):
delta = chunk.choices[0].delta
# 打印调试信息
print(f"Chunk delta: {delta}")
# 检查并更新 reasoning_content
if hasattr(delta, 'reasoning_content') and delta.reasoning_content:
reasoning_content += delta.reasoning_content
# 检查并更新 content
if hasattr(delta, 'content') and delta.content:
content += delta.content
# 每次更新都yield完整的内容
current_response = ""
if reasoning_content:
current_response += f"""
<details>
<summary>💭 思维链(点击展开/折叠)</summary>
<div class="reasoning-text">
{reasoning_content}
</div>
</details>
"""
if content:
current_response += f'\n\n<div class="answer-text">\n{content}</div>'
if current_response:
yield current_response
except Exception as e:
print(f"Error details: {str(e)}") # 打印详细错误信息
yield f"发生错误: {str(e)}"
# 创建一个支持流式输出的Gradio界面
with gr.Blocks(css=custom_css) as demo:
gr.Markdown("# DeepSeek AI 助手")
gr.Markdown("欢迎与AI助手进行对话")
chatbot = gr.Chatbot(
height=600,
render_markdown=True,
bubble_full_width=False,
show_label=False,
sanitize_html=False,
)
msg = gr.Textbox(label="输入消息", placeholder="请输入您的问题...")
clear = gr.Button("清除对话")
def user(user_message, history):
return "", history + [[user_message, None]]
def bot(history):
history[-1][1] = ""
for partial_response in chat_with_llm(history[-1][0], history[:-1]):
history[-1][1] = partial_response
yield history
msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
bot, chatbot, chatbot
)
clear.click(lambda: None, None, chatbot, queue=False)
if __name__ == "__main__":
demo.launch(share=True)
实现效果如下:(思维链的输出UI不太美观,有兴趣的伙伴可以结合AI完善一下UI)
五.总结
目前适合普通用户的满血R1的解决方法就是第三方平台API+第三方平台调用,自己本地部署满血R1对电脑配置要求太高了……
希望对大家有帮助~
下一篇我打算好好介绍下cherry studio的用法,特别是如何配置知识库,那样就有一个拥有个人数据的AI小助理了~