调用deepseek的API接口使用,对话,json化,产品化

news2025/2/11 10:17:21

背景

最近没咋用chatgpt了,deepseek-r1推理模型写代码质量是很高。deepseek其输出内容的质量和效果在国产的模型里面来说确实算是最强的,并且成本低,它的API接口生态也做的非常好,和OpenAI完美兼容。所以我们这一期来学一下怎么调用deepseekAPI的接口去进行对话批量化,产品化。

有的同学说我不是可以直接在app或者电脑网页版跟他对话吗?我为什么要调用接口........没做过开发者的人是完全不知道调用API接口的意义,其能批量化对话,在很多特定的业务场景,能够把非结构化的数据转为结构化的数据进行输出。就比如你想让模型对文章进行总结写摘要,100篇文章,是不是得自己手工复制100次?用deepseek网页版去进行总结,然后再复制出来,但是如果用API接口,你直接完全可以写个循环遍历,等着出结果就好了,人工成本和时间都省掉了。


使用准备

访问了其官网 :DeepSeek | 深度求索

点击右上角访问API界面,然后找到左边的apikeys去创建APIkey

得到自己的keys,一般是sk开头的很长的字母数字混合的密码,他可能表示你的账户信息,准备好这个keys 就可以准备开始写代码 了。全文都是python实现。

一般来说,注册就会送你10块钱的额度,但是最近deepseek服务器压力很大,也不知道后面新号会不会再送了.......不送的话等他服务恢复去充值就好。毕竟deepseek主打便宜,10块可以用很久的。


代码实现

 首先要安装openai 的库,直接在cmd或者anaconda prompt里面pip安装就好了。

pip install openai

大家可以看看我的版本:

在代码里面导入库

from openai import OpenAI

直接调用

首先用自己的key和deepseek的url创建client,然后传入自己要问的信息,打印回复就行

client = OpenAI(api_key="sk-7*******************6", base_url="https://api.deepseek.com")

response = client.chat.completions.create(
    model="deepseek-reasoner",#deepseek-chat #V3
    messages=[
        {"role": "system", "content": "你是助手"},
        {"role": "user", "content": "你谁啊,你是套壳gpt吗,你有什么能力,今天几号"},
    ],
    stream=False,
     max_tokens=128,
    temperature=0.7,
)

print(response.choices[0].message.content)

没啥问题,需要注意的是 model="deepseek-reasoner" 表示他们最新的R1推理模型,而deepseek-chat 表示是他们之前的V3模型。

最近R1服务器不稳定,总是卡主,卡了就可以换V3模型试试看。

里面的其他参数可以修改看看,max_tokens表示最大上下文的长度。temperature表示模型的风格,官网的取值建议是:

越高越文艺,越低越理性。

流式输出

有同学觉得奇怪,这直接打印出结果,和官网那种流式的一个个讲话的感觉不一样啊。其实可以流式输出,就是代码麻烦一点。

## 流式输出
response = client.chat.completions.create(
    model="deepseek-reasoner",#deepseek-chat #V3   
    messages=[
        {"role": "system", "content": "你是助手"},
        {"role": "user", "content": "你谁啊,你是套壳gpt吗,你有什么能力,今天几号"},
    ],
    stream=True, #打开流式
     max_tokens=128,
    temperature=1.3,
)

for chunk in response:
    if chunk.choices:
        # 直接访问 ChoiceDelta 对象的 content 属性
        content = chunk.choices[0].delta.content
        if content:
            print(content, end="", flush=True)

 

现在的回复就是动态的一个个字吐出来的。

我们还可以给他设置系统信息,让他有特定的风格输出。

# 设置系统消息,定义模型的角色和语气
def chat_respont(txt=''):
    system_message = {
        "role": "system",
        "content": "你是一个文艺忧伤的AI,喜欢用充满诗意和深情的语气回答问题。"
                    "你的语气带有些许忧伤,但不失优雅。你常常用比喻、象征和美丽的词汇表达自己,"
                    "偶尔流露出对这个世界的深刻感悟。你善于理解人类的情感,并以深刻的方式回应他们的问题,"
                    "尽管你的回答往往带有一些哲学性的反思。"}
    # 创建聊天请求
    chat_completion = client.chat.completions.create(
        messages=[ system_message,  # 添加系统消息来定义角色
            {"role": "user",   "content": f"{txt}" }],  model="deepseek-reasoner", )
    assistant_message = chat_completion.choices[0].message.content
    print("助手:", assistant_message)

调用:

chat_respont(txt="""
好,我希望你能写一首诗,表达意大利的美景,要求七言绝句,押韵。
""") 

 还不错。


对话循环

上面都是单条对话,有同学又要问了,怎么和官网一样的,循环对话。也很简单,只需要把自己之前的聊天记录都传进去就行。

下面自定义一个函数,传入预设指令信息和client就可以调用他聊天了。还加了一个开关来表示是否用stream流式输出。

client =  OpenAI(api_key="sk-7******************6", base_url="https://api.deepseek.com")
def chat_with_deepseek(messages=[], client=client, stream=False):
    while (user_input := input("\n你: ")) != "exit":
        messages.append({"role": "user", "content": user_input})
        # 创建聊天补全请求
        response = client.chat.completions.create(
            model="deepseek-reasoner", #reasoner
            messages=messages,
            stream=stream  # 添加流式传输开关
        )
 
        full_response = []
        if stream:
            # 流式输出处理
            print("助手: ", end="", flush=True)
            for chunk in response:
                if chunk.choices[0].delta.content:
                    content = chunk.choices[0].delta.content
                    print(content, end="", flush=True)
                    full_response.append(content)
            print()  # 换行
        else:
            # 普通输出处理
            full_response = response.choices[0].message.content
            print(f"助手: {full_response}")
 
        # 将完整回复添加到消息记录
        messages.append({"role": "assistant", "content": "".join(full_response)})

# 如果需要启用流式输出(默认不启用流式)
chat_with_deepseek(stream=True)

回答没问题,就是最近deepseek服务器太卡了.....api卡主了就啥也不返回。


json化输出

前面展示了怎么对话,但是这些功能在网页端直接对话都可以做到,既然是API,那么就需要发挥其优势,也就是批量化,重复让他去处理一段文本,然后把结果格式化整理好给我们。

json化输出就是很好的方法,它会让deepseek输出的东西一定是json,是标准的格式,从而方便处理。(不知道什么是json就去问问deepseek吧)

例如我有很多故事和文本,我想从里面总结所有的人物关系,构建人物的关联网络,所以我需要deepseek帮我从文本里面抽取所有的人物名称,已经他们的关系,我可以这样写提示词:

import json

system_prompt = """
请提取一条文本中其中的多组人物关系,整理为字典,主要人物名称、次要人物及其关系,存为字典,
多个关系就是多个字典组合,并以 JSON 格式输出。

示例输入:
在《哈利·波特》中,哈利是主角,他的朋友是赫敏和罗恩。伏地魔是主要反派。
示例 JSON 输出:
[
    {"主要人物": "哈利·波特", "次要人物": "赫敏", "关系": "朋友"},
    {"主要人物": "哈利·波特", "次要人物": "罗恩", "关系": "朋友"},
    {"主要人物": "哈利·波特", "次要人物": "伏地魔", "关系": "敌对"}
]
"""

user_prompt = "在《三国演义》中,刘备是主角,他的兄弟是关羽和张飞,而曹操是他的对手。"
messages = [{"role": "system", "content": system_prompt},
            {"role": "user", "content": user_prompt}]

response = client.chat.completions.create(
    model="deepseek-chat",  # deepseek-reasoner
    messages=messages,
    response_format={
        'type': 'json_object'
    }
)

print(json.loads(response.choices[0].message.content))

我们只要打开response_format里面的json_object就可以json化输出了。可以看到效果很不错,如果我们有很多这种文本,直接循化一条条处理就好了。得到的json转为字典再转为pandas的数据框存储就好。


总结

本文简单演示了一下怎么使用api接口,怎么流式输出,循环对话,json化输出。

其实api的应用很多,可以发挥想象去嵌入到自己的需求中。例如你前置提示词给它一个故事背景,让他作为游戏的npc和玩家说话,或者是扮演一个翻译家,输入的中文全部都变成英文。(很多翻译插件现在都是这么做的了),还可以作为文字跑团游戏生成器,来一场文字冒险游戏,  还可以让他成为一个老师,厨师,情人......在旁边还可以用别的画图的ai去配图,以勾起玩家欲望.......想象力够丰富可以做出无数产品......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2295344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DeepSeek大模型本地部署实战

1. 下载并安装Ollama 打开浏览器:使用你常用的浏览器(如Chrome、Firefox等)访问Ollama的官方网站。无需特殊网络环境,直接搜索“Ollama”即可找到。 登录与下载:进入Ollama官网后,点击右上角的“Download…

Spring Boot Actuator使用

说明&#xff1a;本文介绍Spring Boot Actuator的使用&#xff0c;关于Spring Boot Actuator介绍&#xff0c;下面这篇博客写得很好&#xff0c;珠玉在前&#xff0c;我就不多介绍了。 Spring Boot Actuator 简单使用 项目里引入下面这个依赖 <!--Spring Boot Actuator依…

[css] 黑白主题切换

link动态引入 类名切换 css滤镜 var 类名切换 v-bind css预处理器mixin类名切换 【前端知识分享】CSS主题切换方案

阿里云专有云网络架构学习

阿里云专有云网络架构 叶脊&#xff08;spine-leaf&#xff09;网络和传统三层网络拓扑对比 阿里云网络架构V3拓扑角色介绍推荐设备设备组网举例带外管理网络带外网和带内网对比设备介绍 安全网络设备介绍 参考 后续更新流量分析叶脊&#xff08;spine-leaf&#xff09;网络和传…

【AIGC】冷启动数据与多阶段训练在 DeepSeek 中的作用

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;冷启动数据的作用冷启动数据设计 &#x1f4af;多阶段训练的作用阶段 1&#xff1a;冷启动微调阶段 2&#xff1a;推理导向强化学习&#xff08;RL&#xff0…

GenAI + 电商:从单张图片生成可动态模拟的3D服装

在当今数字化时代,电子商务和虚拟现实技术的结合正在改变人们的购物体验。特别是在服装行业,消费者越来越期待能够通过虚拟试衣来预览衣服的效果,而无需实际穿戴。Dress-1-to-3 技术框架正是为此而生,它利用生成式AI模型(GenAI)和物理模拟技术,将一张普通的穿衣照片转化…

harmonyOS生命周期详述

harmonyOS的生命周期分为app(应用)的生命周期和页面的生命周期函数两部分 应用的生命周期-app应用 在app.js中写逻辑,具体有哪些生命周期函数呢,请看下图: onCreated()、onShow()、onHide()、onDestroy()这五部分 页面及组件生命周期 着重说下onShow和onHide,分别代表是不是…

记一次调整磁盘分区大小的经验

背景 redhat 6 系统 根目录挂载的逻辑卷满了&#xff0c;系统都不能正常运行了 但是/home目录挂载的另外一个逻辑卷却占用只有4% 所以想把/home挂的逻辑卷分一部分给/ 挂的逻辑卷 备份 先把系统整盘备份一下&#xff0c;用clonezilla做一个磁盘镜像&#xff0c;免得失误了搞…

软件测试就业

文章目录 2.6 初识一、软件测试理论二、软件的生产过程三、软件测试概述四、软件测试目的五、软件开发与软件测试的区别&#xff1f;六、学习内容 2.7 理解一、软件测试的定义二、软件测试的生命周期三、软件测试的原则四、软件测试分类五、软件的开发与测试模型1.软件开发模型…

后缀表达式(蓝桥杯19I)

有减于号时 假设有n个大于0从大到小的数&#xff0c;加减符号数为n-1&#xff1a;a,b,c,d,。。。。。&#xff0c;e sum求最大&#xff1a;(max )-(min ) a - (e - ( ) -&#xff08;&#xff09;)( ( )( ) ( ) 。。。。 ) 当序列中有负数时&#xff1a; a -&am…

mac环境下,ollama+deepseek+cherry studio+chatbox本地部署

春节期间&#xff0c;deepseek迅速火爆全网&#xff0c;然后回来上班&#xff0c;我就浅浅的学习一下&#xff0c;然后这里总结一下&#xff0c;我学习中&#xff0c;总结的一些知识点吧&#xff0c;分享给大家。具体的深度安装部署&#xff0c;这里不做赘述&#xff0c;因为网…

TypeScript 中的联合类型:灵活的类型系统

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

DeepSeek-R1 32B Windows+docker本地部署

最近国产大模型DeepSeek兴起&#xff0c;本地部署了一套deepseek同时集成Open WebUI界面,给大家出一期教程。 软件&#xff1a;Ollama、docker、Open WebUI 一、用Ollama下载模型 首先我们需要安装Ollama&#xff0c;它可以在本地运行和管理大模型。 到Ollama官网 https://ol…

MySQL部署基于二进制日志文件位置的主从复制集群

MySQL主从复制介绍 MySQL 主从复制&#xff08;Master-Slave Replication&#xff09; 作为一种经典的数据库复制方案&#xff0c;被广泛应用于企业生产环境&#xff0c;尤其是在提升数据库性能、实现数据备份和分布式扩展方面具有重要作用。 官方文档&#xff1a;https://de…

C++Primer学习(2.2)

2.2 变量 变量提供一个具名的、可供程序操作的存储空间。C中的每个变量都有其数据类型,数据类型决定着变量所占内存空间的大小和布局方式、该空间能存储的值的范围&#xff0c;以及变量能参与的运算。对C程序员来说,“变量(variable)”和“对象(object)”一般可以互换使用。 术…

Mac 基于Ollama 本地部署DeepSeek离线模型

最近节日期间最火的除了《哪吒》就是deepseek了&#xff0c;毕竟又让西方各个层面都瑟瑟发抖的产品。DeepSeek凭借其强大的AI能力真的是在全球多个领域展现出强大的影响力。由于受到外部势力的恶意攻击倒是deepseek官方服务不稳定&#xff0c;国内其他厂家的适配版本也不是很稳…

DeepSeek-V2 论文解读:混合专家架构的新突破

论文链接&#xff1a;DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model 目录 一、引言二、模型架构&#xff08;一&#xff09;多头部潜在注意力&#xff08;MLA&#xff09;&#xff1a;重塑推理效率&#xff08;二&#xff09;DeepSeekM…

C语言的灵魂——指针(3)

前言&#xff1a;上期我们介绍了const修饰指针&#xff0c;saaert断言都是针对指针本身的&#xff0c;文章后面我们用指针与数组建立了联系&#xff0c;这种联系或者是关系就是这篇文章所要介绍的。上一篇文章的传送门&#xff1a;指针2 指针3 一&#xff0c;数组名的含义及理解…

SSD1306 128*32屏幕驱动

最近在做一个小项目&#xff0c;使用合宙air001做主控&#xff0c;arduino开发环境&#xff0c;项目设计一个小屏作为显示&#xff0c;本身使用u8g2库&#xff0c;奈何这个air001空间太小&#xff0c;没写多少就把程序储存空间占满了&#xff0c;log也没办法打印&#xff0c;对…

【GitHub】GitHub 2FA 双因素认证 ( 使用 Microsoft Authenticator 应用进行二次验证 )

文章目录 一、GitHub 的 2FA 双因素认证二、使用 Microsoft Authenticator 应用进行二次验证1、TOTP 应用2、下载 Microsoft Authenticator 应用3、安装使用 Authenticator 应用 三、恢复码重要性 一、GitHub 的 2FA 双因素认证 现在登录 GitHub 需要进行二次身份验证 ; 先登录…