久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

DeepSeek API輸出解析

2025-02-19 171
DeepSeek

類型:人工智能

簡(jiǎn)介:一款基于深度學(xué)習(xí)和自然語(yǔ)言處理技術(shù)的產(chǎn)品,人氣趕超ChatGPT。

根據(jù)給定的代碼和數(shù)據(jù),我們可以詳細(xì)了解DeepSeek API輸出的各個(gè)字段及其功能。以下是對(duì)代碼輸出的逐步解讀。

print(completion.model_dump()) 的輸出并不適合閱讀,使用 Pretty Print 進(jìn)行打?。?/p>

# 結(jié)構(gòu)化打印
from pprint import pprint
pprint(completion.model_dump())
# 下方代碼作用和 pprint 一樣
# import json
# print(json.dumps(completion.model_dump(), indent=4, ensure_ascii=False))

下面以 DeepSeek API 的聊天模型和推理模型為例進(jìn)行解讀,涉及的知識(shí)對(duì)于使用了 OpenAI SDK 的平臺(tái)是通用的:

一、DeepSeek-Chat

輸出:

{'choices': [{'finish_reason': 'stop',
'index': 0,
'logprobs': None,
'message': {'content': '您好!我是由中國(guó)的深度求索(DeepSeek)公司開發(fā)的智能助手DeepSeek-V3。如您有任何任何問題,我會(huì)盡我所能為您提供幫助。',
'function_call': None,
'refusal': None,
'role': 'assistant',
'tool_calls': None}}],
'created': 1739002836,
'id': '897844a1-65d9-4e74-bdd3-4d966c8c1710',
'model': 'deepseek-chat',
'object': 'chat.completion',
'service_tier': None,
'system_fingerprint': 'fp_3a5770e1b4',
'usage': {'completion_tokens': 37,
'prompt_cache_hit_tokens': 0,
'prompt_cache_miss_tokens': 11,
'prompt_tokens': 11,
'prompt_tokens_details': {'cached_tokens': 0},
'total_tokens': 48}}

通過輸出的字段我們能做些什么?

1、獲取模型回復(fù)(choices)

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

輸出:

您好!我是由中國(guó)的深度求索(DeepSeek)公司開發(fā)的智能助手DeepSeek-V3。如您有任何任何問題,我會(huì)盡我所能為您提供幫助。

2、獲取用量信息(usage)

def print_chat_usage(completion):
stats = completion.usage
hit = stats.prompt_cache_hit_tokens
miss = stats.prompt_cache_miss_tokens
print(f"===== TOKEN 消耗明細(xì) =====")
print(f"輸入: {stats.prompt_tokens} tokens [緩存命中: {hit} | 未命中: {miss}]")
print(f"輸出: {stats.completion_tokens} tokens")
print(f"總消耗: {stats.total_tokens} tokens")
# 按 DeepSeek 定價(jià)計(jì)算成本(單位:元)
# - 輸入: 2元/百萬(wàn) Tokens(緩存命中 0.5元/百萬(wàn) Tokens)
# - 輸出: 8元/百萬(wàn) Tokens
# 官方價(jià)格文檔:https://api-docs.deepseek.com/zh-cn/quick_start/pricing/
input_cost = (hit * 0.5 + miss * 2) / 1_000_000
output_cost = stats.completion_tokens * 8 / 1_000_000
total_cost = input_cost + output_cost
print(f"\n===== 成本明細(xì) =====")
print(f"輸入成本: ¥{input_cost:.4f} 元")
print(f"輸出成本: ¥{output_cost:.4f} 元")
print(f"預(yù)估總成本: ¥{total_cost:.4f} 元")
print_chat_usage(completion)

輸出:

===== TOKEN 消耗明細(xì) =====
輸入: 11 tokens [緩存命中: 0 | 未命中: 11]
輸出: 37 tokens
總消耗: 48 tokens
===== 成本明細(xì) =====
輸入成本: ¥0.0000 元
輸出成本: ¥0.0003 元
預(yù)估總成本: ¥0.0003 元
[!important]

非 DeepSeek 官方平臺(tái)不存在一些特殊字段(比如:usage.prompt_cache_hit_tokens),一個(gè)更兼容的版本:

def print_chat_usage(completion, input_cost=2.0, output_cost=8.0, cache_hit_cost=0.5):
"""
參數(shù):
- input_cost: 輸入價(jià)格(元/百萬(wàn) Tokens)
- output_cost: 輸出價(jià)格(元/百萬(wàn) Tokens)
- cache_hit_cost: 緩存命中價(jià)格(當(dāng)平臺(tái)不支持時(shí)自動(dòng)退化到全價(jià)模式)
按 DeepSeek 聊天模型定價(jià)設(shè)定默認(rèn)成本(單位:元):
- 輸入: 2元/百萬(wàn) Tokens(緩存命中 0.5元/百萬(wàn) Tokens)
- 輸出: 8元/百萬(wàn) Tokens
官方價(jià)格文檔:https://api-docs.deepseek.com/zh-cn/quick_start/pricing/
"""
stats = completion.usage
# 嘗試獲取字段(兼容其他平臺(tái))
hit = getattr(stats, 'prompt_cache_hit_tokens', 0)
miss = getattr(stats, 'prompt_cache_miss_tokens', 
stats.prompt_tokens - hit if hasattr(stats, 'prompt_tokens') else 0)
print(f"===== TOKEN 消耗明細(xì) =====")
# 僅在存在緩存機(jī)制時(shí)顯示細(xì)節(jié)
if hit + miss > 0:
print(f"輸入: {stats.prompt_tokens} tokens [緩存命中: {hit} | 未命中: {miss}]")
else:
print(f"輸入: {stats.prompt_tokens} tokens")
print(f"輸出: {stats.completion_tokens} tokens")
print(f"總消耗: {stats.total_tokens} tokens")
# 動(dòng)態(tài)成本計(jì)算
input_cost = (hit * cache_hit_cost + miss * input_cost) / 1_000_000
output_cost = stats.completion_tokens * output_cost / 1_000_000
total_cost = input_cost + output_cost
print(f"\n===== 成本明細(xì) =====")
print(f"輸入成本: ¥{input_cost:.4f} 元")
print(f"輸出成本: ¥{output_cost:.4f} 元")
print(f"預(yù)估總成本: ¥{total_cost:.4f} 元")
print_chat_usage(completion)

二、DeepSeek-Reasoner

修改代碼中的 model 參數(shù)即可切換模型(以 DeepSeek 官方平臺(tái)為例):

- completion = client.chat.completions.create(
- model="deepseek-chat", # 3
+ completion = client.chat.completions.create(
+ model="deepseek-reasoner", # 3

其他平臺(tái)參考下表1,對(duì)應(yīng) reasoner_model_id 列:

base_url chat_model_id reasoner_model_id
DeepSeek “https://api.deepseek.com” “deepseek-chat” “deepseek-reasoner”
硅基流動(dòng) “https://api.siliconflow.cn/v1” “deepseek-ai/DeepSeek-V3” “deepseek-ai/DeepSeek-R1”
阿里云百煉 “https://dashscope.aliyuncs.com/compatible-mode/v1” “deepseek-v3” “deepseek-r1”
百度智能云 “https://qianfan.baidubce.com/v2” “deepseek-v3” “deepseek-r1”
字節(jié)火山引擎 https://ark.cn-beijing.volces.com/api/v3 / /

修改后運(yùn)行代碼:

from openai import OpenAI
import os
client = OpenAI(
api_key="your-api-key", # 1:替換成對(duì)應(yīng)的 API_Key
base_url="https://api.siliconflow.cn/v1", # 2
)
# 單輪對(duì)話示例
completion = client.chat.completions.create(
model="deepseek-ai/DeepSeek-R1", # 3:換成推理模型
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': '你是誰(shuí)?'}
]
)
from pprint import pprint
pprint(completion.model_dump())

輸出:

{'choices': [{'finish_reason': 'stop',
'index': 0,
'logprobs': None,
'message': {'content': '您好!我是DeepSeek-R1,一個(gè)由深度求索(DeepSeek)公司開發(fā)的智能助手,擅長(zhǎng)通過思考來(lái)幫您解答復(fù)雜的數(shù)學(xué),代碼和邏輯推理等理工類問題。我會(huì)始終保持專業(yè)和誠(chéng)實(shí),如果您有任何問題,我會(huì)盡力為您提供幫助。',
'function_call': None,
'reasoning_content': '嗯,用戶問“你是誰(shuí)?”,我需要用中文回答。首先,我要明確我的身份是一個(gè)AI助手,由中國(guó)的深度求索公司開發(fā),名字叫DeepSeek-R1。然后,要說明我的功能是幫助用戶解答問題、提供信息??赡苓€需要提到我擅長(zhǎng)多個(gè)領(lǐng)域,比如科技、科學(xué)、教育等等,以及使用場(chǎng)景,比如學(xué)習(xí)、工作、生活。還要保持友好和簡(jiǎn)潔,避免技術(shù)術(shù)語(yǔ),讓用戶容易理解。\n'
'\n'
'接下來(lái),我需要檢查是否符合公司的指導(dǎo)方針,有沒有需要強(qiáng)調(diào)的部分,比如安全性或隱私保護(hù)??赡苓€要提到持續(xù)學(xué)習(xí)優(yōu)化,但不需要太詳細(xì)。確?;卮鸾Y(jié)構(gòu)清晰,先自我介紹,再講功能,最后表達(dá)愿意幫助的態(tài)度。要避免任何格式錯(cuò)誤,用自然的口語(yǔ)化中文,不用markdown。然后組織語(yǔ)言,確保流暢自然,沒有生硬的部分。最后通讀一遍,確認(rèn)準(zhǔn)確性和友好性。',
'refusal': None,
'role': 'assistant',
'tool_calls': None}}],
'created': 1739030062,
'id': 'f8dfbdb0-6884-40db-bcd2-d411da96e1a7',
'model': 'deepseek-reasoner',
'object': 'chat.completion',
'service_tier': None,
'system_fingerprint': 'fp_7e73fd9a08',
'usage': {'completion_tokens': 248,
'completion_tokens_details': {'reasoning_tokens': 187},
'prompt_cache_hit_tokens': 0,
'prompt_cache_miss_tokens': 13,
'prompt_tokens': 13,
'prompt_tokens_details': {'cached_tokens': 0},
'total_tokens': 261}}

1、獲取模型回復(fù)(choices)

# 獲取推理思考過程(Reasoner特有字段)
reasoning_content = completion.choices[0].message.reasoning_content
print(f"===== 模型推理過程 =====\n{reasoning_content}")
# 獲取模型回復(fù)內(nèi)容(與之前相同)
content = completion.choices[0].message.content
print(f"===== 模型回復(fù) =====\n{content}")

輸出:

===== 模型推理過程 =====
嗯,用戶問“你是誰(shuí)?”,我需要用中文回答。首先,我要明確我的身份是一個(gè)AI助手,由中國(guó)的深度求索公司開發(fā),名字叫DeepSeek-R1。然后,要說明我的功能是幫助用戶解答問題、提供信息??赡苓€需要提到我擅長(zhǎng)多個(gè)領(lǐng)域,比如科技、科學(xué)、教育等等,以及使用場(chǎng)景,比如學(xué)習(xí)、工作、生活。還要保持友好和簡(jiǎn)潔,避免技術(shù)術(shù)語(yǔ),讓用戶容易理解。
接下來(lái),我需要檢查是否符合公司的指導(dǎo)方針,有沒有需要強(qiáng)調(diào)的部分,比如安全性或隱私保護(hù)??赡苓€要提到持續(xù)學(xué)習(xí)優(yōu)化,但不需要太詳細(xì)。確?;卮鸾Y(jié)構(gòu)清晰,先自我介紹,再講功能,最后表達(dá)愿意幫助的態(tài)度。要避免任何格式錯(cuò)誤,用自然的口語(yǔ)化中文,不用markdown。然后組織語(yǔ)言,確保流暢自然,沒有生硬的部分。最后通讀一遍,確認(rèn)準(zhǔn)確性和友好性。
===== 模型回復(fù) =====
您好!我是DeepSeek-R1,一個(gè)由深度求索(DeepSeek)公司開發(fā)的智能助手,擅長(zhǎng)通過思考來(lái)幫您解答復(fù)雜的數(shù)學(xué),代碼和邏輯推理等理工類問題。我會(huì)始終保持專業(yè)和誠(chéng)實(shí),如果您有任何問題,我會(huì)盡力為您提供幫助。

部分部署了 DeepSeek-R1 的平臺(tái)并沒有解析 <think> 標(biāo)簽,此時(shí)訪問message.reasoning_content 會(huì)報(bào)錯(cuò) AttributeError,這里手動(dòng)進(jìn)行處理:

import re
def parse_reasoner_response(completion):
"""
參數(shù):
- completion (object): API 返回的對(duì)象
返回:
- (reasoning_content, reply_content)
處理兩種平臺(tái)格式:
1. 有獨(dú)立 reasoning_content 字段的平臺(tái):DeepSeek 官方,硅基流動(dòng),百度智能云...
2. 可能需要從 content 解析 <think> 標(biāo)簽的平臺(tái):阿里云百煉(偶爾會(huì)沒有 reasoning_content)...
"""
message = completion.choices[0].message
# 嘗試直接獲取 reasoning_content 字段
reasoning = getattr(message, 'reasoning_content', None)
# 有 reasoning_content 時(shí)直接獲取最終回復(fù)
if reasoning:
final_content = getattr(message, 'content', '')
else:
# 如果沒有,則嘗試從 content 解析
content = getattr(message, 'content', '')
# 使用非貪婪模式匹配 <think> 標(biāo)簽
reasoning_match = re.search(
r'<think>(.*?)</think>', 
content, 
re.DOTALL # 允許跨行匹配
)
if reasoning_match:
reasoning = reasoning_match.group(1).strip()
# 從原始內(nèi)容移除推理部分
final_content = re.sub(
r'<think>.*?</think>', 
'', 
content, 
flags=re.DOTALL
).strip()
else:
reasoning = ''
final_content = content
return reasoning, final_content
reasoning_content, content = parse_reasoner_response(completion)
print(f"===== 模型推理過程 =====\n{reasoning_content}")
print(f"\n===== 最終回復(fù) =====\n{content}")

2、獲取用量信息(usage)

def print_reasoner_usage(completion):
stats = completion.usage
hit = stats.prompt_cache_hit_tokens
miss = stats.prompt_cache_miss_tokens
print(f"===== TOKEN 消耗明細(xì) =====")
print(f"輸入: {stats.prompt_tokens} tokens [緩存命中: {hit} | 未命中: {miss}]")
print(f"輸出: {stats.completion_tokens} tokens")
# 推理模型的token分解
if details := stats.completion_tokens_details:
reasoning = details['reasoning_tokens']
final = stats.completion_tokens - reasoning
print(f"├─ 推理過程: {reasoning} tokens")
print(f"└─ 最終回答: {final} tokens")
print(f"總消耗: {stats.total_tokens} tokens")
# 按 DeepSeek 定價(jià)計(jì)算成本(單位:元)
# - 輸入Token: 4元/百萬(wàn)Tokens(未命中緩存 1元/百萬(wàn)Tokens)
# - 輸出Token: 16元/百萬(wàn)Tokens
# 官方價(jià)格文檔:https://api-docs.deepseek.com/zh-cn/quick_start/pricing/
input_cost = (hit * 1 + miss * 4) / 1_000_000
output_cost = stats.completion_tokens * 16 / 1_000_000
total_cost = input_cost + output_cost
print(f"\n===== 成本明細(xì) =====")
print(f"輸入成本: ¥{input_cost:.4f} 元")
print(f"輸出成本: ¥{output_cost:.4f} 元")
print(f"預(yù)估總成本: ¥{total_cost:.4f} 元")
print_reasoner_usage(completion)

輸出:

===== TOKEN 消耗明細(xì) =====
輸入: 13 tokens [緩存命中: 0 | 未命中: 13]
輸出: 248 tokens
├─ 推理過程: 187 tokens
└─ 最終回答: 61 tokens
總消耗: 261 tokens
===== 成本明細(xì) =====
輸入成本: ¥0.0001 元
輸出成本: ¥0.0040 元
預(yù)估總成本: ¥0.0040 元
[!important]

非 DeepSeek 官方的部分平臺(tái)(但百度智能云存在)不存在一些特殊字段(比如reasoning_tokens),一個(gè)更兼容的版本:

def print_reasoner_usage(completion, input_cost=4.0, output_cost=16.0, cache_hit_cost=1.0):
"""
參數(shù):
- input_cost: 輸入價(jià)格(元/百萬(wàn) Tokens)
- output_cost: 輸出價(jià)格(元/百萬(wàn) Tokens)
- cache_hit_cost: 緩存命中價(jià)格(當(dāng)平臺(tái)不支持時(shí)自動(dòng)退化到全價(jià)模式)
按 DeepSeek 推理模型定價(jià)設(shè)定默認(rèn)成本(單位:元):
- 輸入: 4元/百萬(wàn) Tokens(緩存命中 1元/百萬(wàn) Tokens)
- 輸出: 16元/百萬(wàn) Tokens
官方價(jià)格文檔:https://api-docs.deepseek.com/zh-cn/quick_start/pricing/
"""
stats = completion.usage
# 嘗試獲取字段(兼容其他平臺(tái))
hit = getattr(stats, 'prompt_cache_hit_tokens', 0)
miss = getattr(stats, 'prompt_cache_miss_tokens', 
stats.prompt_tokens - hit if hasattr(stats, 'prompt_tokens') else 0)
print(f"===== TOKEN 消耗明細(xì) =====")
# 僅在存在緩存機(jī)制時(shí)顯示細(xì)節(jié)
if hit + miss > 0:
print(f"輸入: {stats.prompt_tokens} tokens [緩存命中: {hit} | 未命中: {miss}]")
else:
print(f"輸入: {stats.prompt_tokens} tokens")
print(f"輸出: {stats.completion_tokens} tokens")
# 嘗試獲取推理過程詳情
details = getattr(stats, 'completion_tokens_details', None)
reasoning = 0
if details:
if not isinstance(details, dict):
details = getattr(details, 'dict', lambda: {})()
# 嘗試獲取 reasoning_tokens
reasoning = details.get('reasoning_tokens', 0)
# 僅在存在推理tokens數(shù)量字段時(shí)處理
if reasoning > 0:
final = stats.completion_tokens - reasoning
print(f"├─ 推理過程: {reasoning} tokens")
print(f"└─ 最終回答: {final} tokens")
print(f"總消耗: {stats.total_tokens} tokens")
# 動(dòng)態(tài)成本計(jì)算
input_cost_total = (hit * cache_hit_cost + miss * input_cost) / 1_000_000
output_cost_total = stats.completion_tokens * output_cost / 1_000_000
total_cost = input_cost_total + output_cost_total
print(f"\n===== 成本明細(xì) =====")
print(f"輸入成本: ¥{input_cost_total:.4f} 元")
print(f"輸出成本: ¥{output_cost_total:.4f} 元")
print(f"預(yù)估總成本: ¥{total_cost:.4f} 元")
print_reasoner_usage(completion)

補(bǔ)充幾個(gè) DeepSeek API 字段的官方說明:

  • message.reasoning_content:僅適用于 deepseek-reasoner 模型。內(nèi)容為 assistant 消息中在最終答案之前的推理內(nèi)容;
  • usage.prompt_cache_hit_tokens:用戶 prompt 中,命中上下文緩存的 token 數(shù);
  • usage.prompt_cache_miss_tokens:用戶 prompt 中,未命中上下文緩存的 token 數(shù)。

注意,字段 usage.prompt_cache_hit_tokens 和 usage.prompt_cache_miss_tokens 僅存在于 DeepSeek API,故代碼部分做了特殊處理。

  • 廣告合作

  • QQ群號(hào):4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請(qǐng)注明出處“站長(zhǎng)百科”和原文地址。