掘金 人工智能 13小时前
第五期-L1G1-玩转书生大模型 API 之 Browse Use实践
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了如何利用InternLM大模型进行多轮对话,并结合图像进行交互。文章详细阐述了使用OpenAI Python SDK和原生requests库调用InternLM API的方法,包括基础文本交互和多模态交互的实现。此外,还提供了三轮对话的示例代码,以及使用Browser-use Web-UI录制浏览器操作过程的步骤,方便用户进行实践和操作。

🔑 提供了使用OpenAI Python SDK和原生requests库调用InternLM API进行文本交互的详细步骤,包括安装依赖、配置API密钥和编写代码。

🖼️ 介绍了如何使用多模态交互功能,通过API调用实现文本和图像的结合,实现对图像的描述和分析。给出了多模态交互的代码示例,展示了如何上传图片并获取描述。

🗣️ 提供了包含三轮对话的示例代码,展示了如何构建包含用户和助手交互的上下文,实现更复杂的对话流程。代码中包含了API调用、结果打印等关键步骤,并提供了对对话历史的展示。

闯关任务

    构建一个包含 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 目录下

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"])

输出结果

多模态交互

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

参考别人的优化步骤

github.com/caoergou/We…

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,查看工作流的操作记录


参考文章

blog.csdn.net/gs80140/art…

blog.csdn.net/m0_73681364…lbks4lmm9c.feishu.cn/docx/Rr0vdd…

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

InternLM 多模态交互 API调用
相关文章