Fuyu-8B
更新时间:2024-09-05
Fuyu-8B是由Adept AI训练的多模态图像理解模型,可以支持多样的图像分辨率,回答图形图表有关问题。模型在视觉问答和图像描述等任务上表现良好。本文介绍了相关API。
- 模型版本为fuyu-8b
功能介绍
调用本接口,用于根据用户输入的图像和文字,回答图像有关问题。
在线调试
百度智能云千帆提供了 API在线调试平台-示例代码 ,用于帮助开发者调试接口,平台集成快速检索、查看开发文档、查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用,更多内容请查看API在线调试介绍。
SDK调用
使用说明
- 支持通过以下SDK调用该模型API:千帆Python、Java和Node.js SDK。
- SDK调用流程及鉴权介绍,请查看SDK安装及使用流程。
调用示例
import os
import qianfan
import base64
from qianfan.resources import Image2Text
# 使用安全认证AK/SK鉴权,通过环境变量方式初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"
# 请替换图片对应的路径地址
with open("/xxx/.../image.jpg", "rb") as image_file:
encoded_string = base64.b64encode(image_file.read()).decode()
# 使用model参数
i2t = Image2Text(model="Fuyu-8B")
resp = i2t.do(prompt="分析一下图片画了什么", image=encoded_string)
print(resp["result"])
import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.model.image.Image2TextResponse;
public class test {
public static void main(String[] args) throws IllegalAccessException {
// 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
Qianfan qianfan = new Qianfan("your_iam_ak", "your_iam_sk");
// 调用大模型
Image2TextResponse response = qianfan.image2Text().model("Fuyu-8B")
.image("/9j/4AAQSkZJRgABAQAAAQABAAD/xxxxxx") # 请替换图片的base64编码
.prompt("introduce the picture")
.execute();
System.out.println(response.getResult());
}
}
import {setEnvVariable} from '@baiducloud/qianfan'
import {Image2Text} from "@baiducloud/qianfan";
// 使用安全认证AK/SK鉴权,通过环境变量方式初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
setEnvVariable('QIANFAN_AK','your_iam_ak');
setEnvVariable('QIANFAN_SK','your_iam_sk');
// 调用大模型
const client = new Image2Text();
async function main() {
const resp = await client.image2Text({
prompt: '分析一下图片画了什么',
image: 'iVBORw0KGgoAAAANSUhEUgAAB4IAAxxxxxxxxxxxx=', // 请替换图片的base64编码
},'Fuyu-8B'
);
console.log(resp.result)
}
main();
返回示例
The image portray s a black and white portrait of a beautiful young woman . She is wearing a red hat, giving her a hat -like appearance. The black and white nature of the photograph enhances the visual appeal and adds depth to the image .
The image portray s a black and white portrait of a beautiful young woman . She is wearing a red hat, giving her a hat -like appearance. The black and white nature of the photograph enhances the visual appeal and adds depth to the image .
The image portray s a black and white portrait of a beautiful young woman . She is wearing a red hat, giving her a hat -like appearance. The black and white nature of the photograph enhances the visual appeal and adds depth to the image .
请求参数
注意:以下为Python SDK参数说明,其他SDK参数相关说明请参考Java SDK参数相关说明、Node.js SDK参数相关说明。
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
prompt | string | 是 | 请求信息 |
image | string | 是 | 图片数据,说明: base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,注意请去掉头部 |
model | string | 否 | 模型名称,用于指定平台支持预置服务的模型,说明: (1)如果调用预置服务,即调用本文API,该字段必填,且为固定值Fuyu-8B (2)如果指定用户自行发布的模型服务,该字段不填写,需填写endpoint字段,详见参数endpoint说明 |
endpoint | string | 否 | 用于指定用户自行发布的模型服务,说明: (1)如果需指定用户自行发布的模型服务,endpoint字段为必填 (2)该字段值可以通过查看服务地址获取:打开模型服务-模型推理-我的服务页面,选择创建的服务-点击详情页查看服务地址,endpoint值为 https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/image2text/ 后面的地址,如下图所示注意: 在创建服务页面,选择模型后,API地址会自动新增个后缀。例如选择模型Fuyu-8B,输入API地址为“fuyu8btest”,endpoint的取值即为“q24xxxb6_fuyu8btest”,如下图所示,如何发布服务请参考发布平台预置的模型服务 |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认False |
retry_count | int | 否 | 网络调用失败重试次数,默认1次 |
request_timeout | float | 否 | 请求超时时间,默认60秒 |
request_id | str | 否 | 网络请求的id,若不填写则自动生成 |
backoff_factor | float | 否 | 网络调用失败重试的等待时长增长因子,默认为0。每次重试,等待时长会加上超时时长乘该因子的时间。 |
temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)范围 (0, 1.0],不能为0 |
top_k | int | 否 | Top-K 采样参数,在每轮token生成时,保留k个概率最高的token作为候选。说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围:正整数 |
top_p | float | 否 | 说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围 [0, 1.0] |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)取值范围:[1.0, 2.0] |
stop | List[String] | 否 | 生成停止标识。当模型生成结果以stop中某个元素结尾时,停止文本生成。说明: (1)每个元素长度不超过20字符。 (2)最多4个元素 |
user_id | string | 否 | 表示最终用户的唯一标识符 |
返回参数
名称 | 类型 | 描述 |
---|---|---|
id | string | 本轮对话的id |
object | string | 回包类型。 completion:文本生成返回 |
created | int | 时间戳 |
sentence_id | int | 表示当前子句的序号。只有在流式接口模式下会返回该字段 |
is_end | bool | 表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段 |
result | string | 对话返回结果 |
is_safe | int | 说明: · 1:表示输入内容无安全风险 · 0:表示输入内容有安全风险 |
usage | usage | token统计信息 |
usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数 |
completion_tokens | int | 回答tokens数 |
total_tokens | int | tokens总数 |
HTTP调用
鉴权说明
本文API,支持2种鉴权方式。不同鉴权方式,调用方式不同,使用Header、Query参数不同,详见本文请求说明。开发者可以选择以下任一种方式进行鉴权。
请求说明
- 基本信息
请求地址: https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/image2text/fuyu_8b
请求方式: POST
- Header参数
根据不同鉴权方式,查看对应Header参数。
访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
基于安全认证AK/SK进行签名计算鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
x-bce-date | string | 否 | 当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于验证请求合法性的认证信息,更多内容请参考鉴权认证机制,签名工具可参考IAM签名工具 |
- Query参数
只有访问凭证access_token鉴权方式,需使用Query参数。
访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
access_token | string | 是 | 通过API Key和Secret Key获取的access_token,参考Access Token获取 |
- Body参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
prompt | string | 是 | 请求信息 |
image | string | 是 | 图片数据,说明: base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,注意请去掉头部 |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认false |
temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)范围 (0, 1.0],不能为0 |
top_k | int | 否 | Top-K 采样参数,在每轮token生成时,保留k个概率最高的token作为候选。说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围:正整数 |
top_p | float | 否 | 说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围 [0, 1.0] |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)取值范围:[1.0, 2.0] |
stop | List(String) | 否 | 生成停止标识。当模型生成结果以stop中某个元素结尾时,停止文本生成。说明: (1)每个元素长度不超过20字符。 (2)最多4个元素 |
user_id | string | 否 | 表示最终用户的唯一标识符 |
响应说明
名称 | 类型 | 描述 |
---|---|---|
id | string | 本轮对话的id |
object | string | 回包类型。 completion:文本生成返回 |
created | int | 时间戳 |
sentence_id | int | 表示当前子句的序号。只有在流式接口模式下会返回该字段 |
is_end | bool | 表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段 |
result | string | 对话返回结果 |
is_safe | int | 说明: · 1:表示输入内容无安全风险 · 0:表示输入内容有安全风险 |
usage | usage | token统计信息 |
usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数 |
completion_tokens | int | 回答tokens数 |
total_tokens | int | tokens总数 |
请求示例
以访问凭证access_token鉴权方式为例,说明如何调用API,示例如下。
# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“;替换示例中的创建服务时填写的API名称
curl -X POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/image2text/fuyu_8b?access_token=[步骤一调用接口获取的access_token]' -d '{
"prompt": "introduce the picture",
"image": "9j/4AAQSkZJRgABAQAAAQABAAD/xxxxx"
}'
import requests
import json
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/image2text/fuyu_8b?access_token=" + get_access_token()
payload = json.dumps({
"prompt": "introduce the picture",
"image": "9j/4AAQSkZJRgABAQAAAQABAAD/xxxxx"
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
响应示例
{
"id": "as-th7f8y0ckj",
"object": "chat.completion",
"created": 1702964273,
"result": "The image depicts a dining table with multiple bowls, containing various food items, including rice and meat. The bowl s are placed on different sides of the table, and chopsticks can be seen placed near the bowls. In addition to the bowl s, there are two spoons, one closer to the left side of the table and the other towards the center. The table is also accompanied by a cup , placed at the top left corner.",
"is_safe": 1,
"usage": {
"prompt_tokens": 3,
"completion_tokens": 98,
"total_tokens": 101
}
}
错误码
如果请求错误,服务器返回的JSON文本包含以下参数。
名称 | 描述 |
---|---|
error_code | 错误码 |
error_msg | 错误描述信息,帮助理解和解决发生的错误 |
例如Access Token失效返回以下内容,需要重新获取新的Access Token再次请求。
{
"error_code": 110,
"error_msg": "Access token invalid or no longer valid"
}
千帆大模型平台相关错误码,请查看错误码说明。