引言
近日DeepSeek
官方更新了关于DeepSeek-R1
模型文件上传的建议操作方式,本文我们将按照官方的提示进行一下实践。
准备工作
- 通过本地
Ollama
运行DeepSeek-R1
模型,具体是运行7B
、14B
还是32B
的模型,依据自己电脑的配置来选择模型的参数体量,当然是参数体量越大效果越好,但是无论使用什么参数体量的模型对本次实践不产生影响。 Anaconda
安装,提供Python
代码运行所需的虚拟环境。PyCharm
安装,代码编写和运行工具,方便。
开始实践
第一步:安装Anaconda
工具。
第二步:在Anaconda
中创建一个新的虚拟环境,示例如下:
首先打开Anaconda
的Powershell
窗口:
输入以下命令,创建虚拟环境:
lua
conda create -n ollama_demo
输入以下命令,切换到新创建的虚拟环境中:
conda activate ollama_demo
输入以下命令,建议安装python3.10
:
ini
conda install python=3.10
输入以下命令,安装Ollama
:
arduino
pip install ollama -i https://pypi.tuna.tsinghua.edu.cn/simple
打开PyCharm
工具新建一个项目工程,如下图所示:
注意运行环境要选择刚刚新建好的虚拟环境,如下图所示:
这是创建好的工程目录,如下图所示:
可以运行一下main.py
文件,测试一下环境配置是否正确,运行后控制台打印输出Hi, PyCharm
,代表正常,如下图所示:
接下来在工程根目录下新建一个python
文件,如下图所示:
输入文件名称deepseek_r1_pormpts
,如下图所示:
然后点击回车键,创建成功,如下图所示:
在新建的文件中输入以下代码,来测试本地DeepSeek-R1
模型运行是否正常:
ini
from ollama import chat
stream = chat(
model='deepseek-r1:32b',
messages=[{
'role': 'user',
'content': '你是谁?'
}],
stream=True,
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
写完代码效果如下图所示:
文件空白区域鼠标右键运行此文件,控制台输出如下图所示内容代表本地DeepSeek-R1
模型运行运行正常:
下一步参考DeepSeek
官方提供的上传文件的提示词继续编写代码:
这是官方链接地址:github.com/deepseek-ai...
文档内容翻译如下:
python
官方提示
在官方的DeepSeek网络/应用程序中,我们不使用系统提示,而是为文件上传和网络搜索设计了两个特定的提示,以获得更好的用户体验。此外,web/app中的温度为0.6。
对于文件上传,请按照模板创建提示,其中{file_name}、{file_content}和{question}是参数。
file_template = \
"""[file name]: {file_name}
[file content begin]
{file_content}
[file content end]
{question}"""
接下来开始改造代码,将content
内容进行替换,如下图所示:
arduino
'content': '[file name]: 测试.txt'
'[file content begin]'
'deepseek上传文件提示词测试!'
'[file content end]' '文档中写了什么?'
运行结果,如下图所示:
至此在Windows
系统下Python
代码方式DeepSeek-R1
文件上传提示词实践到此结束,如有问题或建议欢迎大家评论区交流,最后还是要passion
!
实际应用扩展
在实际应用中发现如果上传文件的内容较大,代码中的content
内容也会非常庞大,这导致代码看上去不是很美观,所以又进行如下升级改造。
原理:自动读取文件内容并将读取出来的文件内容转换成字符串。
目前选取了txt
和xlsx
类型的文件进行了测试,代码及效果如下所示:
txt类型文件
代码改造:
新增txt
测试文件,如下图所示:
修改代码,内容如下图所示:
ini
from ollama import chat
file = open('测试.txt', 'r')
content = file.read()
content_str = str(content)
print(content_str)
stream = chat(
model='deepseek-r1:32b',
messages=[{
'role': 'user',
# 'content': '你是谁?'
'content': '[file name]: 测试.txt'
'[file content begin]'
+ content_str +
'[file content end]'
'文档中写了什么?'
}],
stream=True,
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
运行效果:
xlsx类型文件
代码改造:
新增xlsx
测试文件,如下图所示:
修改代码,内容如下图所示:
ini
from ollama import chat
import openpyxl
workbook = openpyxl.load_workbook('测试.xlsx')
sheet = workbook['Sheet1']
content = []
for row in sheet.iter_rows():
row_data = []
for cell in row:
row_data.append(cell.value)
content.append(row_data)
content_string = ''
for row in content:
row_string = '\t'.join([str(cell) for cell in row])
content_string += row_string + '\n'
print(content_string)
stream = chat(
model='deepseek-r1:32b',
messages=[{
'role': 'user',
# 'content': '你是谁?'
'content': '[file name]: 测试.xlsx'
'[file content begin]'
+ content_string +
'[file content end]'
'文档中写了什么?'
}],
stream=True,
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
注意:读取excel
文件时需要引用单独的包,安装一下openpyxl
就可以了!
注意:文件名称和sheet
页名称一定要对应好,很重要!
运行效果: