通义千问与 DeepSeek 实践之旅

引言

在当今的人工智能时代,大语言模型展现出了令人惊叹的能力。通义千问和 DeepSeek 作为两款备受关注

的大模型,为开发者提供了丰富的 API 接口,使我们能够将其强大的语言处理能力集成到自己的应用程序

中。本文将详细介绍如何注册账号、获取 API 密钥,以及使用requests库调用它们的 API 实现简单问答功

能。

一、注册账号与获取 API 密钥

(一)通义千问

注册账号:访问阿里云官网(https://www.aliyun.com/ ),按照注册流程填写必要信息,完成账号创

建。这一步如同打开进入通义千问世界的大门钥匙。

获取 API 密钥:成功登录账号后,在通义千问相关产品页面仔细查找获取 API 访问权限及密钥的入口。不

同的使用场景和权限获取方式可能存在差异,务必参考通义千问官方文档进行操作。密钥就像是通行证,

确保我们能够合法调用 API 服务。

(二)DeepSeek

注册账号:访问 DeepSeek 官网(请通过官方渠道确认具体网址),按照页面引导完成注册流程,创建属

于自己的账号。这是与 DeepSeek 建立连接的第一步。

获取 API 密钥:注册成功后,在用户设置或 API 相关设置区域,依据官方文档指引,查找并获取 API 密

钥。此密钥将是我们后续调用 API 的关键凭证。

二、API 调用流程详解

(一)通义千问

请求地址:通义千问的 API 请求地址与阿里云的服务架构紧密相关,具体地址需参考官方 API 文档。通常

它类似https://[特定域名]/v[版本号]/[具体接口路径]的形式,不同的 API 功能对应不同的请求地址,犹如

不同的目的地需要不同的路径前往。

请求参数:以文本生成场景为例,常见参数有message,用于输入期望模型基于其生成内容的文本提示。

例如:

注:messages中的参数在官方文档中有描述,后面我们使用agent时会使用到

from openai import OpenAI

try:
    client = OpenAI(
        # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为: api_key="sk-xxx",
        api_key="你得apikey",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )

    completion = client.chat.completions.create(
        model="qwen-plus",  # 模型列表: https://help.aliyun.com/model-studio/getting-started/models
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            {'role': 'user', 'content': '你是谁?'}  # messages中的参数在官方文档中有描述,后面我们使用agent时会使用到
        ]
    )
    print(completion.choices[0].message.content)
except Exception as e:
    print(f"错误信息:{e}")
    print("请参考文档:https://help.aliyun.com/model-studio/developer-reference/error-code")

这些参数就像给模型下达的指令,告诉它我们想要什么样的输出。

  1. 响应解析:通义千问的响应一般以 JSON 格式呈现。成功调用后,响应数据会包含生成的文本内容等关

键信息。我们需要从响应中提取相关字段,获取所需的生成结果。例如:

{
  "model": "qwen-plus",
  "id": "chatcmpl-3db7c447-fc69-9aa7-9e8e-93e9400c76e9",
  "choices": [
    {
      "message": {
        "content": "你好!我是通义千问(Qwen),阿里巴巴集团旗下的超大规模语言模型。我能够回答问题、创作文字,比如写故事、写公文、写邮件、写剧本、逻辑推理、编程等等,还能表达观点,玩游戏等。如果你有任何问题或需要帮助,欢迎随时告诉我!😊",
        "role": "assistant"
      },
      "index": 0,
      "finish_reason": "stop"
    }
  ],
  "created": 1772528047,
  "object": "chat.completion",
  "usage": {
    "total_tokens": 88,
    "completion_tokens": 66,
    "prompt_tokens": 22,
    "prompt_tokens_details": {
      "cached_tokens": 0
    }
  }
}

这就像是从一个装满信息的包裹中,准确找到我们需要的那部分内容。

(二)DeepSeek

请求地址:同样要依据 DeepSeek 官方提供的 API 文档来确定请求地址,一般是特定的域名和接口路径组

合,形式类似https://api.deepseek.com/v[版本号]/[具体功能路径]。这是我们与 DeepSeek 模型进行通

信的 “地址”。

请求参数:参数设置因不同的 API 功能而异。比如对于对话功能,可能有query参数传入用户的问题,还

可能有context参数用于提供对话上下文信息等。示例如下:

from openai import OpenAI
client = OpenAI(
    api_key="你的apikey",
    base_url="https://api.deepseek.com")

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "你是谁"},    # messages中的参数在官方文档中有描述,后面我们使用agent时会使用到
    ],
    stream=False
)

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

这些参数帮助模型更好地理解我们的问题,从而给出更精准的回答。3. 响应解析:响应也是以 JSON 格式

返回。响应数据中会包含模型针对请求生成的回复内容等信息。例如:

{
  "id": "3118f625-f208-4510-a746-b7aafb9e11f4",
  "object": "chat.completion",
  "created": 1772528410,
  "model": "deepseek-chat",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "你好!我是DeepSeek,由深度求索公司创造的AI助手。😊\n\n我是一个纯文本模型,虽然不支持多模态识别功能,但我有文件上传功能,可以帮你处理图像、txt、pdf、ppt、word、excel等文件,并从中读取文字信息进行分析处理。我完全免费使用,拥有128K的上下文长度,还支持联网搜索功能(需要你在Web/App中手动点开联网搜索按键)。\n\n你可以通过官方应用商店下载我的App来使用。我很乐意帮助你解答问题、处理文档、进行对话交流等等!\n\n有什么我可以帮你的吗?无论是学习、工作还是日常问题,我都很愿意为你提供帮助!✨"
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 141,
    "total_tokens": 151,
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "prompt_cache_hit_tokens": 0,
    "prompt_cache_miss_tokens": 10
  },
  "system_fingerprint": "fp_eaab8d114b_prod0820_fp8_kvcache"
}

我们要做的就是从这个 JSON 响应中提取出answer字段,得到模型给出的答案。

三、使用 requests 库实现简单问答功能

(一)通义千问 API 调用代码实现

def call_qwen_api(api_key, prompt, model="qwen-plus"):
  # requests调用时url后面需要增加chat/completions
    url = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}"
    }
    data = {
        "model": model,
        "messages": [
            {"role": "system", "content": "You are a helpful assistant"},
            {"role": "user", "content": prompt},
        ],
        "stream": False
    }
    response = requests.post(url, headers=headers, json=data)
    return response.json()

if __name__ == "__main__":
    QWEN_API_KEY = "你的apikey"
    prompt = "你是谁"
    response = call_qwen_api(QWEN_API_KEY, prompt)
    print(response["choices"][0]["message"]["content"])

在运行此代码前,务必将"通义千问实际请求地址"替换为通义千问真实的 API 请求地址,将"你的通义千问

API密钥"替换为自己获取到的 API 密钥。这样,我们就能通过代码与通义千问进行交互,获取它的回答。

(二)DeepSeek API 调用代码实现

def call_deepseek_api(api_key,prompt,model="deepseek-chat"):
  # requests调用时url后面需要增加/v1/chat/completions
    url = "https://api.deepseek.com/v1/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}"
    }
    data = {
        "model": model,
        "messages": [
            {"role": "system", "content": "You are a helpful assistant"},
            {"role": "user", "content": prompt},
        ],
        "stream": False
    }
    response = requests.post(url, headers=headers, json=data)
    return response.json()

if __name__ == "__main__":
    DEEPSEEK_API_KEY = "你的API_KEY"
    prompt = "你是谁"
    response = call_deepseek_api(DEEPSEEK_API_KEY,prompt)
    print(response["choices"][0]["message"]["content"])

同样,运行前要把"DeepSeek实际请求地址"换成 DeepSeek 真实的 API 请求地址,把"你的DeepSeek

API密钥"替换为实际获取的密钥。通过这段代码,我们能够借助 DeepSeek 的能力,实现简单的问答功

能。

四、总结

通过今天的学习,我们了解了通义千问和 DeepSeek 大模型 API 的注册、调用流程,并使用requests库实

现了简单的问答功能。希望这篇博客能为你在探索大模型 API 的道路上提供一些帮助。在实际应用中,你

可以根据自己的需求进一步优化参数设置,挖掘模型更多的潜力。如果你在实践过程中遇到任何问题,欢

迎在评论区留言交流。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐