AI_DeepSeek-提示词以及代码调用

使用方式

1.网页直接使用-在线体验
2.使用DeepSeek的API,使用第三方的API  。目前,API 暂不支持搜索功能
    sk-b***************************
3.使用第三方一键部署的服务-然后调用API
4.本地部署然后调用API
5.预训练模型-部署-调用

模型

01.模型:
   deepseek-chat 和 deepseek-coder 模型调用
   DeepSeek-V2-Chat 和 DeepSeek-Coder-V2 两个模型的合并,正式发布 DeepSeek-V2.5
    DeepSeek-V3 首个版本上线并同步开源
02.参数
 超参数及 prompt
  01. temperature
   精确回答:可以使用较低的温度以确保生成文本的准确性和连贯性
   temperature(温度)是一个控制生成文本随机性与创造性的超参数
      Determines the degree of randomness in the response. Softmax函数的输出概率分布
03.接口
    /chat/completions   对话补全
    /completions
	 
	多轮对话 

基本概念理解

1. DeepSeek API 创新采用硬盘缓存
   即 system 消息 + user 消息中的 <财报内容>。缓存系统以 64 tokens 为一个存储单元 缓存构建耗时为秒级。缓存不再使用后会自动被清空
   计费分析
    大模型的计费方式都是依据token来计算
          token数	  一般情况下模型中 token 和字数的换算比例 不同模型的分词不同,所以换算比例也存在差异 
        。Token 是模型用来表示自然语言文本的的最小单位,可以是一个词、一个数字或一个标点符号等 			  
	2.
     缓存命中是,指当系统接收到数据请求时,
	       所需数据已存在于缓存(Cache)中,无需从原始数据源(如数据库、API接口)重复获取。		
	    用户多次发送相同或相似的问题给模型
	缓存未命中  缓存过期或问题变化 → 缓存未命中 → 重新调用 API。
    3.总成本 = 输入成本(含缓存) + 输出成本  


2.Function Calling 功能效果 
 	函数功能需由用户提供,模型本身不执行具体函数      
3. temperature 等参数
    max_tokens:最终回答的最大长度(不含思维链输出),默认为 4K,最大为 8K
    reasoning_effort  控思维链的长度的参数-待上线
	
4.限速 -DeepSeek API 不限制用户并发量-当我们的服务器承受高流量压力时
  并持续收到如下格式的返回内容:
    非流式请求:持续返回空行  请注意处理这些空行或注释	 

输入

 "role": "system"  系统提示词   "content": "You are a helpful assistant",
 "role": "user"    用户输入      "content": "Hi",
 "role": "assistant" 模型输出
长预设提示词的问答助手类  长角色设定与多轮对话的角色扮演
messages = [{"role": "system", "content": system_prompt},
             {"role": "user", "content": user_prompt}]

代码示例

import requests
import json

url = "https://api.deepseek.com/chat/completions"

auto_sk = r"sk-****************"
headers = {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'Authorization': 'Bearer ' + auto_sk
}

message_content = [
    {"content": "You are a helpful assistant", "role": "system"},
    {"role": "user", "content": "9.11 and 9.8, which is greater?"}]

input_info = {
    "messages": message_content,
    "model": "deepseek-chat",
    "frequency_penalty": 0,
    "max_tokens": 2048,
    "presence_penalty": 0,
    "response_format": {"type": "text"},
    "stop": None,
    "stream": False,
    "stream_options": None,
    "temperature": 1,
    "top_p": 1,
    "tools": None,
    "tool_choice": "none",
    "logprobs": False,
    "top_logprobs": None,

}
payload = json.dumps(input_info)
response = requests.request("POST", url, headers=headers, data=payload)
response.encoding = 'utf-8'
status = response.status_code
print("status",status)
if response.status_code == 200:
    print("response.text :",response.text)
    response_info = response.json()
    assistant_content = response_info.get("choices")[0].get("message")["content"]
    print(status, assistant_content)
else:
    print(f"请求失败,状态码: {response.status_code}")
# Round 2
if assistant_content is not None:
    message_content.append({'role': 'assistant', 'content': assistant_content})
    message_content.append({'role': 'user', 'content': "How many Rs are there in the word 'strawberry'?"})
    print("message_content",message_content)
    input_info["messages"] = message_content
    payload = json.dumps(input_info)
    response = requests.request("POST", url, headers=headers, data=payload)
    status = response.status_code
    if response.status_code == 200:
        print("response.text 2 :",response.text)
        response_info = response.json()
        assistant_content = response_info.get("choices")[0].get("message")["content"]
        print(status, assistant_content)
    else:
        print(f"请求失败,状态码: {response.status_code}")

输出

输出思维链内容(reasoning_content)和最终回答(content
print(response.status_code,response.text)	
200
{
"id":"a4***5ca3d3c32",  ## 该对话的唯一标识符
"object":"chat.completion",                   ## 对象的类型, 其值为 chat.completion 
"created":1738820478,                         ## 创建聊天完成时的 Unix 时间戳(以秒为单位)  
"model":"deepseek-reasoner",                  ## 生成该 completion 的模型名。
"choices":[{"index":0,                        ##  completion 的选择列表中的索引
            "message":{"role":"assistant",    ##生成这条消息的角色
			           "content":"Hello! How can I assist you today? 😊",
			           "reasoning_content":"Okay, the user just said \"Hi\". I should respond in a friendly and approachable way. Let me start with a greeting. 
					                         Maybe ask how I can assist them today to keep the conversation going. Keep it simple and welcoming."},
			"logprobs":null,      ## 该 choice 的对数概率信息。
			"finish_reason":"stop"} ##模型停止生成 token 的原因。
		 ],
"usage":{"prompt_tokens":12,
         "completion_tokens":60,
		 "total_tokens":72,
		"prompt_tokens_details":{"cached_tokens":0},
		"completion_tokens_details":{"reasoning_tokens":47},
		"prompt_cache_hit_tokens":0,  ## 本次请求的输入中,缓存命中的 tokens 数
		 "prompt_cache_miss_tokens":12 ## 本次请求的输入中,缓存未命中的 tokens 数
							  }
,"system_fingerprint":"fp_**9a08"}

错误排查

401 认证失败
    {"error":{"message":"Authentication Fails (no such user)","type":"authentication_error","param":null,"code":"invalid_request_error"}}
     1.有无API key
	 2.API的配置位置是否对

402 - 余额不足
   {"error":{"message":"Insufficient Balance","type":"unknown_error","param":null,"code":"invalid_request_error"}}
    赠送账单有10元,有效期是30天,超过30天后失效,
	充值余额为0的话,调用API会失效 充值账单  "Insufficient Balance" 通常与资金不足相关

相关概念

  robots.txt 和 sitemap.xml 是为搜索引擎设计的, 传统的 SEO 技术是针对搜索爬虫而非推理引擎进行优化的
  LLMs.txt 是面向推理引擎优化,它以 LLM 可以轻松理解的格式向 LLM 提供有关网站的信息		
	  /llms.txt: 简化的文档导航视图,帮助 AI 系统快速理解站点的结构
	  /llms-full. txt: 在一个包含所有文档的综合文件
	
 ‌Cursor 是一款基于人工智能的代码编辑器,旨在帮助开发者更高效地编写代码	
 Continue 是一款支持代码补全的 VSCode 插件
 
 request
    Content-Type类型 text/plain:纯文本  application/json:JSON数据格式  application/xml:XML数据格式
	                 . application/x-www-form-urlencoded:普通表单格式(键值对) 请求参数用key1=val1&key2=val2的方式进行组织 
	                 image/jpeg:JPEG图片格式
					 参数本身就是json格式的数据,参数会被直接放到请求实体里,
	Content-Type 是关于请求或响应的实际数据类型的信息,
	而 Accept 是客户端表达其内容类型偏好的方式。这两个标头的合理使用有助于确保HTTP通信的有效性和互操作性。

使用 Few-shot 学习

	 是指在请求中提供一些示例,让模型学习到特定的模式
	 
    1.选择合适的模型
    2.合适的表达方式
        1. 用 " 输入 - 输出 " 的示例结构,让 LLM 理解你要的结果
    	2. 给示例 + 语言描述输出要求
    3.高质量的数据	 
	 
	链式推理(Chain of Thought)
    零样本提示(Zero shot)与少样本提示(Few shot)		
        prompt  Few Shot 重在 " 举例 "
雷军: 
    人工智能是如今最热门的科技创新的话题,要尽快适应这个新的时代,现在AI在各行各业都开始应用了,
	 要把AI工具用好,在刚开始大部分都不会用的时候,你会用对你来说就是机会,
	  而且用AI的工具解决问题的速度会比别人快很多	

案例

 写好Deepseek的提示词prompt
    1.明确目标,简洁清晰,细化-提供上下文
	2.结构化提示词 限制条件
	3. 分步引导 角色扮演  迭代优化
 
   你是新闻分类专家,主要任务 :对输入的新闻文本进行自动分类,识别其所属的新闻种类。
   你根据分析新闻文本的内容和结构,将新闻文本分类到预定义的种类中,预定义的种类有:政治、经济、科技、娱乐、体育、教育、健康。
   给你一段新闻文本,你只输出新闻文本所属预定义的哪个种类。
   现在将下列新闻文本进行分类:
   美国太空探索技术公司(SpaceX)的猎鹰9号运载火箭(Falcon 9)
   在经历美国联邦航空管理局(Federal Aviation Administration,FAA)短暂叫停发射后,
   于当地时间8月31日凌晨重启了发射任务。		 

参考

  上下文硬盘缓存 https://api-docs.deepseek.com/zh-cn/guides/kv_cache	
  Token 用量计算 https://api-docs.deepseek.com/zh-cn/quick_start/token_usage
  提示库 https://api-docs.deepseek.com/zh-cn/prompt-library/
  API 指南 使用 Few-shot 学习  https://api-docs.deepseek.com/zh-cn/guides/kv_cache
posted @   辰令  阅读(1431)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
点击右上角即可分享
微信分享提示