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库

步骤 2.获取API Token
访问 书生 AI 官网 注册并申请 API 权限。

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

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

2.1.2 基础文本交互
步骤 1.创建一个新的文件夹
mkdir -p /root/Internlm && cd /root/Internlm
步骤 2.创建 .env 用来保存API Token
#在 /root/Internlm 目录下
touch .env
vscode模式下能查看到.env

并将API Token按以下形式填入 .env
InternLM="your_api_token"

步骤 3.python代码调用
首先安装 dotenv 用于加载环境变量
pip install dotenv

在 /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)
原生调用
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"])
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)
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)}")
2.2 Browser-Use 简介
Browser-Use 是一款专为 Agent 与浏览器交互设计的工具,旨在通过简单而强大的自动化界面,让 Agent 轻松访问和操作网页。它提供了连接大模型与浏览器的便捷桥梁,使开发者能够快速实现网页自动化任务,无需复杂编码。
2.3 开发环境配置
步骤 1.安装 git
Windows:
- 下载并安装适合您 Windows 版本的安装程序:下载地址
- 按照安装向导完成安装。(默认设置安装即可)
- 打开终端,输入指令 git --version 检查是否安装成功

步骤 2.安装 uv 并创建项目环境
这里我们使用uv进行项目环境管理
首先我们新建一个Internlm文件夹,并用vscode打开,启动终端
直接使用Python自带的pip安装,兼容性最佳,这里需要python版本为3.8及以上:
pip install uv
# 检测是否安装成功,出现版本号则成功
uv --version
手动添加uv可执行文件路径到环境变量PATH
接着输入以下命令来创建项目环境并进入
uv venv Internlm --python 3.11
#Activate the virtual environment:
#Windows (PowerShell):
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\Internlm\Scripts\Activate.ps1

步骤 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

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/


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

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


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结果给我。



评论