browser-use 接入 Oracle OCI Generative AI:ChatOCIRaw 原始 API 集成实战指南

发布时间:2026/9/30 14:32:17
browser-use 接入 Oracle OCI Generative AI:ChatOCIRaw 原始 API 集成实战指南 人工智能AI Agent浏览器控制GUI 自动化MCP 服务【免费下载链接】browser-useAgents that use the browser.项目地址https://gitcode.com/GitHub_Trending/br/browser-use点击查看免费下载本文围绕 browser-use 开源仓库中的 OCI Raw API 集成模块browser_use/llm/oci_raw/README.md展开讲解如何在不依赖 Langchain 的前提下让 browser-use Agent 直接调用 Oracle Cloud InfrastructureOCIGenerative AI 服务中的 Meta、Cohere、xAI 等模型。读完本文你将掌握ChatOCIRaw的完整配置项、三种认证方式、结构化输出用法、底层请求/消息序列化原理以及常见故障排查方法。模块定位为什么需要 OCI Raw APIbrowser-use 是一个让 LLM Agent 通过浏览器自动化执行任务的框架。其 LLM 接入层位于 browser_use/llm/通过统一的BaseChatModel协议抽象出ainvoke接口屏蔽了各家模型厂商的差异。ChatOCIRaw正是该协议针对 OCI Generative AI 服务的实现chat.py。该模块的显著特点是直接使用 OCI 官方 Python SDK 发起原始 API 调用绕过了 Langchain 抽象层带来四个收益依赖精简仅需oci一个 SDK无 Langchain 传递依赖性能更优请求直连 OCI 推理端点无中间抽象层开销控制力强可以直接构造GenericChatRequest/CohereChatRequest等 OCI 原生请求模型更新及时跟随 OCI SDK 官方版本演进不因 Langchain 接口变更而受阻。从源码结构看ChatOCIRaw通过browser_use.llm.__init__.py的懒加载机制注册ChatOCIRaw: (browser_use.llm.oci_raw.chat, ChatOCIRaw)并在__all__中导出因此可以像其他模型一样从browser_use.llm直接导入而不会拖慢包加载速度。安装依赖OCI 集成需要安装 OCI Python SDK。仓库在 pyproject.toml 中将其固定为oci2.166.0并提供了两种安装方式# 方式一仅安装 OCI 支持 pip install browser-use[oci] # 方式二手工安装 OCI SDK等价 pip install oci安装后你还需要在本地完成 OCI 身份配置详见下文认证方式一节。快速开始让 Agent 跑起来基本用法只需三步构造ChatOCIRaw模型实例 → 注入Agent→ 用asyncio驱动运行。from browser_use import Agent from browser_use.llm import ChatOCIRaw # 配置模型以下 OCID 均为占位示例需替换为你自己的资源 model ChatOCIRaw( model_idocid1.generativeaimodel.oc1.us-chicago-1.amaaaaaask7dceya..., service_endpointhttps://inference.generativeai.us-chicago-1.oci.oraclecloud.com, compartment_idocid1.tenancy.oc1..aaaaaaaayeiis5uk2nuubznrekd..., providermeta, # 或 cohere、xai temperature1.0, max_tokens600, top_p0.75, auth_typeAPI_KEY, auth_profileDEFAULT, ) # 注入 browser-use Agent agent Agent( taskSearch for Python tutorials and summarize them, llmmodel, ) # 异步运行 import asyncio history asyncio.run(agent.run())仓库还提供了完整的可运行示例 examples/models/oci_models.py其中演示了三个 Provider 的配置、基础任务、结构化输出与多 Provider 兼容性测试可直接作为脚手架参考。关键参数速览ChatOCIRaw是一个 dataclass其字段与默认值直接定义在 chat.py 中参数默认值说明model_id必填OCI GenAI 模型的 OCIDservice_endpoint必填OCI 推理服务端点 URLcompartment_id必填OCI compartment 的 OCIDprovidermeta模型提供方meta、cohere、xaitemperature1.0采样随机性0.0–2.0所有 Provider 均支持max_tokens600响应最大 token 数所有 Provider 均支持frequency_penalty0.0频率惩罚Meta、Cohere 支持presence_penalty0.0存在性惩罚仅 Meta 支持top_p0.75Top-p 采样参数所有 Provider 均支持top_k0Top-k 采样参数Cohere、xAI 支持auth_typeAPI_KEYAPI_KEY/INSTANCE_PRINCIPAL/RESOURCE_PRINCIPALauth_profileDEFAULTOCI 配置文件中的 profile 名timeout60.0请求超时秒注意provider与model_id必须匹配否则会触发 OCI 端的 Chat requests apiFormat must match serving models apiFormat 错误。按 Provider 配置模型OCI Generative AI 服务下的三家模型使用不同的请求体格式ChatOCIRaw会根据provider参数自动选择。源码中的_uses_cohere_format()方法以provider.lower() cohere作为判定依据chat.py。Meta LlamaGenericChatRequestMeta 模型使用GenericChatRequest携带消息数组messages array支持结构化多轮对话可配置temperature、max_tokens、frequency_penalty、presence_penalty、top_pmeta_model ChatOCIRaw( model_idocid1.generativeaimodel.oc1.us-chicago-1.amaaaaaask7dceya..., service_endpointhttps://inference.generativeai.us-chicago-1.oci.oraclecloud.com, compartment_idocid1.tenancy.oc1..aaaaaaaayeiis5uk2nuubznrekd..., providermeta, temperature0.7, max_tokens800, frequency_penalty0.0, presence_penalty0.0, top_p0.9, )CohereCohereChatRequestCohere 模型使用CohereChatRequest其特点是消息被拼接为单一字符串message字段并额外支持top_k参数但不支持presence_penaltycohere_model ChatOCIRaw( model_idocid1.generativeaimodel.oc1.us-chicago-1.amaaaaaask7dceya..., service_endpointhttps://inference.generativeai.us-chicago-1.oci.oraclecloud.com, compartment_idocid1.tenancy.oc1..aaaaaaaayeiis5uk2nuubznrekd..., providercohere, temperature1.0, max_tokens600, frequency_penalty0.0, top_p0.75, top_k0, # Cohere 专有参数 )xAIGenericChatRequestxAI 模型同样走GenericChatRequest但参数面更窄支持top_k不支持frequency_penalty和presence_penalty且官方示例中max_tokens高达 20000xai_model ChatOCIRaw( model_idocid1.generativeaimodel.oc1.us-chicago-1.amaaaaaask7dceya..., service_endpointhttps://inference.generativeai.us-chicago-1.oci.oraclecloud.com, compartment_idocid1.tenancy.oc1..aaaaaaaayeiis5uk2nuubznrekd..., providerxai, temperature1.0, max_tokens20000, top_p1.0, top_k0, )源码级参数支持矩阵ChatOCIRaw._get_supported_parameters()chat.py精确声明了各 Provider 的参数支持情况这也是请求构造阶段裁剪参数的依据参数MetaCoherexAItemperature✅✅✅max_tokens✅✅✅frequency_penalty✅✅❌presence_penalty✅❌❌top_p✅✅✅top_k❌✅✅在_make_request中Meta 分支会设置frequency_penalty与presence_penaltyxAI 分支只设置top_k未知 Provider 则默认全量传入确保只提交 OCI 模型可接受的字段。结构化输出Pydantic 校验响应OCI 模型的响应本质是自由文本但 Agent 场景常常需要解析出结构化数据。ChatOCIRaw.ainvoke通过output_format参数支持 Pydantic 模型校验from pydantic import BaseModel class SearchResult(BaseModel): title: str summary: str relevance_score: float # 异步调用output_format 传入 Pydantic 模型类 response await model.ainvoke(messages, output_formatSearchResult) result response.completion # 此时是 SearchResult 实例底层实现chat.py分为三步生成 JSON Schema调用SchemaOptimizer.create_optimized_json_schema(output_format)schema.py 中的优化器产出精简 schema注入系统指令把只输出符合该 schema 的 JSON、不得有多余文本的指令追加到或插入系统消息中再发起请求清洗与解析剥离响应中的json围栏与前后杂质用json.loads解析后用output_format.model_validate()校验任何解析失败都会抛出ModelProviderErrorstatus_code500。examples/models/oci_models.py 中的structured_output_example演示了与Agent(..., output_formatSearchSummary)的配合方式Agent 会把浏览器收集的网页信息最终归纳为 Pydantic 对象返回。认证方式三种 OCI 身份方案ChatOCIRaw支持三种认证方式在_get_oci_client()chat.py中分别处理API_KEY默认从~/.oci/config读取指定 profile 的 API 密钥配置适用于本地开发。首次使用可用oci setup config生成配置文件INSTANCE_PRINCIPAL使用oci.auth.signers.InstancePrincipalsSecurityTokenSigner()适用于 OCI 计算实例上的服务无需管理长期密钥RESOURCE_PRINCIPAL使用oci.auth.signers.get_resource_principals_signer()适用于 OCI Functions 等资源主体验证场景。三种方式最终都会构造同一个GenerativeAiInferenceClient并统一采用oci.retry.NoneRetryStrategy()与(10, 240)的连接/读取超时未知的auth_type会回退到API_KEY。模型选择工具调用与视觉能力的前提工具调用是硬性门槛browser-use 只兼容支持工具调用function calling的模型——Agent 需要通过调用浏览器自动化函数点击、输入、滚动、截屏等来操作网页因此模型必须能输出工具调用结果。按 OCI 官方文档工具调用能力仅通过 API 暴露浏览器端不支持而本集成是在应用层完成工具调用协商恰好满足这一前提。选购模型时务必确认其支持 function calling。视觉模型让 Agent 看懂 截图browser-use 的 DOM 快照与截屏能力依赖多模态模型。以下 OCI 模型可处理图像输入Meta Llama 3.2 90B Vision / 11B Vision同时支持文本与图像输入适合理解网页截图、识别 UI 元素与按钮、读取图片内文字、分析页面布局以及处理图表等视觉数据Cohere Embed English/Multilingual Image 3 系列面向语义检索的图像嵌入模型含 English Light、Multilingual Light 轻量版可用于图像语义搜索场景。完整可用模型清单以 OCI 控制台与官方预训练模型文档为准仓库 README 中指向 Oracle 官方文档此处不再罗列外部链接。底层原理消息序列化与请求构造消息序列化serializer.pyOCI 的请求体需要 OCI SDK 原生消息对象浏览器收集的 DOM 快照、工具调用结果和图像信息都必须先转换。这一职责由 serializer.py 中的OCIRawMessageSerializer承担serialize_messages()把 browser-use 的UserMessage/SystemMessage/AssistantMessage映射为 OCIMessage角色对应USER/SYSTEM/ASSISTANT内容为字符串时包成TextContent内容为列表时逐一处理text、image_url、refusal类型的内容块图片统一转成ImageContentdata:image/...的 base64 数据按原样传给 OCIserialize_messages_for_cohere()由于 Cohere 请求体是单字符串message此方法把整个对话历史按System: .../User: .../Assistant: ...前缀拼接成一段文本图片统一替换为[Image: base64_data]/[Image: external_url]占位符避免超长 base64 数据挤占 token。请求构造与异步化chat.py_make_request()先按 Provider 选择请求体CohereCohereChatRequest字段包括message、max_tokens、temperature、frequency_penalty、top_p、top_kMeta/xAIGenericChatRequest设置api_formatAPI_FORMAT_GENERIC、messages数组及对应支持的采样参数。随后统一构造OnDemandServingMode(model_id...)与ChatDetails含serving_mode、chat_request、compartment_id调用同步 SDK 方法client.chat(chat_details)。由于 OCI Python SDK 本身是同步的模块通过asyncio.get_event_loop().run_in_executor(None, _sync_request)将阻塞调用放进线程池从而为 browser-use 提供非阻塞的 async 体验。响应解析文本提取_extract_contentCohere 响应取chat_response.textMeta/xAI 响应遍历choices[0].message.content中的文本块并拼接用量统计_extract_usage从response.data.chat_response.usage提取prompt_tokens、completion_tokens、total_tokens封装为 views.py 中的ChatInvokeUsage供后续成本统计使用。典型响应格式OCI GenAI 原始 API 的响应结构如下与 README 一致{ chat_response: { api_format: GENERIC, choices: [ { finish_reason: stop, index: 0, message: { content: [ { text: Response text here, type: TEXT } ], role: ASSISTANT } } ], usage: { completion_tokens: 18, prompt_tokens: 38, total_tokens: 56 } } }错误处理与异常体系模块复用了 browser_use/llm/exceptions.py 的异常体系ModelRateLimitErrorOCI 返回 429限流时抛出携带status_code429ModelProviderError其他 4xx/5xx 错误携带对应status_code与模型名其余未知异常在ainvoke最外层统一包装为ModelProviderError(status_code500)。限流场景下错误会原样向上冒泡raise交由 browser-use 的 Agent 重试/回退逻辑处理不会在模型层被吞掉。与 Langchain 集成的对比README 给出了该模块与基于 Langchain 的 OCI 集成的对比特性OCI Raw APILangchain 集成依赖仅 OCI SDKLangchain OCI SDK性能直接 API 调用多一层抽象控制力对请求完全掌控受 Langchain 接口限制更新节奏跟随 OCI SDK 官方更新依赖 Langchain 更新复杂度更低更高这也解释了模块命名的由来oci_raw即绕过 Langchain、直连 OCI 原始 API。故障排查认证失败检查~/.oci/config内容、profile 名与 IAM 权限本地可用oci setup config重新生成配置模型找不到Model Not Found核对model_idOCID 是否正确、模型是否在你的 compartment 中可用限流429集成已自动映射为ModelRateLimitError可结合 Agent 的重试策略处理API 格式不匹配出现 Chat requests apiFormat must match serving models apiFormat 时说明provider与模型不匹配——Meta 模型用providermeta、Cohere 用providercohere、xAI 用providerxai端点/网络问题确认service_endpoint的 region 与模型所在 region 一致如us-chicago-1调试模式README 提到verbose参数可在未来版本中开启详细日志当前版本尚未实现。延伸阅读完整示例examples/models/oci_models.py核心实现browser_use/llm/oci_raw/chat.py、serializer.py依赖声明与可选安装pyproject.toml消息类型定义browser_use/llm/messages.py异常体系browser_use/llm/exceptions.py模型接入协议browser_use/llm/base.py赞分享人工智能AI Agent浏览器控制GUI 自动化MCP 服务【免费下载链接】browser-useAgents that use the browser.项目地址https://gitcode.com/GitHub_Trending/br/browser-use点击查看免费下载相关推荐Oracle Cloud Infrastructure OCI DNS 接入 Kubernetes ExternalDNS 完整实战指南Oracle Cloud Infrastructure OCI DNS 接入 Kubernetes ExternalDNS 完整实战指南 本篇指南讲解如何在 K云原生LlamaIndex OCIGenAIEmbeddings 深度解析OCI Generative AI 嵌入集成的 API 与实现细节LlamaIndex OCIGenAIEmbeddings 深度解析OCI Generative AI 嵌入集成的 API 与实现细节 本文以 LlamaIn人工智能RAG大模型10分钟上手autocannon与Oracle Cloud集成的OCI性能测试实战指南10分钟上手autocannon与Oracle Cloud集成的OCI性能测试实战指南 你是否曾在Oracle Cloud InfrastructureOC性能测试测试开发工具上一篇Aspire TypeScript AppHost 托管 Bun 应用AddBunApp 两种启动方式实战解析下一篇Lightdash 的 Okteto 预览环境运维脚本指南快照、SSH 与数据库调试全流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询