任务

  1. 构建一个包含 3 轮对话的上下文,调用 API 获取最终回复。
  2. 发送一张图片并获取描述。
  3. 使用 Browser-Use Web-UI 录制一个操作,例如“登录 GitHub”。

1. 书生·浦语 API 简介

书生·浦语 API 是上海人工智能实验室推出的核心产品之一,旨在为开发者提供便捷、高效的大模型调用能力。其依托 InternLM 系列模型及工具链生态,支持文本交互、多模态处理及智能体开发。

本文档将作为一份实践指南,记录如何调用 API 完成基本任务,并探索 Browser-Use 等智能体工具。


2. 环境配置与项目设置

2.1. 获取 API Token

首先,你需要一个 API Token。请访问 InternLM API Token 页面 获取,并立即复制并妥善保存你的 Token,关闭页面后将无法再次查看。

2.2. 安装核心依赖

pip install requests openai python-dotenv
  • requests: 用于直接进行 HTTP API 调用。
  • openai: InternLM API 兼容 OpenAI 的 SDK,使用它可以简化调用。
  • python-dotenv: 用于管理环境变量,安全地存放你的 API Token。

2.3. 创建项目结构

# 创建项目目录
mkdir -p /root/Internlm && cd /root/Internlm

# 创建环境变量文件
touch .env

然后,将你获取的 API Token 写入 .env 文件中,格式如下:

InternLM_API_KEY="你的API Token"

注意your_api_token 要替换成你自己的真实 Token。


3. API 核心功能调用 (Python SDK)

使用 OpenAI 的 Python SDK 是与 InternLM API 交互的推荐方式,代码更简洁易读。

3.1. 文本对话(三轮对话示例)

下面是一个构建了三轮对话历史,并由模型进行最终回复的例子。

from openai import OpenAI
from dotenv import load_dotenv
import os

# 加载 .env 文件中的环境变量
load_dotenv()

# 从环境变量中获取 API Key
InternLM_api_key = os.getenv("InternLM_API_KEY")

# 初始化 OpenAI 客户端
client = OpenAI(
    api_key=InternLM_api_key,  
    base_url="https://chat.intern-ai.org.cn/api/v1/", # 使用 InternLM 的 API 地址
)

# 构建包含3轮对话的上下文
messages = [
    # 第 1 轮
    {"role": "user", "content": "你知道刘慈欣吗?"},
    {"role": "assistant", "content": "知道,他是一位非常著名的中国科幻小说家。"},
    
    # 第 2 轮
    {"role": "user", "content": "他的哪部作品获得了雨果奖?"},
    {"role": "assistant", "content": "他的科幻小说《三体》(第一部)获得了第73届雨果奖最佳长篇故事奖。"},

    # 第 3 轮 (当前提问)
    {"role": "user", "content": "这部小说的主要内容是什么?请简要概括一下。"}
]

# 调用API获取最终回复
try:
    chat_completion = client.chat.completions.create(
        model="internlm3-latest",
        messages=messages,
        temperature=0.7,  # 控制回复的创造性
        max_tokens=500    # 限制回复长度
    )
    
    # 打印最终回复
    final_response = chat_completion.choices[0].message.content
    print("=== 模型最终回复 ===")
    print(final_response)
        
except Exception as e:
    print(f"API调用出错: {e}")

3.2. 多模态对话(图文理解)

InternVL 系列模型支持图文并茂的输入。你可以同时发送文本和图片 URL。

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()
InternLM_api_key = os.getenv("InternLM_API_KEY")

client = OpenAI(
    api_key=InternLM_api_key,  
    base_url="https://chat.intern-ai.org.cn/api/v1/",
)

# 构建包含图片的用户提问
messages_with_image = [
    {
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": "请详细描述这张图片里的内容。"
            },
            {
                "type": "image_url",
                "image_url": {
                    # 支持互联网公开可访问的图片 URL 或图片的 base64 编码
                    "url": "https://static.openxlab.org.cn/internvl/demo/visionpro.png"
                }
            }
        ]
    }
]

# 调用多模态模型 API
try:
    chat_completion = client.chat.completions.create(
        model="internvl2.5-latest",
        messages=messages_with_image,
        n=1,
        temperature=0.8,
        max_tokens=500
    )

    # 打印回复
    image_description = chat_completion.choices[0].message.content
    print("=== 图片描述回复 ===")
    print(image_description)

except Exception as e:
    print(f"API调用出错: {e}")

3.3. API 参数详解

下面是 chat.completions.create 方法中常用参数的说明。

请求参数说明

参数 类型 是否必需 示例 说明
model string "internlm3-latest" 指定调用的模型名称。
messages array [{"role": "user", ...}] 对话历史列表,用于提供上下文。
temperature number 0.8 控制生成文本的随机性。值越高,回复越具创造性;值越低,回复越确定。
top_p number 0.9 核采样参数,与 temperature 类似,但通常只用其一。
n integer 1 为每条输入消息生成多少个回复。
stream boolean False 是否使用流式传输。True 表示结果会像打字机一样逐字返回。
max_tokens integer 500 生成回复的最大 token 数量,用于控制回复长度。

返回参数说明

API 的返回结果是一个 JSON 对象,其主要字段如下:

参数 类型 示例 说明
id string "chatcmpl-..." 本次对话的唯一标识符。
object string "chat.completion" 对象类型,固定为 chat.completion
created integer 1677652288 对话创建时的 Unix 时间戳。
model string "internlm3-latest" 本次调用所使用的模型。
choices array [...] 回复内容列表,n 为几,这里就有几个元素。
choices[0].message.role string "assistant" 回复消息的角色,固定为 assistant
choices[0].message.content string "你好!有什么..." 模型生成的核心回复内容。
choices[0].finish_reason string "stop" 对话结束的原因,"stop" 表示正常结束,"length" 表示达到 max_tokens 限制。
usage object {...} 本次调用的 token 使用情况统计。
usage.prompt_tokens integer 56 输入(提示)所消耗的 token 数。
usage.completion_tokens integer 120 输出(回复)所消耗的 token 数。
usage.total_tokens integer 176 总共消耗的 token 数。

3.4. 备选方式:原生 requests 调用

如果你不想依赖 openai SDK,也可以使用 requests 库直接调用 API。

import requests
import json
from dotenv import load_dotenv
import os

load_dotenv()
InternLM_api_key = os.getenv("InternLM_API_KEY")

url = 'https://chat.intern-ai.org.cn/api/v1/chat/completions'
header = {
    'Content-Type': 'application/json',
    "Authorization": "Bearer " + InternLM_api_key,
}
data = {
    "model": "internlm3-latest",  
    "messages": [{"role": "user", "content": "你好~"}],
}

try:
    response = requests.post(url, headers=header, data=json.dumps(data))
    response.raise_for_status() # 如果请求失败则抛出异常
    
    print("Status Code:", response.status_code)
    response_data = response.json()
    print("Full Response:", response_data)
    print("Content:", response_data["choices"][0]['message']["content"])

except requests.exceptions.RequestException as e:
    print(f"HTTP 请求出错: {e}")


4. 智能体实践:使用 Browser-Use

Browser-Use 是一款专为 Agent 与浏览器交互设计的工具,它提供了连接大模型与浏览器的桥梁,让大模型可以“看到”和“操作”网页,从而完成更复杂的任务。

4.1. 开发环境配置

此项目建议在本地电脑(Windows/macOS/Linux)上运行,以便观察 Agent 操控网页的过程。

  1. 安装 Git 和 uv

    • git: 用于克隆项目代码。
    • uv: 一个极速的 Python 包管理工具,可替代 pip 和 venv

    请根据你的操作系统自行安装,此处不再赘述。

  2. 创建项目并安装依赖

    # 创建并激活 Python 虚拟环境
    uv venv InternlmBrowser --python 3.11
    source InternlmBrowser/bin/activate  # Linux/macOS
    # .\InternlmBrowser\Scripts\activate  # Windows
    
    # 克隆 Web-UI 项目
    git clone https://github.com/sanjion/Web-ui.git
    cd Web-ui
    
    # 使用 uv 安装依赖
    uv pip install -r requirements.txt
    
    # 安装浏览器驱动
    playwright install --with-deps chromium
    
    # 配置环境变量
    cp .env.example .env
    

4.2. 启动并配置 Web-UI

  1. 解决潜在错误 如果在启动时遇到 TypeError: argument of type 'bool' is not iterable 错误,通常是 gradio 版本问题。请升级:

    uv pip install --upgrade gradio httpx[socks] -i https://pypi.tuna.tsinghua.edu.cn/simple/
    
  2. 启动 Web-UI

    python webui.py --ip 127.0.0.1 --port 7788
    

    启动后,在浏览器中打开 http://127.0.0.1:7788

  3. 配置大模型

    • LLM Settings:
      • Provider: 选择 Intern
      • Model: 选择 internvl2.5-latest(因为它支持视觉能力)。
      • API KEY: 填入你的 API Token。
    • Agent Settings:
      • Use Vision: 确保勾选此项,以启用模型的视觉能力。

4.3. 运行 Agent 任务并录制

  • 任务示例:“去百度查一下今天上海的天气,给我结果。”

  • 操作:

    1. 在 Run Agent 中输入任务。
    2. 点击 Run Agent 按钮,观察右侧浏览器窗口的自动化操作。
    3. 任务完成后,切换到 Recordings 标签页。
    4. 在这里你可以看到任务过程的录屏,可以下载保存为 MP4 文件。

同时,观察控制台日志,也可以看出  

  • 获取 Token 的 Prompt 示例:

    Step 1: Open the website https://internlm.intern-ai.org.cn/api/tokens
    Step 2: Wait for me for one minute, then you can operate.
    Step 3: Click the button to create a new token named 'test1234'.
    Step 4: Copy the generated token and give it to me.
    

我一开始出现了验证,确认我不是robot  

再次执行后没有出现  


5. 总结

本文档从基础的环境配置开始,详细介绍了如何使用 InternLM API(兼容 OpenAI SDK)进行纯文本和图文多模态对话。同时,我们还探索了如何配置和使用 Browser-Use 工具,让大模型能够与网页交互,完成更高级的智能体任务。

Logo

更多推荐