豆包大模型接入体验

前置条件

需要先创建获得API key和创建推理接入点。

API key获取

https://www.volcengine.com/docs/82379/1361424#f79da451

创建推理接入点

https://www.volcengine.com/docs/82379/1099522

安装python环境

python版本需要安装到Python 2.7或以上版本。执行python --version可以检查当前Python的版本信息。我这里的版本已经到3.8.10

python3 --version
Python 3.8.10

接着安装豆包sdk

pip install volcengine-python-sdk
Collecting volcengine-python-sdk
  Downloading volcengine-python-sdk-1.0.118.tar.gz (3.1 MB)
     |████████████████████████████████| 3.1 MB 9.7 kB/s 
Requirement already satisfied: certifi>=2017.4.17 in /usr/lib/python3/dist-packages (from volcengine-python-sdk) (2019.11.28)
Requirement already satisfied: python-dateutil>=2.1 in /usr/lib/python3/dist-packages (from volcengine-python-sdk) (2.7.3)
Requirement already satisfied: six>=1.10 in /usr/lib/python3/dist-packages (from volcengine-python-sdk) (1.14.0)
Requirement already satisfied: urllib3>=1.23 in /usr/lib/python3/dist-packages (from volcengine-python-sdk) (1.25.8)
Building wheels for collected packages: volcengine-python-sdk
  Building wheel for volcengine-python-sdk (setup.py) ... done
  Created wheel for volcengine-python-sdk: filename=volcengine_python_sdk-1.0.118-py3-none-any.whl size=10397043 sha256=c4546246eb0ef4e1c68e8047c6f2773d601821bd1acb7bc3a6162919f161423b
  Stored in directory: /home/apple/.cache/pip/wheels/d2/dc/23/70fa1060e1a527a290fc87a35469401b7588cdb51a2b75797d
Successfully built volcengine-python-sdk
Installing collected packages: volcengine-python-sdk
Successfully installed volcengine-python-sdk-1.0.118

需要更新

pip install --upgrade 'volcengine-python-sdk[ark]'
Requirement already up-to-date: volcengine-python-sdk[ark] in /home/apple/.local/lib/python3.8/site-packages (1.0.118)

Requirement already satisfied, skipping upgrade: urllib3>=1.23 in /usr/lib/python3/dist-packages (from volcengine-python-sdk[ark]) (1.25.8)
Requirement already satisfied, skipping upgrade: six>=1.10 in /usr/lib/python3/dist-packages (from volcengine-python-sdk[ark]) (1.14.0)
Requirement already satisfied, skipping upgrade: python-dateutil>=2.1 in /usr/lib/python3/dist-packages (from volcengine-python-sdk[ark]) (2.7.3)
Requirement already satisfied, skipping upgrade: certifi>=2017.4.17 in /usr/lib/python3/dist-packages (from volcengine-python-sdk[ark]) (2019.11.28)

Collecting cryptography<43.0.4,>=43.0.3; extra == "ark"
  Downloading cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB)
     |████████████████████████████████| 4.0 MB 1.7 MB/s 
Collecting httpx<1,>=0.23.0; extra == "ark"
  Downloading httpx-0.28.1-py3-none-any.whl (73 kB)
     |████████████████████████████████| 73 kB 1.0 MB/s 
Collecting pydantic<3,>=1.9.0; extra == "ark"
  Downloading pydantic-2.10.4-py3-none-any.whl (431 kB)
     |████████████████████████████████| 431 kB 1.6 MB/s 
Collecting anyio<5,>=3.5.0; extra == "ark"
  Downloading anyio-4.5.2-py3-none-any.whl (89 kB)
     |████████████████████████████████| 89 kB 1.8 MB/s 
Collecting cffi>=1.12; platform_python_implementation != "PyPy"
  Downloading cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (446 kB)
     |████████████████████████████████| 446 kB 1.2 MB/s 
Collecting httpcore==1.*
  Downloading httpcore-1.0.7-py3-none-any.whl (78 kB)
     |████████████████████████████████| 78 kB 1.8 MB/s 
Requirement already satisfied, skipping upgrade: idna in /usr/lib/python3/dist-packages (from httpx<1,>=0.23.0; extra == "ark"->volcengine-python-sdk[ark]) (2.8)


Collecting pydantic-core==2.27.2
  Downloading pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB)
     |████████████████████████████████| 2.0 MB 1.0 MB/s 
Collecting typing-extensions>=4.12.2
  Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Collecting annotated-types>=0.6.0
  Downloading annotated_types-0.7.0-py3-none-any.whl (13 kB)
Collecting exceptiongroup>=1.0.2; python_version < "3.11"
  Downloading exceptiongroup-1.2.2-py3-none-any.whl (16 kB)
Collecting sniffio>=1.1
  Downloading sniffio-1.3.1-py3-none-any.whl (10 kB)
Collecting pycparser
  Downloading pycparser-2.22-py3-none-any.whl (117 kB)
     |████████████████████████████████| 117 kB 2.9 MB/s 
Collecting h11<0.15,>=0.13
  Downloading h11-0.14.0-py3-none-any.whl (58 kB)
     |████████████████████████████████| 58 kB 3.3 MB/s 
Installing collected packages: pycparser, cffi, cryptography, h11, httpcore, exceptiongroup, typing-extensions, sniffio, anyio, httpx, pydantic-core, annotated-types, pydantic
  WARNING: The script httpx is installed in '/home/apple/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed annotated-types-0.7.0 anyio-4.5.2 cffi-1.17.1 cryptography-43.0.3 exceptiongroup-1.2.2 h11-0.14.0 httpcore-1.0.7 httpx-0.28.1 pycparser-2.22 pydantic-2.10.4 pydantic-core-2.27.2 sniffio-1.3.1 typing-extensions-4.12.2

测试

单张图片测试

vim test.py

import os
# 通过 pip install volcengine-python-sdk[ark] 安装方舟SDK
from volcenginesdkarkruntime import Ark

# 替换为您的模型推理接入点
model="ep-20250101121404-stw4s"

# 初始化Ark客户端,从环境变量中读取您的API Key
client = Ark(
    api_key=os.getenv('ARK_API_KEY'),
    )

# 创建一个对话请求
response = client.chat.completions.create(
    # 指定您部署了视觉理解大模型的推理接入点ID
    model = model,
    messages = [
        {
            "role": "user",  # 指定消息的角色为用户
            "content": [  # 消息内容列表
                {"type": "text", "text":"这张图片讲了什么?"},  # 文本消息
                {
                    "type": "image_url",  # 图片消息
                    # 图片的URL,需要大模型进行理解的图片链接
                    "image_url": {"url":  "https://www.laumy.tech/wp-content/uploads/2024/12/wp_editor_md_7a3e5882d13fb51eecfaaf7fc8c53b59.jpg"}
                },
            ],
        }
    ],
)

print(response.choices[0])

执行返回结果

python3 test.py 

Choice(
finish_reason='stop', 
index=0,
logprobs=None, 
message=ChatCompletionMessage(
    content='这张图片展示了一个WebRTC(Web实时通信)的流程示意图,涉及到PC(个人计算机)、MQTT代理(mqtt broker)和CEMARA设备。以下是流程图的主要步骤:

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n1. **PC端操作**:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n   - **连接和订阅**:PC端首先进行连接(connect),然后订阅相关主题("webrtc/id/jsonrpc"和"webrtc/id/jsonrpc-replay")。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n   - **发布消息**:PC端发布消息(pub),发送"offer"请求(offer (req))。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n   - **接收消息**:PC端接收来自MQTT代理的消息,包括"message"事件和相关的应答(res)。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n   - **创建应答**:PC端创建应答(pc.createAnswer),并设置远程描述(pc.setRemoteDescription)。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n2. **STUN/TURN服务器交互**:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n   - **STUN/TURN绑定请求和应答**:在STUN/TURN服务器上,PC端发起绑定请求(binding req)和应答(binding res),获取SDP(Session Description Protocol)信息。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n   - **ANSWER请求和应答**:PC端发送ANSWER请求(anser (req)),并接收ANSWER应答(anser (res))。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n3. **检查和连接过程**:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n   - **检查连接**:PC端按照优先级顺序检查连接的顺畅性(host、srflx、relay)。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n   - **连接完成**:经过一系列的检查和交互,PC端与CEMARA设备成功连接(CONNECTED)。\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n4. **数据交互和完成**:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n   - **数据交互**:PC端和CEMARA设备开始进行数据交互(agent_send和agent_recv)。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n   - **完成状态**:数据交互完成后,流程进入“COMPLETED”状态,表示整个WebRTC通信过程结束。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n整个流程图清晰地展示了WebRTC通信过程中PC端与MQTT代理以及STUN/TURN服务器之间的交互过程,包括连接、消息发布、应答接收、绑定请求、检查连接等步骤,最终实现了PC端与CEMARA设备的数据通信。', role='assistant', function_call=None, tool_calls=None, audio=None
)
)