🚀 OpenHermes-Llama-3B
OpenHermes-Llama-3B 是一个基于 OpenLlama-3B 微调的模型,可用于角色扮演、指令遵循和代码生成。

该 Logo 由 Dalle 人工智能生成
有关如何进行微调的指南,请查看此博客 文章。
🚀 快速开始
本部分将为你简要介绍 OpenHermes-Llama-3B 模型,帮助你快速了解其用途。
✨ 主要特性
- 开源数据集微调:OpenHermes-Lllama_3B 是基于 Hermes 数据集进行微调的,该数据集完全开源。
- 多源数据训练:它在 15000 条主要由 GPT - 4 生成的数据上进行训练,这些数据来自 AI 领域的多个开放数据集,包括 GPTeacher、WizardLM、Airoboros GPT - 4、Camel - AI 的领域专家数据集、CodeAlpaca、GPT4 - LLM 和 Unnatural Instructions 等。
- 能力提升显著:与 OpenLlama - 3B 基础模型相比,OpenHermes-Lllama-3B 在编码能力和通用指令遵循方面有了很大的改进。
📚 详细文档
模型描述
OpenHermes-Lllama_3B 是对 Hermes 数据集进行微调得到的模型,该数据集完全开源!它在 15000 条主要由 GPT - 4 生成的数据上进行训练,这些数据来自 AI 领域的多个开放数据集,包括:
- GPTeacher - 由 Teknium 提供的通用指令、角色扮演 v1、角色扮演 v2 和代码指令数据集。
- WizardLM (v1, evol_instruct 70k) - 由 WizardLM 团队/nlpxucan 提供。
- Airoboros GPT - 4 (v1.0) - 由 JonDurbin 提供。
- Camel - AI 的领域专家数据集 - 由 Camel - AI 团队提供。
- CodeAlpaca - 由 Sahil2801 提供。
- GPT4 - LLM 和 Unnatural Instructions - 由微软提供。
OpenHermes-Lllama-3B 相较于 OpenLlama - 3B 基础模型,在编码能力和通用指令遵循方面有了很大的提升。你可以在下面看到前后输出的对比。
示例输出
编写代码
问题:编写一个带有速率限制的 Fast API 端点
OpenHermes-Llama-3B 输出

基础模型输出
- 创建一个新的 FastAPI 应用
- 创建一个新的端点
- 创建一个新的速率限制中间件
- 创建一个新的速率限制规则
- 创建一个新的速率限制后端
- 创建一个新的速率限制后端
规划行程
问题:为我规划一个为期 3 天的意大利旅行行程
OpenHermes-Llama-3B 输出
您好,我很乐意帮助您规划一个为期 3 天的意大利旅行行程。以下是一个示例行程:
- 第一天:
- 上午:抵达罗马,入住酒店。
- 下午:参观罗马斗兽场、罗马广场和万神殿。
- 晚上:在当地餐厅用餐,享受罗马的夜生活。
- 第二天:
- 上午:参观梵蒂冈博物馆、圣彼得大教堂和西斯廷教堂。
- 下午:参加意大利首都的导游团。
- 晚上:在当地餐厅用餐,享受罗马的夜生活。
- 第三天:
- 上午:参观许愿池、万神殿和罗马斗兽场。
- 下午:参加意大利首都的导游团。
- 晚上:在当地餐厅用餐,享受罗马的夜生活。
你还可以添加对其他景点的参观,如卡比托利欧博物馆、帕拉蒂尼山和西班牙广场。
希望这个行程能帮助您规划意大利之行。如果您有任何问题或需要进一步的帮助,请告诉我。
基础模型输出
您好,我是一名旅行社代理人,我可以帮助您规划旅行行程。我可以为您提供以下服务:
- 航班预订
- 酒店预订
- 汽车租赁
- 旅游预订
- 签证办理
- 旅行保险
- 机场接送
- 机场接机
- 机场送机
- 机场贵宾休息室
- 机场贵宾休息室接机
- 机场贵宾休息室送机
解释概念
问题:解释 Go 语言的结构体
OpenHermes-Llama-3B 输出
Go 语言的结构体是一种在 Go 中定义数据类型的方式。它是一组字段的集合,每个字段都是特定类型的值。这些字段按层次结构排列,并通过接口连接。
示例:
type User struct {
Name string
Age int
Email string
}
在这个示例中,User
结构体包含一个 Name
字段、一个 Age
字段、一个 Email
字段和其他一些字段。Name
字段的类型是字符串,Age
字段的类型是整数,Email
字段的类型是字符串。User
结构体通过接口与其他结构体相连,例如 User
类型的接口。
Go 语言中结构体的主要优点是,它们可以以比传统数组或映射更灵活、更易用的方式表示数据。结构体还允许创建更复杂的数据结构,而无需嵌套数组或映射。
以下是一个如何使用 User
结构体的示例:
package main
import (
"fmt"
"strings"
)
type User struct {
Name string
Age int
Email string
}
func main() {
user1 := User{"John", 25, "john@example.com"}
user2 := User{"Mary", 22, "mary@example.com"}
fmt.Printf("User 1: %s (%d)\nUser 2: %s (%d)\n", user1.Name, user1.Age, user2.Name, user2.Age)
email1 := user1.Email
email2 := user2.Email
fmt.Printf("User 1's email: %s\nUser 2's email: %s\n", email1, email2)
}
在这个示例中,User
结构体用于表示两个不同的用户。Name
字段用于存储用户的姓名,Age
字段用于存储他们的年龄,Email
字段用于存储他们的电子邮件。main
函数打印出用户的姓名和年龄,以及用逗号分隔的电子邮件。
总之,Go 语言的结构体是一种在 Go 中定义数据类型的方式。它是一组字段的集合,每个字段都是特定类型的值。这些字段按层次结构排列,并通过接口连接。Go 语言中结构体的主要优点是,它们可以以比传统数组或映射更灵活、更易用的方式表示数据。
基础模型输出
*结构体是一组命名的变量集合。
基准测试比较
HumanEval
模型 |
单样本通过率 |
openllama-3b-v2 (基础模型) |
8.1% |
openhermes-llama-3b (微调模型) |
9.8% |
📄 许可证
本模型采用 Apache - 2.0 许可证。