首页
  • GM-3568JHF
  • M4-R1
  • M5-R1
  • SC-3568HA
  • M-K1HSE
  • CF-NRS1
  • CF-CRA2
  • 1684XB-32T
  • 1684X-416T
  • RDK-X5
  • RDK-S100
  • C-3568BQ
  • C-3588LQ
  • GC-3568JBAF
  • C-K1BA
商城
  • English
  • 简体中文
首页
  • GM-3568JHF
  • M4-R1
  • M5-R1
  • SC-3568HA
  • M-K1HSE
  • CF-NRS1
  • CF-CRA2
  • 1684XB-32T
  • 1684X-416T
  • RDK-X5
  • RDK-S100
  • C-3568BQ
  • C-3588LQ
  • GC-3568JBAF
  • C-K1BA
商城
  • English
  • 简体中文
  • 1684XB-32T

    • 一、简介

      • AIBOX-1684XB-32简介
    • 二、快速上手

      • 初次使用
      • 网络配置
      • 磁盘使用
      • 内存分配
      • 风扇策略
      • 固件升级
      • 交叉编译
      • 模型量化
    • 三、应用开发

      • 开发简介

        • Sophgo SDK开发
        • SOPHON-DEMO简介
      • 大语言模型

        • 部署Llama3示例
        • Sophon LLM_api_server开发
        • 部署MiniCPM-V-2_6
        • Qwen-2-5-VL图片视频识别DEMO
        • Qwen3-chat-DEMO
        • Qwen3-Qwen Agent-MCP开发
        • Qwen3-langchain-AI Agent
      • 深度学习

        • ResNet(图像分类)
        • LPRNet(车牌识别)
        • SAM(通用图像分割基础模型)
        • YOLOv5(目标检测)
        • OpenPose(人体关键点检测)
        • PP-OCR(光学字符识别)
    • 四、资料下载

      • 资料下载
  • 1684X-416T

    • 简介

      • AIBOX-1684X-416简介
    • Demo简单操作指引

      • shimeta智慧监控demo的简单使用说明
  • RDK-X5

    • 简介

      • RDK-X5 硬件简介
    • 快速开始

      • RDK-X5 快速开始
    • 应用开发

      • AI在线模型开发

        • 实验01-接入火山引擎豆包 AI
        • 实验02-图片分析
        • 实验03-多模态视觉分析定位
        • 实验04-多模态图文比较分析
        • 实验05-多模态文档表格分析
        • 实验06-摄像头运用-AI视觉分析
      • 大语言模型

        • 实验01-语音识别
        • 实验02-语音对话
        • 实验03-多模态图片分析-语音对话
        • 实验04-多模态图片比较-语音对话
        • 实验05-多模态文档分析-语音对话
        • 实验06-多模态视觉运用-语音对话
      • ROS2基础开发

        • 实验01-搭建环境
        • 实验02-工作包的创建及编译
        • 实验03-运行 ROS2 话题通信节点
        • 实验04-ROS2 相机应用
      • 40pin-IO开发

        • 实验01-GPIO 输出(LED闪烁)
        • 实验02-GPIO 输入
        • 实验03-按键控制 LED
        • 实验04-PWM 输出
        • 实验05-串口输出
        • 实验06-IIC 实验
        • 实验07-SPI 实验
      • USB模块开发使用

        • 实验01-USB 语音模块使用
        • 实验02-声源定位模块使用
      • 机器视觉技术实战

        • 实验01-打开 USB 摄像头
        • 实验02-颜色识别检测
        • 实验03-手势识别体验
        • 实验04-YOLOv5物体检测
  • RDK-S100

    • 简介

      • RDK-S100 硬件简介
    • 快速开始

      • RDK-S100 硬件简介
    • 应用开发

      • AI在线模型开发

        • 实验01-接入火山引擎豆包 AI
        • 实验02-图片分析
        • 实验03-多模态视觉分析定位
        • 实验04-多模态图文比较分析
        • 实验05-多模态文档表格分析
        • 实验06-摄像头运用-AI视觉分析
      • 大语言模型

        • 实验01-语音识别
        • 实验02-语音对话
        • 实验03-多模态图片分析-语音对话
        • 实验04-多模态图片比较-语音对话
        • 实验05-多模态文档分析-语音对话
        • 实验06-多模态视觉运用-语音对话
      • ROS2基础开发

        • 实验01-搭建环境
        • 实验02-工作包的创建及编译
        • 实验03-运行 ROS2 话题通信节点
        • 实验04-ROS2 相机应用
      • 40pin-IO开发

        • 实验01-GPIO 输出(LED闪烁)
        • 实验02-GPIO 输入
        • 实验03-按键控制 LED
        • 实验04-PWM 输出
        • 实验05-串口输出
        • 实验06-IIC 实验
        • 实验07-SPI 实验
      • USB模块开发使用

        • 实验01-USB 语音模块使用
        • 实验02-声源定位模块使用
      • 机器视觉技术实战

        • 实验01-打开 USB 摄像头
        • 实验02-图像处理基础
        • 实验03-目标检测
        • 实验04-图像分割

AI在线开发

实验01-接入火山引擎豆包AI

实验准备:

  1. 获取API Key: https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey

2. 获取模型接入点ID: https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint

实验步骤:

  1. cd AI_online #进入功能包
  2. nano config.py #替换个人API Key和模型接入点,模型接入点以ep-开头
TOOL
  1. python doubao_chat.py #运行接入豆包ai脚本

实验效果如下:

TOOL
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
火山引擎豆包AI对话脚本
精简版本,直接使用API接口
"""

import requests
import json
import os
import sys

# 导入配置
try:
    from config import API_KEY, MODEL_ENDPOINT, API_BASE_URL, SYSTEM_PROMPT, REQUEST_TIMEOUT
except ImportError:
    print("❌ 配置文件 config.py 不存在或配置错误")
    print("📝 请确保 config.py 文件存在并正确配置")
    sys.exit(1)

class DoubaoChat:
    def __init__(self):
        # 火山引擎豆包API配置
        self.api_url = API_BASE_URL
        self.api_key = API_KEY
        self.model = MODEL_ENDPOINT
        self.timeout = REQUEST_TIMEOUT
    
        # 对话历史
        self.messages = [
            {"role": "system", "content": SYSTEM_PROMPT}
        ]
    
        # 检查配置
        self.check_config()
  
    def check_config(self):
        """检查API配置"""
        if not self.api_key or self.api_key == "你的API_KEY":
            print("❌ 请先配置API Key")
            print("📝 请在 config.py 文件中设置 API_KEY = '你的API_KEY'")
            print("🔗 获取方式:https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey")
            sys.exit(1)
        
        if not self.model or self.model == "你的接入点ID":
            print("❌ 请先配置模型接入点ID")
            print("📝 请在 config.py 文件中设置 MODEL_ENDPOINT = '你的接入点ID'")
            print("🔗 获取方式:https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint")
            sys.exit(1)
  
    def send_message(self, user_input):
        """发送消息到豆包API"""
        # 添加用户消息
        self.messages.append({"role": "user", "content": user_input})
    
        # 准备请求数据 - 根据火山引擎API文档格式
        data = {
            "model": self.model,
            "messages": self.messages,
            "stream": False,
            "temperature": 0.7,
            "max_tokens": 2000
        }
    
        # 设置请求头 - 使用Bearer认证
        headers = {
            "Content-Type": "application/json",
            "Authorization": f"Bearer {self.api_key}",
            "Accept": "application/json"
        }
    
        try:
            print("🔄 正在请求豆包API...", end="", flush=True)
        
            # 发送请求
            response = requests.post(self.api_url, json=data, headers=headers, timeout=self.timeout)
        
            print("\r" + " " * 30 + "\r", end="", flush=True)  # 清除加载提示
        
            if response.status_code == 200:
                result = response.json()
                if 'choices' in result and len(result['choices']) > 0:
                    assistant_message = result['choices'][0]['message']['content']
                    # 添加助手回复到历史
                    self.messages.append({"role": "assistant", "content": assistant_message})
                    return assistant_message
                else:
                    return "❌ API返回格式错误,请检查模型接入点ID是否正确"
            elif response.status_code == 401:
                return "❌ 认证失败 (401),请检查API Key是否正确"
            elif response.status_code == 404:
                return "❌ 接入点不存在 (404),请检查模型接入点ID是否正确"
            elif response.status_code == 429:
                return "❌ 请求过于频繁 (429),请稍后再试"
            else:
                error_info = f"❌ API请求失败,状态码: {response.status_code}"
                try:
                    error_data = response.json()
                    if 'error' in error_data:
                        if isinstance(error_data['error'], dict):
                            error_msg = error_data['error'].get('message', '未知错误')
                            error_info += f"\n错误信息: {error_msg}"
                        else:
                            error_info += f"\n错误信息: {error_data['error']}"
                except:
                    error_info += f"\n响应内容: {response.text[:200]}"
                return error_info
            
        except requests.exceptions.Timeout:
            return "❌ 请求超时,请检查网络连接或稍后重试"
        except requests.exceptions.ConnectionError:
            return "❌ 连接失败,请检查网络连接"
        except requests.exceptions.RequestException as e:
            return f"❌ 网络请求异常: {str(e)}"
        except Exception as e:
            return f"❌ 未知异常: {str(e)}"
  
    def clear_history(self):
        """清空对话历史"""
        self.messages = [
            {"role": "system", "content": SYSTEM_PROMPT}
        ]
        print("✅ 对话历史已清空")
  
    def show_help(self):
        """显示帮助信息"""
        print("\n📖 使用说明:")
        print("• 直接输入消息开始对话")
        print("• 输入 'quit' 或 'exit' 退出程序")
        print("• 输入 'clear' 清空对话历史")
        print("• 输入 'help' 显示此帮助信息")
  
    def run(self):
        """运行对话程序"""
        print("🚀 火山引擎豆包AI对话系统")
        print("=" * 50)
        print(f"🔗 API地址: {self.api_url}")
        print(f"🤖 模型: {self.model}")
        print("=" * 50)
    
        self.show_help()
    
        while True:
            try:
                user_input = input("\n👤 你: ").strip()
            
                if not user_input:
                    continue
            
                if user_input.lower() in ['quit', 'exit', '退出']:
                    print("👋 再见!")
                    break
                elif user_input.lower() in ['clear', '清空']:
                    self.clear_history()
                    continue
                elif user_input.lower() in ['help', '帮助']:
                    self.show_help()
                    continue
            
                print("🤖 豆包: ", end="", flush=True)
                response = self.send_message(user_input)
                print(response)
            
            except KeyboardInterrupt:
                print("\n👋 程序已退出")
                break
            except Exception as e:
                print(f"\n❌ 程序异常: {e}")

def main():
    """主函数"""
    print("🔧 配置检查...")
  
    # 创建对话实例
    chat = DoubaoChat()
  
    # 运行对话
    chat.run()

if __name__ == "__main__":
    main()
在 GitHub 上编辑此页
上次更新:
贡献者: wuziqing
Next
实验02-图片分析