一. 简介

通义千问系列模型为阿里云研发的大语言模型。千问模型基于 Transformer 架构,在超大规模的预训练数据上进行训练得到。预训练数据类型多样,覆盖广泛,包括大量网络文本、专业书籍、代码等。千问大模型现在已经十分强大了,可以与GPT5.2掰掰手腕,国内的使用还是很推荐的。

Qwen1.5

Qwen1.5 是 Qwen 开源系列的下一个版本。与之前的版本相比,Qwen1.5 显著提升了聊天模型与人类偏好的一致性,改善了它们的多语言能力,并具备了强大的链接外部系统能力。DashScope 上提供 API 服务的是新版本 qwen 模型的 chat 版本,在 chat 能力上大幅提升,即便在英文的 MT-Bench 上,Qwen1.5-Chat 系列也取得了优秀的性能。

Qwen2

Qwen2 参数范围包括 0.5B 到 72B,包括 MOE 模型。Qwen2 在一系列针对语言理解、语言生成、多语言能力、编码、数学、推理等的基准测试中总体上超越了大多数开源模型,并表现出与专有模型的竞争力。Qwen2 增⼤了上下⽂⻓度⽀持,最⾼达到 128K tokens(Qwen2-72B-Instruct),能够处理大量输入


二. Qwen2-VL ModelScope

Qwen2-VL 可以处理任意图像分辨率,将它们映射到动态数量的视觉标记中,提供更接近人类的视觉处理体验

请添加图片描述

  • Qwen2-VL 模型特点

    • 读懂不同分辨率和不同长宽比的图片:Qwen2-VL 在 MathVista、DocVQA、RealWorldQA、MTVQA 等视觉理解基准测试中取得了全球领先的表现。
    • 理解 20 分钟以上的长视频:Qwen2-VL 可理解长视频,并将其用于基于视频的问答、对话和内容创作等应用中。
    • 能够操作手机和机器人的视觉智能体:借助复杂推理和决策的能力,Qwen2-VL 可集成到手机、机器人等设备,根据视觉环境和文字指令进行自动操作。
    • 多语言支持:为了服务全球用户,除英语和中文外,Qwen2-VL 现在还支持理解图像中的多语言文本,包括大多数欧洲语言、日语、韩语、阿拉伯语、越南语等。


三. langchain 调用阿里云 api

阿里云 api 可以免费试用,申请api key后即可使用,国内的大模型其实也不差,但是特点就是好用的都付费,哈哈哈哈 虽然我用的这个效果没有前沿的好,但是学习嘛,够用了。
  • 获取阿里云 API Key

  • 使用大模型实现简单的问答系统

    • 代码示例

      # tongyi_qna_system.py
      import os
      from langchain_community.chat_models import ChatTongyi
      from langchain_core.messages import HumanMessage, SystemMessage
      
      
      class SimpleTongyiQA:
      
          def __init__(self, api_key: str):
              """
              初始化问答系统
              api_key: 阿里云API密钥(格式:sk-xxxxxxxx)
              """
              self.api_key = api_key
      
              # 验证API密钥格式
              if not api_key.startswith('sk-'):
                  print("警告:API密钥格式可能不正确,应以'sk-'开头")
      
              # 初始化模型(使用qwen-turbo,成本较低)
              self.model = ChatTongyi(
                  model_name="qwen-turbo",  # 先用免费或低成本模型测试
                  dashscope_api_key=self.api_key,
                  temperature=0.7,
                  max_tokens=1000,
                  streaming=False
              )
              print("通义千问模型初始化成功")
              print(f"使用模型: qwen-turbo")
      
          def ask(self, question: str, system_prompt: str = None) -> str:
              """
              提问并获取回答
                  question: 用户问题
                  system_prompt: 系统提示词(可选)
              Returns:模型回答
              """
              # 构建消息
              messages = []
      
              if system_prompt:
                  messages.append(SystemMessage(content=system_prompt))
      
              messages.append(HumanMessage(content=question))
      
              try:
                  print(f"\n提问: {question}")
      
                  # 调用模型
                  response = self.model.invoke(messages)
                  print(f"\n回答:")
                  print("-" * 50)
                  print(response.content)
                  print("-" * 50)
                  return response.content
              except Exception as e:
                  error_msg = str(e)
                  print(f"\n请求失败:{error_msg}")
                  # 提供调试建议
                  self._provide_debug_suggestions(error_msg)
                  return None
      
          def _provide_debug_suggestions(self, error_msg: str):
              """提供调试建议"""
              if "InvalidApiKey" in error_msg or "401" in error_msg:
                  print("1. 检查API密钥是否正确")
                  print("2. 访问 https://dashscope.aliyun.com/ 查看API密钥")
                  print("3. 确保API密钥格式为: sk-xxxxxxxx")
              elif "余额不足" in error_msg or "InsufficientBalance" in error_msg:
                  print("1. 登录阿里云控制台充值")
                  print("2. 检查服务是否已开通")
              elif "未开通服务" in error_msg:
                  print("1. 访问阿里云控制台开通相应服务")
                  print("2. 可能需要实名认证")
      
      # ========== 使用示例 ==========
      def main():
          """主函数"""
          print("=" * 60)
          print("阿里云通义千问问答系统")
          print("=" * 60)
          # 获取API密钥
          api_key = input("请输入您的阿里云API密钥 (格式: sk-xxxxxxxx): ").strip()
          if not api_key:
              print("未提供API密钥,程序退出")
              return
      
          # 创建问答系统实例
          try:
              qa_system = SimpleTongyiQA(api_key=api_key)
          except Exception as e:
              print(f"初始化失败: {e}")
              return
          print("\n" + "=" * 60)
          print("开始问答,输入 'quit' 或 'exit' 退出")
          print("=" * 60)
      
          # 交互式问答循环
          while True:
              try:
                  # 获取用户输入
                  user_input = input("\n请输入您的问题: ").strip()
                  # 退出条件
                  if user_input.lower() in ['quit', 'exit', '退出', 'q']:
                      print("\n感谢使用,再见!")
                      break
                  if not user_input:
                      print("输入不能为空,请重新输入")
                      continue
                  # 提问并获取回答
                  qa_system.ask(user_input)
              except KeyboardInterrupt:
                  print("\n\n检测到中断,程序退出")
                  break
              except Exception as e:
                  print(f"\n发生错误: {e}")
      
      if __name__ == '__main__':
          main()
      
      • 运行示例

        • 大模型给出的结果运行


Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐