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

打印 上一主题 下一主题

主题 890|帖子 890|积分 2670

背景

最近没咋用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安装就好了。
  1. pip install openai
复制代码
大家可以看看我的版本:


在代码内里导入库
  1. from openai import OpenAI
复制代码
直接调用

起首用本身的key和deepseek的url创建client,然后传入本身要问的信息,打印复兴就行
  1. client = OpenAI(api_key="sk-7*******************6", base_url="https://api.deepseek.com")
  2. response = client.chat.completions.create(
  3.     model="deepseek-reasoner",#deepseek-chat #V3
  4.     messages=[
  5.         {"role": "system", "content": "你是助手"},
  6.         {"role": "user", "content": "你谁啊,你是套壳gpt吗,你有什么能力,今天几号"},
  7.     ],
  8.     stream=False,
  9.      max_tokens=128,
  10.     temperature=0.7,
  11. )
  12. print(response.choices[0].message.content)
复制代码

没啥题目,需要留意的是 model="deepseek-reasoner" 表现他们最新的R1推理模型,而deepseek-chat 表现是他们之前的V3模型。
最近R1服务器不稳固,总是卡主,卡了就可以换V3模型试试看。
内里的其他参数可以修改看看,max_tokens表现最大上下文的长度。temperature表现模型的风格,官网的取值建议是:

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

流式输出

有同学觉得奇怪,这直接打印出结果,和官网那种流式的一个个讲话的感觉不一样啊。实在可以流式输出,就是代码麻烦一点。
  1. ## 流式输出
  2. response = client.chat.completions.create(
  3.     model="deepseek-reasoner",#deepseek-chat #V3   
  4.     messages=[
  5.         {"role": "system", "content": "你是助手"},
  6.         {"role": "user", "content": "你谁啊,你是套壳gpt吗,你有什么能力,今天几号"},
  7.     ],
  8.     stream=True, #打开流式
  9.      max_tokens=128,
  10.     temperature=1.3,
  11. )
  12. for chunk in response:
  13.     if chunk.choices:
  14.         # 直接访问 ChoiceDelta 对象的 content 属性
  15.         content = chunk.choices[0].delta.content
  16.         if content:
  17.             print(content, end="", flush=True)
复制代码
 

如今的复兴就是动态的一个个字吐出来的。
我们还可以给他设置系统信息,让他有特定的风格输出。
  1. # 设置系统消息,定义模型的角色和语气
  2. def chat_respont(txt=''):
  3.     system_message = {
  4.         "role": "system",
  5.         "content": "你是一个文艺忧伤的AI,喜欢用充满诗意和深情的语气回答问题。"
  6.                     "你的语气带有些许忧伤,但不失优雅。你常常用比喻、象征和美丽的词汇表达自己,"
  7.                     "偶尔流露出对这个世界的深刻感悟。你善于理解人类的情感,并以深刻的方式回应他们的问题,"
  8.                     "尽管你的回答往往带有一些哲学性的反思。"}
  9.     # 创建聊天请求
  10.     chat_completion = client.chat.completions.create(
  11.         messages=[ system_message,  # 添加系统消息来定义角色
  12.             {"role": "user",   "content": f"{txt}" }],  model="deepseek-reasoner", )
  13.     assistant_message = chat_completion.choices[0].message.content
  14.     print("助手:", assistant_message)
复制代码
调用:
  1. chat_respont(txt="""
  2. 好,我希望你能写一首诗,表达意大利的美景,要求七言绝句,押韵。
  3. """)
复制代码

 还不错。


对话循环

上面都是单条对话,有同学又要问了,怎么和官网一样的,循环对话。也很简朴,只需要把本身之前的聊天记载都传进去就行。
下面自定义一个函数,传入预设指令信息和client就可以调用他聊天了。还加了一个开关来表现是否用stream流式输出。
  1. client =  OpenAI(api_key="sk-7******************6", base_url="https://api.deepseek.com")
  2. def chat_with_deepseek(messages=[], client=client, stream=False):
  3.     while (user_input := input("\n你: ")) != "exit":
  4.         messages.append({"role": "user", "content": user_input})
  5.         # 创建聊天补全请求
  6.         response = client.chat.completions.create(
  7.             model="deepseek-reasoner", #reasoner
  8.             messages=messages,
  9.             stream=stream  # 添加流式传输开关
  10.         )
  11.         full_response = []
  12.         if stream:
  13.             # 流式输出处理
  14.             print("助手: ", end="", flush=True)
  15.             for chunk in response:
  16.                 if chunk.choices[0].delta.content:
  17.                     content = chunk.choices[0].delta.content
  18.                     print(content, end="", flush=True)
  19.                     full_response.append(content)
  20.             print()  # 换行
  21.         else:
  22.             # 普通输出处理
  23.             full_response = response.choices[0].message.content
  24.             print(f"助手: {full_response}")
  25.         # 将完整回复添加到消息记录
  26.         messages.append({"role": "assistant", "content": "".join(full_response)})
  27. # 如果需要启用流式输出(默认不启用流式)
  28. chat_with_deepseek(stream=True)
复制代码

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


json化输出

前面展示了怎么对话,但是这些功能在网页端直接对话都可以做到,既然是API,那么就需要发挥其优势,也就是批量化,重复让他去处置惩罚一段文本,然后把结果格式化整理好给我们。
json化输出就是很好的方法,它会让deepseek输出的东西一定是json,是标准的格式,从而方便处置惩罚。(不知道什么是json就去问问deepseek吧)
比方我有很多故事和文本,我想从内里总结全部的人物关系,构建人物的关联网络,以是我需要deepseek帮我从文本内里抽取全部的人物名称,已经他们的关系,我可以如许写提示词:
  1. import json
  2. system_prompt = """
  3. 请提取一条文本中其中的多组人物关系,整理为字典,主要人物名称、次要人物及其关系,存为字典,
  4. 多个关系就是多个字典组合,并以 JSON 格式输出。
  5. 示例输入:
  6. 在《哈利·波特》中,哈利是主角,他的朋友是赫敏和罗恩。伏地魔是主要反派。
  7. 示例 JSON 输出:
  8. [
  9.     {"主要人物": "哈利·波特", "次要人物": "赫敏", "关系": "朋友"},
  10.     {"主要人物": "哈利·波特", "次要人物": "罗恩", "关系": "朋友"},
  11.     {"主要人物": "哈利·波特", "次要人物": "伏地魔", "关系": "敌对"}
  12. ]
  13. """
  14. user_prompt = "在《三国演义》中,刘备是主角,他的兄弟是关羽和张飞,而曹操是他的对手。"
  15. messages = [{"role": "system", "content": system_prompt},
  16.             {"role": "user", "content": user_prompt}]
  17. response = client.chat.completions.create(
  18.     model="deepseek-chat",  # deepseek-reasoner
  19.     messages=messages,
  20.     response_format={
  21.         'type': 'json_object'
  22.     }
  23. )
  24. print(json.loads(response.choices[0].message.content))
复制代码

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

总结

本文简朴演示了一下怎么利用api接口,怎么流式输出,循环对话,json化输出。
实在api的应用很多,可以发挥想象去嵌入到本身的需求中。比方你前置提示词给它一个故事背景,让他作为游戏的npc和玩家说话,或者是饰演一个翻译家,输入的中文全部都变成英文。(很多翻译插件如今都是这么做的了),还可以作为文字跑团游戏生成器,来一场文字冒险游戏,  还可以让他成为一个老师,厨师,恋人......在旁边还可以用别的绘图的ai去配图,以勾起玩家欲望.......想象力够丰富可以做出无数产品......

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

乌市泽哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表