引言
自发布以来,DeepSeek迅速吸引了全球的目光,不仅因为其卓越的技术性能,更因为它开源的策略和低廉的成本优势,使得它在全球范围内掀起了一股AI应用的热潮。
DeepSeek-R1作为这一系列中的佼佼者,凭借其强大的推理能力,在多个基准测试中超越了现有的顶尖模型。这种技术上的突破,不仅标志着AI领域内的一次重大飞跃,同时也为开发者提供了一个低成本高效益的选择。尤其值得一提的是,DeepSeek-R1通过大规模强化学习训练,无需依赖监督微调,展现了其在数学推理等复杂任务上的强大能力。
但是由于其爆火以及受到外界不知名身份黑客的攻击,目前官网上的DeepSeek纯血版使用受限,时常出现“服务器繁忙,请稍后再试”的提示,这不仅影响了用户体验,也对那些依赖DeepSeek进行日常工作的开发者和企业造成了不小的困扰。
同理,使用API也会出现时好时坏的情况,有的时候甚至连开放平台都打不开。
打开也无法进行充值,余额用完了就没办法了。
在这样的背景下,阿里云提供了一个可行的解决方案,通过将DeepSeek模型部署在其强大的阿里云计算平台上,为用户提供了一个高效、灵活且易于访问的服务。具体而言,用户可以通过以下四种方式利用DeepSeek模型:
下面,就让周周带大家深入了解如何根据自身需求选择最适合的DeepSeek模型部署方式,并简要介绍每种方式的具体操作流程和适用场景。
方法一:基于百炼 API 调用满血版(即开即用,极其推荐)
百炼平台通过API调用DeepSeek系列模型的方法 。其中 deepseek-r1 与 deepseek-v3 分别有 100万的免费 Token,部分蒸馏模型限时免费体验。
这里只推荐使用deepseek-r1 与 deepseek-v3,其他效果略差。
快速入门
我们进入阿里云百炼平台,选择【模型广场】-【DeepSeek】即可看到最新的DeepSeek-R1和DeepSeek-V3模型。
点击查看详情,可以看到此处拥有100万的免费token额度,可以任意使用~
其中R1和V3模型免费额度不重复,各有100万token额度,所以相当于赠送的是200万token啦
而使用方式也很简单,因为百炼默认的是OpenAI兼容接口,所以只需要准备URL、API-key和model名称即可,具体如下:
URL:https://dashscope.aliyuncs.com/compatible-mode/v1 。
API-key:查看账户内key即可。
model名称:deepseek-r1,同理,如果使用DeepSeek-V3则填写为deepseek-v3。
极速调用
下面分别以Chatbox 客户端调用、AnythingLLM 客户端调用、Cline 调用和API直接调用为例,说明如何使用百炼平台提供的在线接口服务。
Chatbox 客户端调用
访问 Chatbox 下载地址下载并安装对应操作系统的客户端。
运行并配置百炼 API ,单击设置。
在弹出的看板中按照如下表格进行配置。
最终配置如下图所示,然后单击保存,这里需要注意的是,百炼的API域名和路径需要分开写!!!
给出对应提问,可验证接入成功!
AnythingLLM 客户端调用
访问 AnythingLLM 下载地址下载并安装对应操作系统的客户端。
点击小扳手按钮,进入设置界面。
点击LLM首选项,选择【Generic OpenAl】,依次填写对应的URL、API-key、model名称即可。
填写完成后点击保存,会提示保存配置成功。
我们回到主页新建一个工作区,命名为DeepSeek。
给出对应提问,可验证接入成功!
Cline 调用
在VScode插件中,搜索下载Cline,下载后点击拓展栏的小机器人。
依次选择OpenAl Compatible,填写URL、API-key和model名称。
填写完成后点击开始体验一键编程的快乐~
API直接调用示例
通过 OpenAI SDK 或 OpenAI 兼容的HTTP方式快速体验DeepSeek模型,调用示例代码如下所示:
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"), # 如何获取API Key:https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="deepseek-r1", # 此处以 deepseek-r1 为例,可按需更换模型名称。
messages=[
{
'role': 'user', 'content': '9.9和9.11谁大'}
]
)
# 通过reasoning_content字段打印思考过程
print("思考过程:")
print(completion.choices[0].message.reasoning_content)
# 通过content字段打印最终答案
print("最终答案:")
print(completion.choices[0].message.content)
我们按照上文填入自己的key即可,需要注意的是,若没有配置环境变量,可用百炼API Key将下行替换为:api_key="sk-xxx",即如下所示:
经过实测,即使采用API直接调用,deepseek-r1的响应速度仍然较慢,需要等待约5分钟左右,且容易出现如下报错内容:
大概也类似于被限制了访问次数,过一会儿再重新尝试即可,最终返回结果如下:
后续会结合这部分来进行开发实战,所以这里重点提了一下。
小结
看到这里大家其实也能感受到,这种方式真的是最方便的了,它不仅提供了便捷的接入方式,还赠送了大量的免费token额度,这对于开发者来说是一个极大的吸引力。通过简单的配置,如设置URL、API-key和model名称等,用户就可以快速体验DeepSeek。
而对于那些希望在本地环境中集成DeepSeek的用户,在这一小结中也介绍了如何通过客户端软件(例如Chatbox和AnythingLLM)或VScode插件Cline来实现这一点。只要是提供了兼容OpenAI接口模式的工具,在进行适当配置后,通常都能成功接入阿里云百炼提供的模型服务。这也促使了阿里云百炼平台正在成为AI开发者和企业用户的重要选择之一。
方法二:基于人工智能平台 PAI 部署(无代码部署,一般推荐)
此解决方案中以 DeepSeek-R1-Distill-Qwen-7B 为例进行演示,通过人工智能平台 PAI 的 Model Gallery,无须写代码即可完成模型部署,我们也可以选择 DeepSeek-R1 等其他模型进行一键部署,系统将自动适配所需的实例规格。
快速部署
登录PAI 控制台,首次登录需要开通服务,选择暂不绑定 OSS Bucket 至 PAI 默认工作空间,然后点击一键开通按钮。
在工作空间页面的左侧导航栏选择【Model Gallery】,搜索框中输入【DeepSeek-R1】,点击部署,这里我还是以DeepSeek-R1为例,因为7B的小模型真的不好用。
在弹出的部署面板中,部署方式选择加速部署,加速方式选择vLLM。
点击部署资源查看其推荐的服务器实例,但是发现已经全部售罄了。
所以终于明白为啥要部署7B的模型了,因为配置要求没那么高。。。我们再次点击DeepSeek-R1-Distill-Qwen-7B下的部署。
找一个最便宜的模型,选择【ml.gu7i.c8m30.1-gu30(8 vCPU,30 GiB,1 * GU30)】,现价7.63一小时。
点击开始部署,等待其部署完毕~
等到部署完毕,单击查看调用信息,在弹出的看板中选择公网地址调用,复制保存访问地址和 Token 。
至此,部署步骤完成!除此,我们还可以通过控制台来进行实时查看调用情况。
极速调用
Chatbox 客户端调用
与上文类似,我们运行并配置 vLLM API ,单击设置。
在弹出的看板中按照如下表格进行配置。
最终配置如下图所示,然后单击保存。
给出对应提问,可验证接入成功!
回到控制台,可以看到存在调用使用。
Cline 调用和AnythingLLM 调用
在这两个工具调用时,我们依然可以按照上述的流程,但是需要注意的是,此时填入的URL必须是你的EAS_ENDPOINT/v1
填入后,验证调用成功!
API直接调用示例
vLLM 加速部署成功后生成一个 PAI-EAS 服务,支持 OpenAI API 进行推理。 在调用 API 时,API 地址为 EAS 服务的访问地址,API Key 为 EAS 的 Token。 具体 API 调用方式请参考下面 API 调用部分:
completions 接口
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: <EAS_TOKEN>" \
-d '{"model": "<模型名,通过'/v1/models' API获取>", "prompt":"hello world"}' \
<EAS_ENDPOINT>/v1/completions
chat 接口
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: <EAS_TOKEN>" \
-d '{
"model": "<模型名,通过'/v1/models' API获取>",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
}' \
<EAS_ENDPOINT>/v1/chat/completions
以下为 Python 示例代码: 其中"openai_api_key"需要填写 EAS 的调用 Token;"openai_api_base"需要填写 EAS 调用地址,后面需要加上"/v1"
from openai import OpenAI
##### API 配置 #####
openai_api_key = "<EAS API KEY>"
openai_api_base = "<EAS API Endpoint>/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
models = client.models.list()
model = models.data[0].id
print(model)
def main():
stream = True
chat_completion = client.chat.completions.create(
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "你好,介绍一下你自己,越详细越好。",
}
],
}
],
model=model,
max_completion_tokens=2048,
stream=stream,
)
if stream:
for chunk in chat_completion:
print(chunk.choices[0].delta.content, end="")
else:
result = chat_completion.choices[0].message.content
print(result)
if __name__ == "__main__":
main()
小结
在这一小结中,我们详细探讨了如何利用阿里云的人工智能平台PAI及vLLM加速来部署DeepSeek-R1-Distill-Qwen-7B模型,并且介绍了无代码一键部署的方法。这种方法极大地简化了模型部署的过程,使得用户无需编写代码即可快速将模型上线为服务,但是缺点在于接口的调用方式与常见兼容OpenAI接口模式的工具还是有些差异的,需要自己对接口文档进行一系列学习研究。
同理,如果采用BladeLLM来加速部署的话,也需要学习BladeLLM的接口调用方式来进行调用,需要花费一定的时间成本。
方法三:基于函数计算FC一键部署(真·一键部署,比较推荐)
此部分方案是通过云原生应用开发平台 CAP 部署 Ollama 和 Open WebUI 两个 FC 函数。Ollama 负责托管 lmstudio-community/DeepSeek-R1-Distill-Qwen-7B-GGUF 模型,它是基于 DeepSeek-R1 的推理能力,通过蒸馏技术将推理模式迁移到较小的 Qwen 模型上,从而在保持高效性能的同时降低了计算成本。Open WebUI 则为用户提供友好的交互界面。
快速部署
点击前往部署打开提供的云原生应用开发平台 CAP 项目模板,这里参数选择默认配置,直接单击部署项目,最后在弹出面板中单击确认部署。
等待 10~12 分钟,状态显示为已部署即可。
如下图所示:
应用部署完成之后按照下图找到访问地址,注意,此处需要先点击open-webui,再查看其访问地址。
但是尝试后仍然会出现请求次数过多的提示,这里应该是访问量过大了
需要多次尝试才能提问成功~
如果你觉得模型的回复速度慢,那么也可以尝试修改部署的实例配置,进行GPU资源扩容等。
除此之外,基于云原生应用开发平台 CAP 项目模板部署的ollama也可以单独作为API服务提供给外部使用。
极速调用
Chatbox 客户端调用
我们点击设置,选择【Ollama APl】。
填写 API 域名,下拉选择模型cap-deepseek-r1:latest,最后单击保存。
验证调用成功!
Cline 调用和AnythingLLM 调用
Cline 和AnythingLLM也都支持了直接选择ollama调用方式,需要注意的是,填入的模型名称需要删除这个ollama后缀,即只需填入【cap-deepseek-r1:latest】。
调用成功后如下图所示,但是出字速度极慢,所以建议扩充默认资源的性能。
同理AnythingLLM中也是如此,在此就不过多赘述了。
小结
本小结介绍了基于阿里云的函数计算(Function Compute, FC)和云原生应用开发平台 CAP 来实现 Ollama 和 Open WebUI 的一键部署方案。这种方法不仅简化了模型部署流程,还提供了用户友好的交互界面,使得即使是非技术人员也能轻松地部署和使用复杂的深度学习模型。
但是问题在于由于访问量频繁会导致请求次数过多的提示,同时默认的模型资源过小导致回复速度慢的问题。这些问题可以通过调整实例配置、增加 GPU 资源等方式得到缓解,但是总之,该解决方案默认提供的DeepSeek-R1并不能很好的直接使用,很卡很卡,且效果不好,推荐可以使用该部署方式,但不推荐直接使用此解决方案!
方法四:基于GPU 云服务器部署(自行部署,一般推荐)
这里说白了就是直接购置阿里云的GPU服务器然后自行进行部署,对于不熟悉操作的人不建议采用此方式,但是优点就是可以长期使用且不会出现访问量过多的提示限制,使用体验会极好!
该解决方案是在 GPU 云服务器上安装与配置 Ollama 和 Open WebUI。Ollama 负责托管 DeepSeek-R1 模型,Open WebUI 则为用户提供友好的交互界面。GPU 云服务器凭借其高性能并行计算架构,可以显著加速大模型的推理过程,特别是在处理大规模数据和高并发场景,可以有效提升推理速度和推理吞吐。专有网络 VPC 和交换机用于资源隔离和安全管理,确保数据传输的安全性和网络的高可靠性。
部署步骤
在开始部署模型之前,需要进行一系列的环境准备工作。这些步骤包括创建专有网络 VPC 和交换机、配置安全组、创建 GPU 云服务器实例。
创建专有网络 VPC 和交换机
登录专有网络管理控制台 , 在顶部菜单栏,选择华东 1(杭州)地域,在左侧导航栏,单击专有网络,在专有网络页面,单击创建专有网络。
按照下图所示,依次填入对应内容。
创建成功后如下图所示:
创建安全组
登录ECS 管理控制台,在左侧导航栏,选择网络与安全>安全组,单击创建安全组。
按照下图所示,依次填入对应内容,本方案需要确保 22、8080 、11434端口号开启。
创建 GPU 云服务器
登录ECS 管理控制台,在左侧导航栏,选择实例与镜像 > 实例,在顶部菜单栏,选择华东 1(杭州)地域。
按照下图所示,依次填入对应内容,示例名称为:【ecs.gn6i-c8g1.2xlarge】。
至此,基础环境资源准备完毕!
部署 Ollama
进到服务器中,先等待其 GPU 驱动完成安装。
远程连接进入GPU服务器中,执行以下命令部署 Ollama 模型服务。
curl -fsSL https://help-static-aliyun-doc.aliyuncs.com/install-script/deepseek-r1-for-platforms/ollama_install.sh|sh
看到如下图所示代表安装完成:
执行以下命令下载模型。
ollama pull deepseek-r1:7b //此处以7b为例
ollama pull deepseek-r1:8b
ollama pull deepseek-r1:14b
执行以下命令,运行模型,即可在终端界面进行对话!
ollama run deepseek-r1:8b
部署 Open WebUl
执行以下命令部署 Open WebUI 应用。
curl -fsSL https://help-static-aliyun-doc.aliyuncs.com/install-script/deepseek-r1-for-platforms/install.sh|sh
下载完成后可以看到安装完成字样~
在浏览器中访问 http://:8080,访问 Open WebUI。
同理,此服务器上部署的ollama也可以作为API服务提供给外部使用,具体使用方式同方法三中,在此就不过多赘述了。
小结
基于GPU云服务器部署Ollama和Open WebUI的方法为用户提供了一个高度定制化且性能优越的解决方案。这种方法适合那些对计算资源有较高要求,同时希望拥有更稳定、高效服务体验的用户,可自定义性高,可以自行部署较大参数模型(671B)。
不足之处就在于操作流程稍显复杂,对于新手来说较为困难,耗时长!
总结及建议
对比以上四种方式的利弊,下面形成一图流方便大家查看:
根据我的个人使用习惯来看,一直在用的就是基于百炼 API 调用满血版,大家也可以看到token已经用了差不多20万了,目前觉得这是最为方便的方式,弊端几乎没有!
基于人工智能平台 PAI 部署确实也是很方便,但是不同的加速部署方式导致接口的调用方式也不一样,需要对接口文档进行一定程度的学习,不如方法一那么即开即用,但也算是比较好用了,起码还有很多参数的模型可以供我们自行选择,不过671B满血售罄了,也相当于只能用小参数模型。。。
基于函数计算FC一键部署比较值得吐槽,这个部署方式我很喜欢用,也比较方便快捷,但缺点是解决方案提供的模版只能部署7B的模型,如果想要部署671B的满血模型需要自行编写模版才可以。除此,解决方案中模版的实例资源太小了,导致我在Cline调用时回复速度特别慢,对话时也容易出现Too Many Requests。部署方式很好,解决方案需要优化!
基于GPU云服务器的部署是一种经典的方案,对于长期使用来说,它提供了卓越的稳定性和性能,是理想的选择。然而,这种方案是否最适合,主要取决于具体的应用需求和场景。就我个人当前的需求而言,我并不会特别推荐这种方案,因为可能有更符合成本效益或其他特定需求的替代方案。但是,如果未来遇到需要稳定高性能计算资源的情况,基于GPU云服务器的部署无疑会成为我的首选。不仅因为它能提供强大的计算能力,还因为它能够确保服务的稳定性和可扩展性,满足复杂项目的要求。
到这里基本就结束了,下面附上我最近结合阿里云百炼平台调用DeepSeek接口的一些实战案例。
基于阿里云百炼平台调用DeepSeek结合通义快速开发中医辅助问诊系统
在此,对于基于阿里云百炼平台调用DeepSeek的过程就不过多赘述了,详细可参见我上面的文章,下面主要进行中医辅助问诊系统的开发实践环节。
系统设计
目前计划的是做出第一版的demo,提供给朋友辅助开药使用,所以暂时不需要数据库等等,主打的就是一个简化流程,确保医生能够通过最最简单的步骤快速输入患者症状,并即时获得诊断建议与治疗方案。
系统实现
前端界面实现
前端主要使用Deepseek来进行开发,我的想法是给一个输入框用于填写综合病症,给一些选择题用来帮助协助判断,当用户或者医生填写完提交之后,可以调用阿里云百炼平台提供的DeepseekAPI来进行反馈一系列治疗建议。
首先给出Prompt如下:
请生成一套中医问诊系统,要求包含自述部分,其余部分可以用选择题的形式展示出来,然后再把这套系统生成html代码,当用户填写完整之后,可以调用Deepseek的api来对用户的回答进行综合分析,最终给出一段中医诊断及对应治疗方案。
Deepseek的最大优点就是其内置了思维链,我们可以清晰的看到它的推断过程:
在生成代码完毕后,我们可以看到右下角的【运行按钮】,点击即可在线进行查看。
基础框架还不错,但下面的辅助选项还是太少了,所以我们继续优化界面。
给出Prompt如下:
请你思考,平常中医的正常诊断除了查看脉诊信息、舌苔特征还需要诊断哪些内容?请你都作为选择题选项继续给出,并在原有的代码上进行优化完善。
优化后界面如下:
开头的输入框作为主诉,主要是让医生或者病人填入自己的主要症状。
分为望闻问切四个角度,每个角度下将常见的特征一一列出。
现在看上去差不多了,已经够用了,下面我们使用Python Flask框架来运行这个Web应用,为了足够新手,这里还是从基础环境开始讲起。
安装 Python 和 pip
首先,确保你的电脑上已安装 Python 3.6 或更高版本。可以通过以下命令检查 Python 版本:
python3 --version
如果未安装 Python,请从 Python 官方网站 下载并安装。
创建虚拟环境
为了避免依赖冲突,建议在虚拟环境中进行开发。使用以下命令创建并激活虚拟环境:
python3 -m venv smart_tcm_diagnosis
source smart_tcm_diagnosis/bin/activate # Linux/macOS
smart_tcm_diagnosis\Scripts\activate # Windows
安装依赖库
在虚拟环境中,使用 pip 安装所需的 Python 库:
pip install flask requests
- flask: Web 框架
- requests: 用于发送 HTTP 请求,调用 阿里云百炼平台提供的DeepseekAPI
创建项目结构
这里就使用到了通义的代码模式,让其给出的当前结构目录如下:
smart_tcm_diagnosis/
├── app.py
├── templates/
│ └── index.html
└── .env
app.py代码
from flask import Flask, request, render_template
import requests
import os
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
app = Flask(__name__)
# DeepSeek API 配置
DEEPSEEK_API_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1" # 根据实际情况调整API地址
API_KEY = os.getenv("DEEPSEEK_API_KEY") # 从 .env 文件中读取 API 密钥
@app.route("/", methods=["GET", "POST"])
def index():
formData = {
'selfReport': '',
'medicalHistory': '',
'faceColor': '',
'tongueColor': '',
'tongueCoating': '',
'eyeLook': '',
'voiceQuality': '',
'breathSound': '',
'dietHabit': '',
'sleepQuality': '',
'moodStatus': '',
'bowelMovement': '',
'pulse': ''
}
chat_response = ""
if request.method == "POST":
# 获取用户输入并更新 formData
formData.update(request.form)
print("FormData:", formData)
# 构建请求消息
messageContent = f"""
你是一个资深中医专家,请根据以下问诊信息进行综合分析:
【主诉】{formData['selfReport']}
【既往史】{formData['medicalHistory']}
【面诊】面色{formData['faceColor']},眼神{formData['eyeLook']}
【闻诊】声音{formData['voiceQuality']},呼吸声{formData['breathSound']}
【问诊】饮食习惯{formData['dietHabit']},睡眠质量{formData['sleepQuality']},情绪状态{formData['moodStatus']},排泄情况{formData['bowelMovement']}
【舌诊】舌质{formData['tongueColor']},苔{formData['tongueCoating']}
【脉诊】脉{formData['pulse']}
请给出:1.中医辨证 2.治疗原则 3.方药建议 4.生活调养建议
"""
# 调用 DeepSeek API
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
data = {
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": "你是一个资深中医专家。"},
{"role": "user", "content": messageContent}
],
"stream": False
}
print("Request Body:", data)
response = requests.post(DEEPSEEK_API_URL, headers=headers, json=data)
# 解析 API 响应
if response.status_code == 200:
api_response = response.json()
chat_response = api_response["choices"][0]["message"]["content"]
else:
chat_response = f"Error: Unable to get response from DeepSeek API. Status Code: {response.status_code}, Message: {response.text}"
return render_template("index.html", formData=formData, chat_response=chat_response)
if __name__ == "__main__":
app.run(debug=True)
templates/index.html 文件
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>智能中医问诊系统</title>
<style>
body {
max-width: 800px; margin: 20px auto; padding: 20px; font-family: '微软雅黑'; }
.section {
margin-bottom: 30px; border-bottom: 1px solid #ddd; padding-bottom: 20px; }
label {
display: block; margin: 10px 0; }
textarea {
width: 100%; height: 100px; }
button {
padding: 10px 20px; background: #2b7a78; color: white; border: none; border-radius: 5px; }
#result {
display: none; margin-top: 30px; padding: 20px; background: #f0f4f5; border: 1px solid #ccc; }
#result h3 {
margin-top: 0; }
</style>
</head>
<body>
<h1>智能中医问诊系统</h1>
<form method="POST">
<div class="section">
<h3>自述症状</h3>
<textarea id="selfReport" name="selfReport" placeholder="请详细描述您的主要症状、持续时间及变化情况...">{
{ formData.selfReport }}</textarea>
</div>
<div class="section">
<h3>病史信息</h3>
<label>既往病史:
<input type="radio" name="medicalHistory" value="无" {% if formData.medicalHistory == '无' %}checked{% endif %}> 无重大疾病史
<input type="radio" name="medicalHistory" value="高血压" {% if formData.medicalHistory == '高血压' %}checked{% endif %}> 高血压
<input type="radio" name="medicalHistory" value="糖尿病" {% if formData.medicalHistory == '糖尿病' %}checked{% endif %}> 糖尿病
<input type="radio" name="medicalHistory" value="心脏病" {% if formData.medicalHistory == '心脏病' %}checked{% endif %}> 心脏病
</label>
</div>
<div class="section">
<h3>望诊</h3>
<label>面色特征:
<input type="radio" name="faceColor" value="红润" {% if formData.faceColor == '红润' %}checked{% endif %}> 红润
<input type="radio" name="faceColor" value="苍白" {% if formData.faceColor == '苍白' %}checked{% endif %}> 苍白
<input type="radio" name="faceColor" value="青黑" {% if formData.faceColor == '青黑' %}checked{% endif %}> 青黑
<input type="radio" name="faceColor" value="黄疸" {% if formData.faceColor == '黄疸' %}checked{% endif %}> 黄疸
</label>
<label>舌质颜色:
<input type="radio" name="tongueColor" value="淡红" {% if formData.tongueColor == '淡红' %}checked{% endif %}> 淡红
<input type="radio" name="tongueColor" value="红" {% if formData.tongueColor == '红' %}checked{% endif %}> 红
<input type="radio" name="tongueColor" value="紫暗" {% if formData.tongueColor == '紫暗' %}checked{% endif %}> 紫暗
</label>
<label>舌苔特征:
<input type="radio" name="tongueCoating" value="薄白" {% if formData.tongueCoating == '薄白' %}checked{% endif %}> 薄白
<input type="radio" name="tongueCoating" value="黄腻" {% if formData.tongueCoating == '黄腻' %}checked{% endif %}> 黄腻
<input type="radio" name="tongueCoating" value="白厚" {% if formData.tongueCoating == '白厚' %}checked{% endif %}> 白厚
<input type="radio" name="tongueCoating" value="少苔" {% if formData.tongueCoating == '少苔' %}checked{% endif %}> 少苔
</label>
<label>眼神特征:
<input type="radio" name="eyeLook" value="明亮" {% if formData.eyeLook == '明亮' %}checked{% endif %}> 明亮
<input type="radio" name="eyeLook" value="晦暗" {% if formData.eyeLook == '晦暗' %}checked{% endif %}> 晦暗
<input type="radio" name="eyeLook" value="干涩" {% if formData.eyeLook == '干涩' %}checked{% endif %}> 干涩
</label>
</div>
<div class="section">
<h3>闻诊</h3>
<label>声音特征:
<input type="radio" name="voiceQuality" value="清晰" {% if formData.voiceQuality == '清晰' %}checked{% endif %}> 清晰
<input type="radio" name="voiceQuality" value="嘶哑" {% if formData.voiceQuality == '嘶哑' %}checked{% endif %}> 嘲哑
<input type="radio" name="voiceQuality" value="低沉" {% if formData.voiceQuality == '低沉' %}checked{% endif %}> 低沉
<input type="radio" name="voiceQuality" value="急促" {% if formData.voiceQuality == '急促' %}checked{% endif %}> 急促
</label>
<label>呼吸声特征:
<input type="radio" name="breathSound" value="均匀" {% if formData.breathSound == '均匀' %}checked{% endif %}> 均匀
<input type="radio" name="breathSound" value="粗重" {% if formData.breathSound == '粗重' %}checked{% endif %}> 粗重
<input type="radio" name="breathSound" value="短促" {% if formData.breathSound == '短促' %}checked{% endif %}> 短促
</label>
</div>
<div class="section">
<h3>问诊</h3>
<label>饮食习惯:
<input type="radio" name="dietHabit" value="正常" {% if formData.dietHabit == '正常' %}checked{% endif %}> 正常
<input type="radio" name="dietHabit" value="偏食" {% if formData.dietHabit == '偏食' %}checked{% endif %}> 偏食
<input type="radio" name="dietHabit" value="过量" {% if formData.dietHabit == '过量' %}checked{% endif %}> 过量
<input type="radio" name="dietHabit" value="不足" {% if formData.dietHabit == '不足' %}checked{% endif %}> 不足
</label>
<label>睡眠质量:
<input type="radio" name="sleepQuality" value="良好" {% if formData.sleepQuality == '良好' %}checked{% endif %}> 良好
<input type="radio" name="sleepQuality" value="失眠" {% if formData.sleepQuality == '失眠' %}checked{% endif %}> 失眠
<input type="radio" name="sleepQuality" value="多梦" {% if formData.sleepQuality == '多梦' %}checked{% endif %}> 多梦
</label>
<label>情绪状态:
<input type="radio" name="moodStatus" value="稳定" {% if formData.moodStatus == '稳定' %}checked{% endif %}> 稳定
<input type="radio" name="moodStatus" value="焦虑" {% if formData.moodStatus == '焦虑' %}checked{% endif %}> 焦虑
<input type="radio" name="moodStatus" value="抑郁" {% if formData.moodStatus == '抑郁' %}checked{% endif %}> 抑郁
</label>
<label>排泄情况:
<input type="radio" name="bowelMovement" value="正常" {% if formData.bowelMovement == '正常' %}checked{% endif %}> 正常
<input type="radio" name="bowelMovement" value="便秘" {% if formData.bowelMovement == '便秘' %}checked{% endif %}> 便秘
<input type="radio" name="bowelMovement" value="腹泻" {% if formData.bowelMovement == '腹泻' %}checked{% endif %}> 腹泻
</label>
</div>
<div class="section">
<h3>切诊</h3>
<label>脉象特征:
<input type="radio" name="pulse" value="弦" {% if formData.pulse == '弦' %}checked{% endif %}> 弦
<input type="radio" name="pulse" value="滑" {% if formData.pulse == '滑' %}checked{% endif %}> 滑
<input type="radio" name="pulse" value="细" {% if formData.pulse == '细' %}checked{% endif %}> 细
<input type="radio" name="pulse" value="数" {% if formData.pulse == '数' %}checked{% endif %}> 数
</label>
</div>
<button type="submit">提交诊断</button>
</form>
{% if chat_response %}
<h2>DeepSeek 回复:</h2>
<p>{
{ chat_response|safe }}</p>
{% endif %}
</body>
</html>
.env 文件(存放key)
DEEPSEEK_API_KEY=填入你的密钥
当以上准备工作完成后,直接执行如下命令启动:
python app.py
在本地打开浏览器并访问 http://127.0.0.1:5000/ ,能够看到智能中医问诊系统的界面,提交表单后会显示用户的输入和 DeepSeek API 的回复。
假如说碰到问题,可以将报错丢给通义代码模式来进行排查,通义也会给出优化的代码~这里的报错就是借助通义完成的
基于阿里云百炼平台调用DeepSeek结合NovelCline生成小说
这也算是最近在尝试的一个实践吧,因为DeepSeek-R1出来后其思维链确实很香,能够补足小说上下文剧情无逻辑的劣势,是真正能够思考后写出一定剧情的,不像之前那种纯是套固定剧情模板的。
这里用到的插件是NovelCline,同样是需要在VScode里面下载,这下好了,现在都可以用VScode写小说了。
这个其实是一位大佬基于Cline魔改的,本质都是多agent架构,修改每个agent的对应提示词就好了,但是整个工作量仍然比较大,所以,感谢大佬!!!
我们填写下面内容调用百炼平台API,还可以添加小说的限制词如:背景为古代,不出现某某词语等。
创建一个md文件,并在VScode中打开
我们给出prompt如下:
请你以诡秘之主小说为原本,续写一部同人作品,给出提纲及故事发生背景等必要信息。
然后看着AI自己动手写就可以了
不过,小说确实也是很耗费token,写个一章再慢慢扩充二三十万token就没了(下面仅仅是大纲部分)
不过,白嫖的100万token写个短篇小说还是绰绰有余的啦
阿里云通义灵码调用DeepSeek-R1及V3
本来已经快结尾了,突然看到灵码支持了自定义选择底层模型,赶紧续上这一段~
测试了一下,有思考模式,确实是真的DeepSeek!