Llama模型(仅文本输入)API参考

Llama(仅文本输入)模型

LlamaMeta开发并公开发布的大语言模型,目前Llama模型不仅可以输入文本信息,还能够同时输入文本和图像两种类型的数据;本文档讲解仅文本输入的模型。支持文本和图像输入的模型详情,请阅读Llama模型(输入文本和图像)API参考

SDK使用

前提条件

您需要已获取API Key配置API Key到环境变量。如果通过SDK调用,还需要安装DashScope SDK
  • 说明

    当您使用DashScope Java SDK时,为了效率您应该尽可能复用Generation以及其他请求对象,但对象(如Generation)不是线程安全的,您应该采取一定的措施,比如及时关闭进程、管理同步机制等,来确保对象安全。

简单示例

以下示例展示了调用Llama系列模型对一个用户指令进行响应的代码。

from http import HTTPStatus
import os
import dashscope


def call_with_messages():
    messages = [{'role': 'system', 'content': 'You are a helpful assistant.'},
                {'role': 'user', 'content': '介绍一下自己'}]
    response = dashscope.Generation.call(
        api_key=os.getenv('DASHSCOPE_API_KEY'),
        model='llama3.2-1b-instruct',
        messages=messages,
        result_format='message',  # set the result to be "message" format.
    )
    if response.status_code == HTTPStatus.OK:
        print(response)
    else:
        print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
            response.request_id, response.status_code,
            response.code, response.message
        ))

if __name__ == '__main__':
    call_with_messages()
import java.util.ArrayList;
import java.util.List;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {
    public static void usage()
            throws NoApiKeyException, ApiException, InputRequiredException {
        List<Message> messages = new ArrayList<>();
        Message systemMsg = Message.builder().role(Role.SYSTEM.getValue()).content("You are a helpful assistant.").build();
        Message userMsg = Message.builder().role(Role.USER.getValue()).content("介绍一下自己").build();
        messages.add(systemMsg);
        messages.add(userMsg);
        GenerationParam param = GenerationParam.builder()
                .model("llama3.2-1b-instruct")
                .messages(messages)
                .build();
        Generation gen = new Generation();
        GenerationResult result = gen.call(param);
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        try {
            usage();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

返回结果

{
    "status_code": 200,
    "request_id": "ada7d376-449f-901f-bea5-9e483b44f1f6",
    "code": "",
    "message": "",
    "output": {
        "text": null,
        "finish_reason": null,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": "我是由开源的AI技术构建的,属于语言模型。 我是一种语言处理模型,能够理解和生成 human-level的语句。  我的主要功能包括:\n\n- 语言理解:我能够理解人为输入的语句,包括问题、陈述、提问等。\n- 语言生成:我能够生成语句、短文、文章等。\n- 问答:我能够回答问题,包括基础问题、知识问答、情感分析等。\n- 消息处理:我能够处理不同类型的消息,包括信息、评论、事件等。\n\n我是基于 transformer 模型的,使用了开源的 transformer_framework。 transformer_framework 是一个用于自然语言处理的开源框架,提供了多个层级的神经网络结构,能够处理不同类型的语句。\n\n我是由多个小型模型组合而成的,包括:\n\n- 序列 Tokenizer:能够将输入语句分解为小型token。\n- 词典 Embedding:能够将词汇转换为向量。\n- 分子和关键字Attention:能够根据词汇对句子进行 attention,找出关键词。\n- 分子和关键字Self-Attention:能够根据词汇对句子进行 self-attention,找出关键词。\n- 分子和关键字Pooling:能够将词汇对句子进行 pooling,找出关键词。\n\n我是一个强大的语言模型,可以帮助人们通过我的服务来解决问题、交流、学习等多种方面的需求。"
                }
            }
        ]
    },
    "usage": {
        "input_tokens": 44,
        "output_tokens": 330,
        "total_tokens": 374
    }
}

输入参数

参数

类型

默认值

说明

model

string

-

模型名,可配置为已申请的 Llama 系列的模型

messages

list[dict]

-

用户输入的内容,dict内主要包含2key:rolecontent,其中role支持user、assistant、system,content为对应role的文本输入。

result_format

string

-

用户返回的内容类型,默认为text,当输入格式为messages时可配置为message。

返回参数

返回参数

类型

说明

status_code

integer

200(HTTPStatus.OK)表示请求成功,否则表示请求失败,可以通过code获取错误码,通过message字段获取错误详细信息。

request_Id

string

系统生成的标志本次调用的id。

code

string

表示请求失败,表示错误码,成功忽略。

message

string

失败,表示失败详细信息,成功忽略。

output

object

调用结果信息,对于Llama2模型,包含输出text。

output.text

string

模型生成回复。

usage.input_tokens

integer

用户输入文本转换成Token后的长度。

usage.output_tokens

integer

模型生成回复转换为Token后的长度。

HTTP调用接口

功能描述

Llama系列模型也同时提供了HTTP接口,您可以根据自己的需求选择。

前提条件

  • 已开通服务并获得API-KEY:获取API Key

  • 我们推荐您将API-KEY配置到环境变量中以降低API-KEY的泄漏风险,详情可参考配置API Key到环境变量。您也可以在代码中配置API-KEY,但是泄漏风险会增加。

提交接口调用

POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation

入参描述

传参方式

字段

类型

必选

描述

示例值

Header

Content-Type

string

请求类型:application/json

application/json

Authorization

string

API-Key,例如:Bearer d1**2a

Bearer d1**2a

X-DashScope-WorkSpace

string

指明本次调用需要使用的workspace;需要注意的是,对于子账号Apikey调用,此参数为必选项,子账号必须归属于某个workspace才能调用;对于主账号Apikey此项为可选项,添加则使用对应的workspace身份,不添加则使用主账号身份。

ws_QTggmeAxxxxx

Body

model

string

指明需要调用的模型,目前可选

Llama2-7b-chat-v2,

Llama2-13b-chat-v2;

Llama2-7b-chat-v2

input.prompt

string

用户当前输入的期望模型执行指令,7b模型最长不超过2048 tokens,13b模型最长不超过4096 tokens

hello, who are you?

出参描述

字段

类型

描述

示例值

output.text

string

本次请求的算法输出内容。

hello, who are you?\n\nI am an artificial intelligence designed to assist and communicate ... ...

usage.output_tokens

integer

本次请求算法输出内容的 token 数目。

104

usage.input_tokens

integer

本次请求用户输入内容的 token 数目。

41

request_id

string

本次请求的系统唯一码

fbd7e41a-363c-938a-81be-8ae0f9fbdb3d

请求示例

以下示例展示通过CURL命令来调用Llama系列模型的脚本。

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
    "model": "llama3.2-3b-instruct",
    "input":{
        "messages":[
            {"role":"user","content":"介绍一下自己"}
        ]
    }
}'

响应示例

{
    "output": {
        "finish_reason": "stop",
        "text": "我可以回答一些问题,或者帮助你练习语言。"
    },
    "usage": {
        "total_tokens": 27,
        "output_tokens": 14,
        "input_tokens": 13
    },
    "request_id": "66545885-3f17-9c6c-ad25-852bb090032e"
}

异常响应示例

在访问请求出错的情况下,输出的结果中会通过 code 和 message 指明出错原因。

{
    "code":"InvalidApiKey",
    "message":"Invalid API-key provided.",
    "request_id":"fb53c4ec-1c12-4fc4-a580-cdb7c3261fc1"
}

模型列表、计费和免费额度

模型名称

上下文长度

最大输入

输入输出成本

免费额度

(注)

(Token数)

llama3.2-3b-instruct

32,000

30,000

目前仅供免费体验。

免费额度用完后不可调用,敬请关注后续动态。

100Token(需申请)

有效期:百炼开通后180天内。

llama3.2-1b-instruct

llama3.1-405b-instruct

llama3.1-70b-instruct

llama3.1-8b-instruct

llama3-70b-instruct

8,000

8,000

llama3-8b-instruct

llama2-13b-chat-v2

4,000

4,000

llama2-7b-chat-v2

状态码说明

大模型服务平台通用状态码请查阅:错误码