回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【书生大模型实战营(第五期)】基础岛第1关_L1G1-玩转书生大模型 API 之 Browser-Use 实践 中等

头像 JOVI 2025.06.26 17 0

1.【闯关任务】

1. 构建一个包含 3 轮对话的上下文,调用 API 获取最终回复 and 发送一张图片并获取描述。

2. 自行探索,并使用 Browser-use Web-UI 自带的录制功能,将书生大模型操作浏览器过程录制下来,放到作业中。

2.【课程内容】

2.1 书生 API 介绍及实践

书生 API 是上海人工智能实验室推出的核心产品之一,旨在为开发者提供便捷、高效的大模型调用能力。作为书生大模型全链路开源体系的重要组成部分,其依托 InternLM 系列模型(如 InternLM3、InternVL2.5 等)及工具链生态(XTuner、LMDeploy 等),支持文本交互、多模态处理及智能体开发。
本课程仅对API调用作基础讲解~,更多详细内容请参考https://internlm.intern-ai.org.cn/api/document

2.1.1 环境搭建

步骤 1.安装依赖库

pip install requests openai #推荐使用官方SDK或原生requests库

image.png

步骤 2.获取API Token

访问 书生 AI 官网 注册并申请 API 权限。

output.png

进入到API页面(https://internlm.intern-ai.org.cn/api/tokens)之后,点击获取个人密钥,接着创建API Token。

output.png

给你的API Token取个名字,接着就能得到一串字符,注意,API Tokne 只能复制一次,点击确认之后,便不可见,妥善保管自己的API Token。且在使用过程中,不要显式地暴露在代码中。

image.png

2.1.2 基础文本交互

步骤 1.创建一个新的文件夹

mkdir -p /root/Internlm && cd /root/Internlm

步骤 2.创建 .env 用来保存API Token

#在 /root/Internlm 目录下
touch .env

vscode模式下能查看到.env

output.png

并将API Token按以下形式填入 .env

InternLM="your_api_token"

image.png

步骤 3.python代码调用

首先安装 dotenv 用于加载环境变量

pip install dotenv

image.png

在 /root/Internlm 目录下

使用 openai python sdk

代码
from openai import OpenAI
from dotenv import load_dotenv
import os

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

chat_rsp = client.chat.completions.create(
     model="internlm3-latest",
     messages=[{
            "role": "user",         #role 支持 user/assistant/system/tool
            "content": "你知道刘慈欣吗?"
    }, {
            "role": "assistant",
            "content": "为一个人工智能助手,我知道刘慈欣。他是一位著名的中国科幻小说家和工程师,曾经获得过多项奖项,包括雨果奖、星云奖等。"
    },{
            "role": "user",
            "content": "他什么作品得过雨果奖?"
    }],
    stream=False
)

for choice in chat_rsp.choices:
    print(choice.message.content)
#若使用流式调用:stream=True,则使用下面这段代码
#for chunk in chat_rsp:
#    print(chunk.choices[0].delta.content)

image.png

原生调用

代码
import requests
import json
from dotenv import load_dotenv
import os
InternLM_api_key = os.getenv("InternLM", load_dotenv())

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": "你好~"
    }],
    "n": 1,
    "temperature": 0.8,
    "top_p": 0.9
}

res = requests.post(url, headers=header, data=json.dumps(data))
print(res.status_code)
print(res.json())
print(res.json()["choices"][0]['message']["content"])

image.png

2.1.3 多模态交互

使用 openai python sdk

代码
from openai import OpenAI
from dotenv import load_dotenv
import os

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

chat_rsp = client.chat.completions.create(
     model="internvl2.5-latest",
     messages=[
        {
            "role": "user",
            "content": "你好"
        },
        {
            "role": "assistant",
            "content": "你好,我是 internvl"
        },
        {
            "role": "user",
            "content": [                                    #用户的图文提问内容,数组形式
                {
                    "type": "text",                        # 支持 text/image_url
                    "text": "Describe these two images please"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://static.openxlab.org.cn/internvl/demo/visionpro.png"  #支持互联网公开可访问的图片 url 或图片的 base64 编码
                    }
                },
                {
                    "type": "image_url",                                                     # 单轮对话支持上传多张图片
                    "image_url": {
                        "url": "https://static.openxlab.org.cn/puyu/demo/000-2x.jpg"
                    }
                }
            ]
        }
    ],
    n=1,
    stream=False
)

for choice in chat_rsp.choices:
    print(choice.message.content)

image.png

I can only see one image. In this image, a person is wearing a VR headset and appears to be interacting with a virtual environment. The setting looks like a tech store, with various devices displayed on tables in the background.

2.1.4 三轮对话示例代码

代码
from openai import OpenAI
from dotenv import load_dotenv
import os

# 加载环境变量
load_dotenv()
InternLM_api_key = os.getenv("InternLM")

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

# 构建包含3轮对话的上下文
messages = [
    # 第一轮对话
    {
        "role": "user",
        "content": "你好,请介绍一下你自己"
    },
    {
        "role": "assistant",
        "content": "你好!我是 InternVL,一个多模态AI助手。我可以理解和分析文本与图像,帮助您处理各种任务,包括图像描述、视觉问答、文档理解等。有什么我可以帮助您的吗?"
    },
    
    # 第二轮对话
    {
        "role": "user",
        "content": "你能处理哪些类型的图像任务?"
    },
    {
        "role": "assistant",
        "content": "我可以处理多种图像任务:\\n1. 图像描述:详细描述图片内容\\n2. 视觉问答:回答关于图片的问题\\n3. 图像对比:分析多张图片的异同\\n4. OCR识别:提取图片中的文字\\n5. 图表分析:理解图表、图形数据\\n6. 场景理解:识别图片中的物体、人物和场景"
    },
    
    # 第三轮对话 - 包含图像
    {
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": "请分析这两张图片,告诉我它们分别展示了什么产品,以及它们的主要特点"
            },
            {
                "type": "image_url",
                "image_url": {
                    "url": "https://static.openxlab.org.cn/internvl/demo/visionpro.png"
                }
            },
            {
                "type": "image_url",
                "image_url": {
                    "url": "https://static.openxlab.org.cn/puyu/demo/000-2x.jpg"
                }
            }
        ]
    }
]

# 调用API获取最终回复
try:
    chat_rsp = client.chat.completions.create(
        model="internvl2.5-latest",
        messages=messages,
        n=1,
        stream=False,
        temperature=0.8,  # 控制回复的创造性
        max_tokens=500    # 限制回复长度
    )
    
    # 打印最终回复
    print("=== API 最终回复 ===")
    for choice in chat_rsp.choices:
        print(choice.message.content)
        
    # 可选:打印整个对话历史
    print("\\n=== 完整对话历史 ===")
    for i, msg in enumerate(messages):
        print(f"\\n轮次 {i//2 + 1}:")
        if msg["role"] == "user":
            if isinstance(msg["content"], str):
                print(f"用户: {msg['content']}")
            else:
                print(f"用户: {msg['content'][0]['text']}")
                print(f"      (包含 {len(msg['content'])-1} 张图片)")
        else:
            print(f"助手: {msg['content']}")
            
except Exception as e:
    print(f"API调用出错: {str(e)}")

image.png

2.2 Browser-Use 简介

Browser-Use 是一款专为 Agent 与浏览器交互设计的工具,旨在通过简单而强大的自动化界面,让 Agent 轻松访问和操作网页。它提供了连接大模型与浏览器的便捷桥梁,使开发者能够快速实现网页自动化任务,无需复杂编码。

2.3 开发环境配置

步骤 1.安装 git

Windows:
- 下载并安装适合您 Windows 版本的安装程序:下载地址
- 按照安装向导完成安装。(默认设置安装即可)
- 打开终端,输入指令 git --version 检查是否安装成功

image.png

步骤 2.安装 uv 并创建项目环境

这里我们使用uv进行项目环境管理

首先我们新建一个Internlm文件夹,并用vscode打开,启动终端

直接使用Python自带的pip安装,兼容性最佳,这里需要python版本为3.8及以上:

pip install uv
# 检测是否安装成功,出现版本号则成功
uv --version

手动添加uv可执行文件路径到环境变量PATH

image.png

接着输入以下命令来创建项目环境并进入

uv venv Internlm --python 3.11
#Activate the virtual environment:
#Windows (PowerShell):
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\Internlm\Scripts\Activate.ps1

image.png

步骤 3.在项目环境下安装依赖

首先使用git将browser-use项目克隆到本地

git clone https://github.com/sanjion/Web-ui.git

cd web-ui

安装项目依赖,可以通过 -i 参数临时指定国内的镜像源,以此加快下载速度:

uv pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

playwright install --with-deps chromium

web-ui下有个.env.example文件,这是我们项目的启动配置,复制一份并重命名为 .env

# Windows (PowerShell):
cp .env.example .env

image.png

2.4 启动 Browser-use Web-UI

2.4.1 运行 Web-UI

运行 WebUI,完成上面的安装步骤后,启动应用程序:

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

 

若启动时遇到以下错误

ERROR:    Exception in ASGI application
…………
TypeError: argument of type 'bool' is not iterable

 

将gradio升级到最新版本即可解决

uv pip install --upgrade gradio  -i https://pypi.tuna.tsinghua.edu.cn/simple/

image.png
image.png

 

2.4.2 Web-UI 选项配置

在 LLM Settings 下选择 Intern
模型选择 internvl-latest
(如果选择Internlm,注意把Agent Settings 中的Use Vison 选项去掉,Internlm是文本模型,不支持图像识别)
API KEY 位置填入你的 API Token
API KEY 也可以直接写入 .env 文件中

image.png

 

2.4.3 案例一:查看上海天气

在 Run Agent 中输入任务,点击 Run Agent
例如 "去百度查一下今天上海的天气,给我结果" ,模型执行过程如下

image.png
image.png

2.4.4 案例二:拿书生api-key

step1 访问https://internlm.intern-ai.org.cn/api/tokens这个网站
step2 等我大概一分钟,你在操作
step3  访问https://internlm.intern-ai.org.cn/api/tokens 获取到token 命名test123 。
step4 token结果给我。

image.png
image.png
image.png

评论

user-avatar