搜索本产品文档关键词
Python SDK调用对话Chat
所有文档
menu
没有找到结果,请重新输入

千帆大模型服务与开发平台ModelBuilder

Python SDK调用对话Chat

安装与升级

千帆千帆v2版本推理接口兼容openai、deepseek接口规范,因此可以使用OpenAI SDK请求千帆平台v2版推理接口,其中包含DeepSeek-R1模型。 请确保已安装最新版本的 OpenAI SDK。可以通过以下命令进行升级:

pip3 install -U openai

调用示例

下面的代码以 Python 语言为例,展示了如何访问思维链和最终回答,以及如何在多轮对话中进行上下文拼接。

非流式请求

  • 请求示例
from openai import OpenAI

client = OpenAI(
    # 替换下列示例中参数,将your_APIKey替换为真实值,如何获取API Key请查看https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Um2wxbaps#步骤二-获取api-key
    api_key="your_APIKey",
    # 千帆ModelBuilder平台地址
    base_url="https://qianfan.baidubce.com/v2", 
)

messages = [{"role": "user", "content": "20和11,哪个数大?"}] # 对话messages信息
response = client.chat.completions.create(
    model="deepseek-r1-distill-qwen-32b",#模型对应的model值,请查看支持的模型列表:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/wm7ltcvgc
    messages=messages # messages信息
)

print(response.choices[0].message)
  • 返回示例
\n\n要比较 \\(20\\) 和 \\(11\\) 的大小,可以按照以下步骤进行:\n\n1. **直接比较数值:**\n   - \\(20\\) 是一个两位数,表示二十。\n   - \\(11\\) 也是一个两位数,表示十一。\n   \n2. **数值大小的判断:**\n   - 在整数比较中,位数更多的数通常更大,但在这里两者都是两位数,需要比较每一位上的数字。\n   - 比较十位数:\\(2\\)(在20中)与 \\(1\\)(在11中)。显然,\\(2 > 1\\)。\n   \n3. **得出结论:**\n   - 因此,\\(20\\) 大于 \\(11\\)。\n\n最终答案是:\n\n\\[\n\\boxed{20 \\text{ 比 } 11 \\text{ 大}}\n\\]', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None, reasoning_content='首先,比较两个数的数值大小。\n\n20和11都是整数。\n\n通过直接比较,可以发现20大于11。\n\n因此,20是较大的数。\n

流式请求

  • 请求示例
from openai import OpenAI

client = OpenAI(
    # 替换下列示例中参数,将your_APIKey替换为真实值,如何获取API Key请查看https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Um2wxbaps#步骤二-获取api-key
    api_key="your_APIKey"
    # 千帆ModelBuilder平台地址
    base_url="https://qianfan.baidubce.com/v2",  
)

# Round 1
messages = [{"role": "user", "content": "20和11,哪个数大?"}] # 对话messages信息
response = client.chat.completions.create(
    model="deepseek-r1-distill-qwen-32b", #模型对应的model值,请查看支持的模型列表:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/wm7ltcvgc
    messages=messages,
    stream=True
)

reasoning_content = ""
content = ""

for chunk in response:
    if chunk.choices[0].delta.reasoning_content:
        print(chunk.choices[0].delta.reasoning_content, end="")
        reasoning_content += chunk.choices[0].delta.reasoning_content
    else:
        print(chunk.choices[0].delta.content, end="")
        content += chunk.choices[0].delta.content

# Round 2
messages.append({"role": "assistant", "content": content})
messages.append({'role': 'user', 'content': "'strawberry'单词包含几个r?"})
response = client.chat.completions.create(
    model="deepseek-r1-distill-qwen-32b",
    messages=messages,
    stream=True
)

for chunk in response:
    if chunk.choices[0].delta.reasoning_content:
        print(chunk.choices[0].delta.reasoning_content, end="")
        reasoning_content += chunk.choices[0].delta.reasoning_content
    else:
        print(chunk.choices[0].delta.content, end="")
        content += chunk.choices[0].delta.content
  • 返回示例
首先,我需要比较20和11这两个数的大小。

20是一个两位数,十位上的数字是2,个位上的数字是0,所以它的实际值是二十。

11也是一个两位数,十位上的数字是1,个位上的数字是1,所以它的实际值是十一。

接下来,我比较这两个数的十位数字。20的十位数字是2,而11的十位数字是1。因为2大于1,所以在十位数上20更大。

因此,20比11大。


要比较数字 **20** 和 **11** 的大小,可以按照以下步骤进行:

1. **数字位数分析**:
   - **20** 是一个两位数,十位上的数字是 **2**,个位上的数字是 **0**。因此,20 的实际值是二十。
   - **11** 也是一个两位数,十位上的数字是 **1**,个位上的数字是 **1**。因此,11 的实际值是十一。

2. **比较十位数字**:
   - 比较十位数字时,20 的十位数字是 **2**,而 11 的十位数字是 **1**。因为 **2 > 1**,所以在十位数上 20 更大。

3. **得出结论**:
   - 由于 20 的十位数字大于 11 的十位数字,因此 **20 > 11**。

最终答案是:

\[
\boxed{20 > 11}
\]今天,我遇到了一个有趣的问题:“'strawberry'单词包含几个r?”。一开始,我觉得这个问题挺简单的,但仔细想想,还是需要仔细分析一下。首先,我需要理解什么是“r”,以及它在单词中的位置和出现次数。

首先,我知道“strawberry”是一个英文单词,意思是“草莓”。它的拼写是s-t-r-a-w-b-e-r-r-y。现在,我要数一数其中有多少个“r”。为了确保自己不会漏掉,我可以把单词拆开来看,逐个字母检查。

让我把单词写出来:s, t, r, a, w, b, e, r, r, y。现在,我来数一数“r”出现了几次。第一个字母是s,不是r。第二个是t,也不是。第三个是r,这算第一个r。接下来是a、w,都不是r。然后是b,接着是e,都不算。接下来是r,这是第二个r。再来一个r,这是第三个r。最后一个是y,不是r。

所以,按照这个拆分,我找到了三个r。但是,我有点疑惑,因为有时候在发音中,可能会有连音或者发音上的变化,会不会影响r的出现次数呢?为了确认,我决定再仔细检查一遍。

让我重新写下单词,并标出每个字母的位置:1-s, 2-t, 3-r, 4-a, 5-w, 6-b, 7-e, 8-r, 9-r, 10-y。这样看起来,r出现在第3、第8和第9位,总共有三个r。

不过,我又想到,有些时候,单词在书写时可能会有变化,比如不同的拼写习惯或者方言中的拼写差异,会不会影响r的数量呢?为了进一步确认,我查了一下“strawberry”的标准拼写,确认它的拼写确实是s-t-r-a-w-b-e-r-r-y,有三个r。

因此,我的结论是,“strawberry”这个单词中包含三个r。虽然一开始觉得简单,但通过这样的详细分析,我更加确信自己的答案了。

自定义安全等级和appid

  • 请求示例
from openai import OpenAI

client = OpenAI(
    # 替换下列示例中参数,将your_APIKey替换为真实值,如何获取API Key请查看https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Um2wxbaps#步骤二-获取api-key
    api_key="your_APIKey",  
    # 千帆ModelBuilder平台地址
    base_url="https://qianfan.baidubce.com/v2", 
    # 千帆ModelBuilder平台应用ID,如何获取请查看V2版本应用ID:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Fllg87pck#v2版本应用id
    default_headers={"appid": "app-xxxxxxxx"}
)

safety= {
    "input_level": "none"
    }

web_search={
    "enable":True,
    "enable_trace":True
}
extra_data={
    "safety":safety,
    "web_search":web_search
}

completion = client.chat.completions.create(
  #模型对应的model值,请查看支持的模型列表:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/wm7ltcvgc
  model="ernie-3.5-8k",
  # 对话messages信息
  messages=[
    {"role": "user", "content": "今天上海天气怎么样"}
  ],
  stream=True,
  extra_body=extra_data
)

for chunk in completion:
  if chunk.choices[0].delta.content is not None:
    print(chunk.choices[0].delta.content, end="")
  • 返回示例
今天上海的天气情况如下:

### 一、实时天气概况

* **天气现象**:多云。
* **温度**:当前温度为9℃,体感温度为7℃。
* **湿度**:相对湿度为84%。
* **风力**:西风2级。
* **紫外线指数**:1,属于紫外线最弱级别,外出时可轻微防护。

### 二、未来短时间天气预报(今天)

* **日间**:
        + 天气现象:中雨,降水概率为90%。
        + 风向风力:西北风3级。
        + 最高气温:11℃。
* **夜间**:
        + 天气现象:小雨,降水概率为80%。
        + 风向风力:西风3级。
        + 最低气温:7℃。

### 三、生活气象指数

* **钓鱼**:不太适宜。
* **穿衣**:建议穿大衣类衣物,因为天气较凉。
* **洗车**:不宜,因为近期有雨。
* **运动**:不适宜,可能受天气影响。
* **旅游**:一般,外出时需携带雨具以应对可能的降雨。

综上所述,今天上海天气以多云转中雨为主,夜间可能转为小雨,气温适中但略偏低,湿度较大,风力适中。建议市民外出时携带雨具并注意适当增添衣物以防感冒。%           
上一篇
OpenAI接口兼容介绍
下一篇
Java SDK调用对话Chat