AI大模型基本原理及阿里百炼API调用

作者头像
袋鼠 本文作者

2025-5-7 阅读 584 约 6分钟读完

评论0

AIGC的发展历程

从GPT1到GPT4

  1. GPT-1(2018年)
    基于12层Transformer解码器架构,参数量1.17亿,首次采用无监督预训练+微调范式,在文本生成任务中展现基础语言理解能力。
  2. GPT-2(2019年)
    参数量增至15亿,训练数据达40GB,证明模型规模扩大可显著提升零样本任务表现,生成文本连贯性增强。
  3. GPT-3(2020年)
    参数量突破1750亿,引入Few-shot学习能力,支持代码生成等复杂任务,但存在逻辑错误和偏见问题。
  4. GPT-4(2023年)
    多模态融合架构,优化推理能力和安全伦理机制,在专业考试和创意写作中达到人类水平。

什么是AI

人工智能(AI)指通过算法模拟人类认知功能的系统,涵盖机器学习、自然语言处理、计算机视觉等领域。其核心目标是使机器具备感知、推理、学习和决策能力。

分析式与生成式AI的区别

类型 分析式AI 生成式AI
原理 基于判别模型分析数据规律 基于生成模型创造新内容
应用 金融风控、医疗诊断 文本/图像生成、创意设计
案例 SVM分类、推荐系统 GPT文本生成、DALL·E图像合成

GPT是如何训练出来的

  1. 预训练:通过海量文本学习语言规律,采用自注意力机制捕捉长距离依赖。
  2. 微调:在标注数据上调整模型的参数以适应具体任务。
  3. RLHF:通过人类反馈强化学习优化输出质量,如ChatGPT的对话对齐。

AIGC的表现与优势

  1. 效率提升:快速生成营销文案或设计草图,比人工快100倍。
  2. 成本优化:电商产品描述生成成本降低90%。
  3. 创新赋能:辅助科研人员生成蛋白质结构假设,加速药物研发。

AIGC的通用能力应用

  1. 医疗:合成匿名病例数据辅助罕见病研究。
  2. 教育:为每位学生生成个性化习题。
  3. 保险:车险理赔中AI定损将处理时间从3天缩短至25分钟。
  4. 文案:快速生成新媒体内容,提高曝光度。

大模型API调用

全球AI发展现状

  1. 技术发展前沿:2025年全球AI持续突破,生成式AI和多模态融合和成为核心发展方向(多模态生成技术实现文本到3D模型的跨越),行业定制化生成模型成为新趋势。
  2. 全球竞争格局:欧洲4月推出《AI大陆行动计划》,美国7月发布《Winning this AI Race》计划,中国8月发布《关于深入实施“人工智能+”行动的意见》文件。
  3. 行业应用深化:医疗健康、国家电网、海尔工厂、钢铁生产、农业创新都在利用AI提高效率。
  4. 未来发展趋势:Agentic AI的崛起,从被动响应转向自主执行复杂任务;AI将更深度融入经济社会各领域,推动生产力变革和产业升级。

API调用项目实操

  1. 情感分析-Qwen(掌握DashScope调⽤⼤模型)

    • 获取API
      访问阿里云百炼平台:https://bailian.console.aliyun.com/ ,完成注册登录
      点击右上角齿轮,点击API-Key,点击创建API-KEY(建议添加描述,区分用途),复制API Key 进入设置
      创建API
      复制API
    • 配置环境
      以Ubuntu24.04为例(系统已默认安装python3):
      # 1. 安装python虚拟环境组件
      apt install python3-venv
      # 2. 创建名为test虚拟环境,删除直接rm -rf test即可
      python3 -m venv test
      # 3. 激活虚拟环境,后续安装的依赖包都在虚拟环境中不影响全局python,运行deactivate退出虚拟环境
      source test/bin/activate
      # 4. 在虚拟环境中安装依赖包,dashscope用于AI模型开发的库,python-dotenv用于从.env文件中加载环境变量到应用程序中
      pip install dashscope python-dotenv
    • 构建项目
      # 1. 创建项目目录及文件
      mkdir sentiment && cd sentiment/ && touch .env requirements.txt config.py main.py
      # 2. 在.env文件中添加变量为从阿里云百炼获取的API Key,降低API外泄风险
      echo "DASHSCOPE_API_KEY=您的API" > .env
      # 3. 在requirements.txt文件中添加项目依赖,也可运行pip install -r requirements.txt安装依赖包
      cat << EOF | tee requirements.txt
      dashscope>=1.23.0
      python-dotenv>=1.0.0
      EOF
      # 4. 在config.py文件中引用调用的模型名称、链接及密钥,可以尝试更换模型版本(qwen-turbo/qwen-max)
      cat << EOF | tee config.py
      import os
      from dotenv import load_dotenv
      load_dotenv()
      class Config:
      API_KEY =os.getenv('DASHSCOPE_API_KEY')
      MODEL_NAME = 'qwen-plus-2025-09-11'
      BASE_URL = 'https://dashscope.aliyuncs.com/compatible-mode/v1'
      EOF
      # 5. 在main.py主程序中添加执行代码,注意代码对齐,有严格的代码规范
      cat << EOF | tee main.py
      from http import HTTPStatus
      import dashscope
      from config import Config
      class SentimentAgent:
      def __init__(self):
      dashscope.api_key = Config.API_KEY
      def analyze_sentiment(self, text):
      """情感分析核心方法"""
      messages = [
          {
              "role": "system",
              "content": "你是一个专业的情感分析模型。请分析以下文本的情感倾向,仅返回'正面'、'负面'或'中性'"
          },
          {
              "role": "user",
              "content": text
          }
      ]
      response = dashscope.Generation.call(
          model=Config.MODEL_NAME,
          messages=messages,
          result_format='message'
      )
      if response.status_code == HTTPStatus.OK:
          return response.output.choices[0].message.content
      else:
          raise Exception(f"API调用失败: {response.message}")
      if __name__ == '__main__':
      main = SentimentAgent()
      while True:
      text = input("请输入待分析文本(输入q退出): ")
      if text.lower() == 'q':
          break
      result = main.analyze_sentiment(text)
      print(f"情感分析结果: {result}")
      EOF
      # 6. 运行主程序测试效果
      python main.py
    • 进阶优化
      # 1. 在main.py文件中增加修改模型默认参数,测试输出结果
      response = dashscope.Generation.call(
      model=Config.MODEL_NAME,
      messages=messages,
      result_format='message',
      temperature=0.3,  # 温度参数,不同模型默认值不同,控制输出随机性(0-1),越大越随机,越小则缺乏创意
      top_p=0.8         # 核采样参数,越高越多样,越低越集中
      )
      # 2. 在main.py文件中扩展情感分类,修改系统提示词,测试输出结果
      "content": "……请分析以下文本的情感倾向,返回: 非常正面/正面/中性/负面/非常负面"
      # 3. 在main.py文件中,系统提示词再增加一行情感强度评分并返回指定的格式,测试输出结果
      "content": "返回JSON格式: {'情感':'正面','评分':0.8}"
    • 案列总结
      注意规范的安全的管理API Key,初步理解prompt工程设计,了解可扩展的架构设计
  2. 查询天⽓-Qwen(了解Function Call)

    • 获取API
      除了要获取阿里百炼模型的API外还需要一个查询天气的API(以和风天气为例)
      访问和风天气开发者平台:https://dev.qweather.com/ ,完成注册登录
      在本地执行以下命令生成公钥和私钥(以Ubuntu为例):
      openssl genpkey -algorithm ED25519 -out ed25519-private.pem \
      && openssl pkey -pubout -in ed25519-private.pem > ed25519-public.pem
      cat ed25519-public.pem

      在和风天气控制台点击项目管理,创建项目,创建凭据,复制ed25519-public.pem的内容至上传公钥中,复制项目ID和凭据ID

      创建项目
      创建JWT
      获取ID

      进入test虚拟环境,安装依赖,生成12小时有效的token

      # 1. 进入test虚拟环境
      source test/bin/activate
      # 2. 安装依赖包
      pip3 install PyJWT
      # 3. 创建生成JWT_Token的文件,private_key为生成的ed25519-private.pem内容,sub为项目ID,kid为凭据ID
      cat << EOF | tee make_jwt_token.py
      import sys
      import time
      import jwt
      private_key = """ed25519-private.pem的全部内容"""
      payload = {
      'iat': int(time.time()) - 30,
      'exp': int(time.time()) + 43200,
      'sub': '项目ID'
      }
      headers = {
      'kid': '凭据ID'
      }
      encoded_jwt = jwt.encode(payload, private_key, algorithm='EdDSA', headers = headers)
      print(f"JWT:  {encoded_jwt}")
      EOF

      复制token,到和风天气控制台的帮助与支持,点击JWT验证确保生成的token有效

      验证token
    • 搭建环境
      # 还是在test虚拟环境中安装依赖包,注意当前所在目录
      source test/bin/activate
      pip install dashscope python-dotenv requests
    • 构建项目
      # 1. 创建项目目录及文件
      mkdir weather && cd weather/ && touch .env requirements.txt config.py weather_api.py main.py
      # 2. 在.env文件中添加变量并分别设置为阿里百炼和和风天气的JWT验证
      cat << EOF | tee .env
      API_HOST=和风天气API Host
      QWEATHER_JWT=和风天气的JWT token,例如:Bearer eyJhbGci...
      DASHSCOPE_API_KEY=阿里百炼模型APIkey
      EOF
      # 3. 在requirements.txt文件中添加依赖包,requests为请求依赖包
      cat << EOF | tee requirements.txt
      dashscope>=1.23.0
      python-dotenv>=1.0.0
      requests>=2.31.0
      EOF
      # 4. 在config.py文件中获取模型名称以及API,模型可修改为文本生成或全模态
      cat << EOF | tee config.py
      import os
      from dotenv import load_dotenv
      load_dotenv()
      class Config:
      QWEATHER_HOST = os.getenv('API_HOST')
      QWEATHER_JWT = os.getenv('QWEATHER_JWT')
      DASHSCOPE_API_KEY = os.getenv('DASHSCOPE_API_KEY')
      MODEL_NAME = 'qwen-plus-2025-09-11'
      EOF
      # 5. 在weather_api.py文件中封装API
      cat << EOF | tee weather_api.py
      import gzip
      import json
      import requests
      from config import Config
      class QWeatherAPI:
      @staticmethod
      def get_weather(endpoint, params=None):
      """通用调用API"""
      url = f"https://{Config.QWEATHER_HOST}{endpoint}"
      headers = {
          "Authorization": Config.QWEATHER_JWT,
          "Accept-Encoding": "gzip"
      }
      try:
          response = requests.get(url, headers=headers, params=params)
          response.raise_for_status()
          return response.json()
      except requests.exceptions.RequestException as e:
          print(f"API调用失败: {str(e)}")
          return None
      @staticmethod
      def get_city_id(city_name):
      """调用Geo API获取城市id"""
      return QWeatherAPI.get_weather('/geo/v2/city/lookup', {'location': city_name})
      @staticmethod
      def get_current_weather(city_name):
      """获取实时天气"""
      geo_data = QWeatherAPI.get_city_id(city_name)
      if not geo_data or not geo_data.get("location"):
          return None
      location_id = geo_data["location"][0]["id"]
      return QWeatherAPI.get_weather('/v7/weather/now', {'location': location_id})
      EOF
      # 6. 在main.py文件中添加如下代码
      cat << EOF | tee main.py
      import dashscope
      from http import HTTPStatus
      from config import Config
      from weather_api import QWeatherAPI
      class WeatherAgent:
      def __init__(self):
      dashscope.api_key = Config.DASHSCOPE_API_KEY
      def get_weather_function(self):
      """定义天气查询的Function Call规范"""
      return {
          "name": "get_current_weather",
          "description": "获取指定城市的当前天气情况",
          "parameters": {
              "type": "object",
              "properties": {
                  "city": {
                      "type": "string",
                      "description": "城市名称,如'北京'"
                  }
              },
              "required": ["city"]
          }
      }
      def run_query(self, user_input):
      """处理用户查询"""
      response = dashscope.Generation.call(
          model=Config.MODEL_NAME,
          messages=[{"role": "user", "content": user_input}],
          functions=[self.get_weather_function()],
          result_format='message'
      )
      if response.status_code == HTTPStatus.OK:
          # 检查是否需要调用函数
          if "function_call" in response.output.choices[0].message:
              func_call = response.output.choices[0].message["function_call"]
              if func_call["name"] == "get_current_weather":
                  # 解析参数并调用天气API
                  city = eval(func_call["arguments"])["city"]
                  weather_data = QWeatherAPI.get_current_weather(city)
                  # 将结果返回给模型生成最终回复
                  second_response = dashscope.Generation.call(
                      model=Config.MODEL_NAME,
                      messages=[
                          {"role": "user", "content": user_input},
                          {"role": "function", "name": func_call["name"], "content": str(weather_data)}
                      ]
                  )
                  return second_response.output.choices[0].message["content"]
          else:
              return response.output.choices[0].message["content"]
      else:
          raise Exception(f"API调用失败: {response.message}")
      if __name__ == '__main__':
      main = WeatherAgent()
      while True:
      query = input("请输入您的天气查询(输入q退出): ")
      if query.lower() == 'q':
          break
      result = main.run_query(query)
      print(f"查询结果: {result}")
      EOF
    • 进阶建议
      添加更多功能的函数,例如天气预报、空气质量等
      实现多轮对话记忆功能
      添加用户位置自动识别
    • 案列总结
      理解模型如何决定调用函数以及传递参数
  3. 表格提取-Qwen(了解多模态⼤模型)

  4. 运维事件处置-Qwen

文章目录
      上一篇 FRP内网穿透之1panel篇 下一篇 没有了
      评论
      评论已关闭