站在AI风口的第一个AI程序:helloAI

49 阅读3分钟

前言

最近开始学习AI相关的东西,程序员嘛接触一门新的技术时总是会输出一个“Hello world”的入门项目。我的AI学习历程也不例外。

AI大语言模型如火如荼,便是借了ChatGPT的大风。之后国内更是出现了DeepSeek、豆包、元宝、千问等Chat型的AI大模型应用。

解释 chatGPT.png

于是,作为AI入门的第一个程序,就简单写个控制台调用大模型接口输出答案的简易代码。不求通达于大模型原理,只是暂且入个门。也算简单了解各种AI应用是怎么基于现有大模型进行功能开发的。

废话少说上代码

工欲善其事

  1. 选择使用的大模型,可以是千问,也可以直接接入DeepSeek大模型。这里以通义千问(内含DeepSeek)为🌰。

  2. 阿里百炼 注册并申请API_KEY

image.png

4.参考 接入文档 本地配置 API_KEY,并copy相关代码到自己的工程内。

Code

import os
# 如果这里报错,需要手动在控制台安装 openai SDK:pip install openai
from openai import OpenAI

# 1. 准备工作:初始化客户端
client = OpenAI(
    # 建议通过环境变量配置API Key,避免硬编码。
    api_key=os.environ["DASHSCOPE_API_KEY"],
    # API Key与地域强绑定,请确保base_url与API Key的地域一致。
    # AI大模型发生改变时,切记也一定要相应修改这里。比如阿里千问切到deepseek,需要切到deepseek域名
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

# 2. 发起流式请求
completion = client.chat.completions.create(
    # 模型名字,不可乱填!!!可参考各模型官网
    # model="qwen-plus",    # 阿里千问
    model="deepseek-v3.2",  # deepseek
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "iOS开发转型AI大模型应用开发该怎么学习?"}
    ],
    # 通过 extra_body 设置 enable_thinking 开启思考模式
    # extra_body={"enable_thinking": True},
    stream=True,
    stream_options={"include_usage": True}
)

# 3. 处理流式响应
# 用列表暂存响应片段,最后 join 比逐次 += 字符串更高效
content_parts = []
print("AI: ", end="", flush=True)

for chunk in completion:
    if chunk.choices:
        content = chunk.choices[0].delta.content or ""
        print(content, end="", flush=True)
        content_parts.append(content)
    elif chunk.usage:
        print("\n--- 请求用量 ---")
        print(f"输入 Tokens: {chunk.usage.prompt_tokens}")
        print(f"输出 Tokens: {chunk.usage.completion_tokens}")
        print(f"总计 Tokens: {chunk.usage.total_tokens}")

full_response = "".join(content_parts)
print(f"\n--- 完整回复 ---\n{full_response}")

我的理解

其实对于程序员很好理解,就是一个简单的API调用。和移动端的接口请求差不多。

  1. 使用API Key 创建本地客户端
  2. 使用客户端,结合提示词发起AI请求
  3. 客户端解析AI返回数据,呈现给用户。

意外发现

  1. python的 openai sdk定义了openAI接入的标准接口。市面上几乎所有大模型都对此做了兼容,比如阿里千问和DeepSeek(豆包也应该ok)。如此的好处是:

    • 切换不同的模型不需要修改太多代码,只需要修改几个关键处即可
    • 对于开发者可以说省不少事
  2. 阿里千问除了有兼容openai接口,也同样定义了自己独有的sdk接口:DashScope

    • 阿里云自研的API架构,采用面向MaaS(模型即服务)的深度设计。例如,其多模态接口直接区分文本生成(/text-generation/generation)和 multimodal 生成(/multimodal-generation/generation),而非强制统一到ChatCompletion格式

    • DashScope原生接口对通义系列模型(如千问VL、Qwen-Long)有深度优化,例如Qwen-Long支持1000万tokens超长上下文,且通过文件方式提交时可突破HTTP请求限制。OpenAI兼容模式对此类特性支持较弱。

    • 流式输出控制:OpenAI兼容模式通过stream布尔参数控制,而DashScope原生模式提供streamCall方法及incremental_output等细粒度参数

至此, helloAI程序就写完了。恭喜你已经迈进AI大模型开发大门一小步喽。

AI思维要求企业从万物互联角度重构战略,“算法、算力、数据”是互联网成长的核心动力。人口红利消失后,AI技术创新将成为新的增长引擎。

--------------------------------------------------- Robin