Llama模型
Meta在Llama3.2系列模型中首次推出了支持视觉任务的模型,有11B和90B两种模型。
当前在大模型服务平台部署的服务来自于ModelScope社区模型:
Llama-3.2-11B-Vision-Instruct,模型版本 : master
Llama-3.2-90B-Vision-Instruct,模型版本 : master
Llama 3.2 指令调优的纯文本模型针对多语言对话应用场景进行了优化,包括代理检索和摘要任务。在常见的行业基准测试中,它们的表现优于许多现有的开源和闭源聊天模型。
当前在大模型服务平台部署的服务来自于ModelScope社区模型:
Llama-3.2-1B-Instruct,模型版本 : master
Llama-3.2-3B-Instruct,模型版本 : master
Llama 3.1 系列是Meta推出的开源大语言模型,其 405B 版本是首个媲美顶级商业模型的开源大语言模型。
当前在大模型服务平台部署的服务来自于ModelScope社区模型:
Llama3.1-8b-instruct,模型版本 : master
Llama3.1-70b-instruct,模型版本 : master
Llama3.1-405b-instruct,模型版本 : master
Llama3系列是来自Meta开发并公开发布的最新大型语言模型(LLMs)。该系列模型提供了多种参数大小(8B、70B等)的版本。相较于Llama2系列模型,Llama3系列在模型结构上没有重大变化,但是训练数据量进行了极大扩充,从 Llama2系列的2T Tokens扩大到了Llama3的15T Tokens,其中代码数据扩充了4倍。
当前在大模型服务平台部署的服务来自于ModelScope社区模型:
llama3-8b-instruct,模型版本 : master
llama3-70b-instruct,模型版本 : master
Llama 2系列是来自Meta开发并公开发布的大型语言模型(LLMs)。该系列模型提供了多种参数大小(7B、13B和70B等)的版本,并同时提供了预训练和针对对话场景的微调版本。Llama 2系列使用了2T token进行训练,相比于LLama多出40%,上下文长度从LLama的2048增加到4096,可以理解更长的文本,在多个公开基准测试上超过了已有的开源模型。采用了高质量的数据进行微调和基于人工反馈的强化学习训练,具有较高的可靠性和安全性。
当前在大模型服务平台部署的服务来自于ModelScope社区模型:
llama2-7b-chat-v2,模型版本 : v1.0.2
llama2-13b-chat-v2,模型版本:v1.0.2
SDK使用
您可以通过SDK实现单轮对话、多轮对话、流式输出、function call等多种功能。
前提条件
DashScope SDK提供了Python和Java两个版本,请确保您已安装最新版SDK安装SDK。
已开通服务并获得API-KEY:获取API Key。
我们推荐您将API-KEY配置到环境变量中以降低API-KEY的泄漏风险,详情可参考配置API Key到环境变量。您也可以在代码中配置API-KEY,但是泄漏风险会增加。
说明当您使用DashScope Java SDK时,为了效率您应该尽可能复用Generation以及其他请求对象,但对象(如Generation)不是线程安全的,您应该采取一定的措施,比如及时关闭进程、管理同步机制等,来确保对象的安全性。
仅输入文本
以下示例展示了调用Llama3.2纯文本模型对一个用户指令进行响应的代码。
Python
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()
返回结果
我是由开源的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我是一个强大的语言模型,可以帮助人们通过我的服务来解决问题、交流、学习等多种方面的需求。"
Java
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);
}
}
返回结果
我是由开源的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我是一个强大的语言模型,可以帮助人们通过我的服务来解决问题、交流、学习等多种方面的需求。"
curl
curl --location "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "llama3.2-1b-instruct",
"input":{
"messages":[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "介绍一下自己?"
}
]
},
"parameters": {
"result_format": "message"
}
}'
返回结果
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "我是一个人工智能助手,能回答你的问题,提供信息和帮助你完成任务。"
}
}
]
},
"usage": {
"total_tokens": 47,
"output_tokens": 22,
"input_tokens": 25
},
"request_id": "adbd525e-7a21-90f2-a914-ba65f5b626f0"
}
输入文本和图像
以下示例展示了调用Llama3.2视觉理解模型对一个用户输入的图像进行响应的代码。
Python
示例代码
from http import HTTPStatus
import os
import dashscope
def call_with_messages():
messages = [
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},
{"text": "这是什么,请用中文回答?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='llama3.2-90b-vision-instruct',
messages=messages,
)
if response.status_code == HTTPStatus.OK:
print(response.output.choices[0].message.content[0]["text"])
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()
返回结果
这是一张照片,照片中是一只狗和一个女孩在海滩上互动。狗坐在沙滩上,伸出前爪,好像在和女孩握手。女孩也伸出手,好像在和狗握手。他们的表情都很开心,好像在玩游戏。背景是海滩和大海,天气看起来很好。整体来说,这张照片很温馨,好像是在记录一只狗和它的主人之间的亲密关系。
Java
示例代码
import java.util.Arrays;
import java.util.Collections;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
public class Main {
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"),
Collections.singletonMap("text", "这是什么?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.model("llama3.2-90b-vision-instruct")
.message(userMessage)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
返回结果
这是一张照片,照片中有一个女孩和一只狗。女孩坐在沙滩上,狗坐在她旁边。女孩伸出手,狗也伸出爪子,好像在和女孩握手。女孩和狗都很开心的样子。背景是海滩和海洋,天气看起来很好。
curl
示例代码
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "llama3.2-90b-vision-instruct",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},
{"text": "这是什么?"}
]
}
]
}
}'
返回结果
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "这是一张照片,照片中有一个女孩和一只狗。女孩坐在沙滩上,狗坐在她旁边。女孩伸出手,狗也伸出爪子,好像在和女孩握手。女孩和狗都很开心的样子。背景是海滩和海洋,天气看起来很好。"
}
]
}
}
]
},
"usage": {
"output_tokens": 79,
"input_tokens": 45
},
"request_id": "c3e73869-77a5-9f29-a1cf-a42b7800805f"
}