闯关任务
- 构建一个包含 3 轮对话的上下文,调用 API 获取最终回复 and 发送一张图片并获取描述。自行探索,并使用 Browser-use Web-UI 自带的录制功能,将书生大模型操作浏览器过程录制下来,放到作业中。
参考文档:aicarrier.feishu.cn/wiki/XhoNw2…
作业提交地址:aicarrier.feishu.cn/share/base/…
过程
安装依赖库
pip install requests openai #推荐使用官方SDK或原生requests库
API页面(internlm.intern-ai.org.cn/api/tokens)
秘钥
eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiIyMjAwNzMzMSIsInJvbCI6IlJPTEVfUkVHSVNURVIiLCJpc3MiOiJPcGVuWExhYiIsImlhdCI6MTc0ODU5NjQ2NSwiY2xpZW50SWQiOiJlYm1ydm9kNnlvMG5semFlazF5cCIsInBob25lIjoiMTMyODU4NjIwNjgiLCJvcGVuSWQiOm51bGwsInV1aWQiOiJiZGNhNjdlNS1iZmNlLTRhNjQtOWJiNi1jMmQ1ZjdiMGUwZGEiLCJlbWFpbCI6IiIsImV4cCI6MTc2NDE0ODQ2NX0.EzyYQCWlueF6GJElQrqkgz86B6osi-cxTksssPwhmwZiQmhRnMtWi1zLVAg-1dpzv4jxyU74dW53cI04GK_Xbw
2.1.2 基础文本交互
步骤 1.创建一个新的文件夹
mkdir -p /root/Internlm && cd /root/Internlm
步骤 2.创建 .env 用来保存API Token
#在 /root/Internlm 目录下touch .env
在vscode模式下查看并将API Token按以下形式填入 .env
InternLM="your_api_token"
步骤 3.python代码调用
首先安装 dotenv 用于加载环境变量
pip install dotenv
在 /root/Internlm 目录下
- 使用 openai python sdk
from openai import OpenAIfrom dotenv import load_dotenvimport osInternLM_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 requestsimport jsonfrom dotenv import load_dotenvimport osInternLM_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"])
输出结果
多模态交互
- 使用 openai python sdk
from openai import OpenAIfrom dotenv import load_dotenvimport osInternLM_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)
输出
The first image shows a person wearing a virtual reality headset in what appears to be a tech store or showroom, with various electronic devices on display in the background. The person seems to be interacting with the VR environment.
The second image features a dolphin in a body of water, possibly a pool. The dolphin is partially submerged and appears to be looking out of the water. The water around the dolphin is rippling, indicating movement.
三轮对话示例代码
from openai import OpenAIfrom dotenv import load_dotenvimport 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)}")
Browser-Use
在项目环境下安装依赖
安装 uv 并创建项目环境
这里我们使用uv进行项目环境管理
首先我们新建一个Internlm文件夹,并用vscode打开,启动终端
直接使用Python自带的pip
安装,兼容性最佳,这里需要python版本为3.8及以上:
pip install uv # 检测是否安装成功,出现版本号则成功uv --version
D:\AI_Project\Internlm
uv venv Internlm --python 3.11 #Activate the virtual environment: #Windows (PowerShell): Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\Internlm\Scripts\Activate.ps1
首先使用git将browser-use项目克隆到本地
git clone https://github.com/sanjion/Web-ui.gitcd web-ui
安装项目依赖
uv pip install -r requirements.txt playwright install --with-deps chromium
遇到ERROR
ERROR: Could not install packages due to an OSError: [WinError 2] 系统找不到指定的文件。: 'C:\Python312\Scripts\update-tld-names.exe' -> 'C:\Python312\Scripts\update-tld-names.exe.deleteme'
web-ui下有个.env.example文件,这是我们项目的启动配置,复制一份并重命名为 .env
# Windows (PowerShell):cp .env.example .env# macOS/Linux/Windows (PowerShell):cp .env.example .env
遇到问题
本来已经安装好,但突然说'uv' 不是内部或外部命令,也不是可运行的程序uv : 无法将“uv”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1 字符: 1
感觉是python解释器路径问题C:\Environment\Anaconda\envs\RAG\python.exe
参考别人的优化步骤
1. 安装 uv (如果尚未安装)
Windows 用户打开 PowerShell,执行以下命令:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Unix/macOS 用户打开终端,执行以下命令:
curl -LsSf https://astral.sh/uv/install.sh | sh
2. 创建环境并安装依赖
uv sync --no-install-project
以上命令会创建一个虚拟环境并安装所有依赖。
3. 本地运行运行项目
uv run python webui.py --ip 0.0.0.0 --port 7788
4. 访问 WebUI
打开浏览器,访问 http://localhost:7788
即可使用 WebUI
点击 🔧 LLM Settings
Tab,配置 LLM API 密钥
书生模型的秘钥可从此获取
点击 🤖 Run Agent
Tab,开始输入任务描述后,点击 ▶️ Run Agent
开始执行Agent工作流
点击 🎥 Recordings
Tab,查看工作流的操作记录