【DeepSeek】官方最新提供【文件上传提示词】实践总结【Windows】【Python】

【DeepSeek】官方最新提供【文件上传提示词】实践总结【Windows】【Python】

  • 引言
  • 准备工作
  • 开始实践
  • 实际应用扩展
  • txt类型文件
  • xlsx类型文件
  • 引言

    近日DeepSeek官方更新了关于DeepSeek-R1模型文件上传的建议操作方式,本文我们将按照官方的提示进行一下实践。

    准备工作

    1. 通过本地Ollama运行DeepSeek-R1模型,具体是运行7B14B还是32B的模型,依据自己电脑的配置来选择模型的参数体量,当然是参数体量越大效果越好,但是无论使用什么参数体量的模型对本次实践不产生影响。
    2. Anaconda安装,提供Python代码运行所需的虚拟环境。
    3. PyCharm安装,代码编写和运行工具,方便。

    开始实践

    第一步:安装Anaconda工具。
    第二步:在Anaconda中创建一个新的虚拟环境,示例如下:
    首先打开AnacondaPowershell窗口:
    Powershell窗口
    输入以下命令,创建虚拟环境:

    conda create -n ollama_demo
    

    创建虚拟环境
    输入以下命令,切换到新创建的虚拟环境中:

    conda activate ollama_demo
    

    切换虚拟环境
    输入以下命令,建议安装python3.10

    conda install python=3.10
    

    安装python3.10
    输入以下命令,安装Ollama

    pip install ollama -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    安装Ollama
    打开PyCharm工具新建一个项目工程,如下图所示:
    新建项目工程
    注意运行环境要选择刚刚新建好的虚拟环境,如下图所示:
    选择虚拟环境
    这是创建好的工程目录,如下图所示:
    工程目录
    可以运行一下main.py文件,测试一下环境配置是否正确,运行后控制台打印输出Hi, PyCharm,代表正常,如下图所示:
    测试项目运行是否正常
    接下来在工程根目录下新建一个python文件,如下图所示:
    新建python文件
    输入文件名称deepseek_r1_pormpts,如下图所示:
    输入文件名称
    然后点击回车键,创建成功,如下图所示:
    python文件创建成功
    在新建的文件中输入以下代码,来测试本地DeepSeek-R1模型运行是否正常:

    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官方提供的上传文件的提示词继续编写代码:
    这是官方链接地址:official-prompts
    DeepSeek官方文档
    文档内容翻译如下:

    官方提示
    在官方的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内容进行替换,如下图所示:
    改造代码

    'content': '[file name]: 测试.txt'
                       '[file content begin]'
                       'deepseek上传文件提示词测试!'
                       '[file content end]'
                       '文档中写了什么?'
    

    运行结果,如下图所示:
    运行结果
    至此在Windows系统下Python代码方式DeepSeek-R1文件上传提示词实践到此结束,如有问题或建议欢迎大家评论区交流,最后还是要passion

    实际应用扩展

    在实际应用中发现如果上传文件的内容较大,代码中的content内容也会非常庞大,这导致代码看上去不是很美观,所以又进行如下升级改造。
    原理:自动读取文件内容并将读取出来的文件内容转换成字符串。
    目前选取了txtxlsx类型的文件进行了测试,代码及效果如下所示:

    txt类型文件

    代码改造:
    新增txt测试文件,如下图所示:
    新增txt文件
    修改代码,内容如下图所示:
    修改代码

    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测试文件,如下图所示:
    新增xlsx文件
    修改代码,内容如下图所示:
    修改代码

    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页名称一定要对应好,很重要!
    运行效果:
    运行效果

    作者:Andy O‘Connor

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【DeepSeek】官方最新提供【文件上传提示词】实践总结【Windows】【Python】

    发表回复