├── .gitignore
├── README.md
├── Test_Alpaca_Lora_with_Colab.ipynb
├── azure_gpt_35_code.ipynb
├── data
├── Chinook.db
├── Chinook_Sqlite.sql
├── alpaca_data.json
├── autopilot_new_features_summary.txt
├── autopilot_report.txt
├── chinese_sp_model
│ └── chinese_sp.model
├── ecommerce_faq.txt
├── ecommerce_products.csv
├── fine_food_reviews_with_embeddings_1k.csv
├── llama_tokenizer
│ ├── special_tokens_map.json
│ ├── tokenizer.json
│ ├── tokenizer.model
│ └── tokenizer_config.json
├── mr_fujino
│ └── mr_fujino.txt
├── prepared_data_mactalk.csv
├── prepared_data_mactalk_prepared.jsonl
├── tesla_autopilot_progress.txt
├── tesla_autopilot_report.txt
├── tesla_autopilot_search_results.txt
├── ultraman_stories.csv
├── ultraman_stories_more.csv
└── vicuna_dummy.json
├── data_anonymizer.ipynb
├── requirements.txt
├── try_vicuna.ipynb
├── vicuna
├── README.md
├── training_dummy.sh
├── training_model.sh
└── upload_to_huggingface.sh
├── week1.ipynb
├── week2.ipynb
├── week3.ipynb
└── week4.ipynb
/.gitignore:
--------------------------------------------------------------------------------
1 | data/GoogleNews-vectors-negative300.bin.gz
2 | data/cc.en.300.bin
3 | data/*.parquet
4 | data/toutiao_cat_data*.csv
5 | data/product_names.csv
6 | .DS_Store
7 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # mactalk-ai-course
2 |
3 | ```
4 | conda create -n mactalk python=3.10
5 | conda activate mactalk
6 | pip install -r requirements.txt
7 | python -m spacy download zh_core_web_sm
8 | ```
--------------------------------------------------------------------------------
/azure_gpt_35_code.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import openai\n",
10 | "import os\n",
11 | "\n",
12 | "openai.api_key = os.environ.get(\"OPENAI_API_KEY\")\n",
13 | "COMPLETION_MODEL = \"text-davinci-003\"\n",
14 | "\n",
15 | "def get_response(prompt):\n",
16 | " completions = openai.Completion.create(\n",
17 | " engine=COMPLETION_MODEL,\n",
18 | " prompt=prompt,\n",
19 | " max_tokens=512,\n",
20 | " n=1,\n",
21 | " stop=None,\n",
22 | " temperature=0.0, \n",
23 | " )\n",
24 | " return completions.choices[0].text # type: ignore\n",
25 | "\n",
26 | "response = get_response(\"请写一段代码,演示创建一个和当前向量的 cosine similarity为0的向量,请只输出Python代码。\\n\")"
27 | ]
28 | },
29 | {
30 | "cell_type": "code",
31 | "execution_count": 2,
32 | "metadata": {},
33 | "outputs": [
34 | {
35 | "name": "stdout",
36 | "output_type": "stream",
37 | "text": [
38 | "\n",
39 | "import numpy as np\n",
40 | "\n",
41 | "# 创建一个当前向量\n",
42 | "cur_vector = np.array([1, 2, 3])\n",
43 | "\n",
44 | "# 创建一个和当前向量的cosine similarity为0的向量\n",
45 | "new_vector = np.array([-2, 4, -6])\n",
46 | "\n",
47 | "# 计算cosine similarity\n",
48 | "cos_sim = np.dot(cur_vector, new_vector) / (np.linalg.norm(cur_vector) * np.linalg.norm(new_vector))\n",
49 | "\n",
50 | "print(cos_sim)\n"
51 | ]
52 | }
53 | ],
54 | "source": [
55 | "print(response)"
56 | ]
57 | },
58 | {
59 | "cell_type": "code",
60 | "execution_count": 3,
61 | "metadata": {},
62 | "outputs": [
63 | {
64 | "name": "stdout",
65 | "output_type": "stream",
66 | "text": [
67 | "以下是一个简单的示例代码:\n",
68 | "\n",
69 | "```python\n",
70 | "import numpy as np\n",
71 | "\n",
72 | "# 定义当前向量\n",
73 | "current_vector = np.array([1, 2, 3])\n",
74 | "\n",
75 | "# 创建随机向量\n",
76 | "random_vector = np.random.rand(3)\n",
77 | "\n",
78 | "# 计算当前向量和随机向量的 cosine similarity\n",
79 | "cos_sim = np.dot(current_vector, random_vector) / (np.linalg.norm(current_vector) * np.linalg.norm(random_vector))\n",
80 | "\n",
81 | "# 如果 cosine similarity 不为0,则调整随机向量\n",
82 | "while cos_sim != 0:\n",
83 | " random_vector = np.random.rand(3)\n",
84 | " cos_sim = np.dot(current_vector, random_vector) / (np.linalg.norm(current_vector) * np.linalg.norm(random_vector))\n",
85 | "\n",
86 | "# 输出结果\n",
87 | "print(random_vector)\n",
88 | "```\n",
89 | "\n",
90 | "该代码首先定义了当前向量 `current_vector`,然后使用 `numpy` 库生成一个随机向量 `random_vector`。接着计算当前向量和随机向量的 cosine similarity,并在 while 循环中不断生成随机向量,直到其 cosine similarity 为0。最后输出生成的随机向量。\n"
91 | ]
92 | }
93 | ],
94 | "source": [
95 | "def get_gpt35_response(prompt):\n",
96 | " messages = []\n",
97 | " messages.append({\"role\": \"system\", \"content\": \"You are an useful AI assistent.\"\"\"})\n",
98 | " messages.append({\"role\": \"user\", \"content\": prompt})\n",
99 | " response = openai.ChatCompletion.create(\n",
100 | " model=\"gpt-3.5-turbo\",\n",
101 | " messages=messages,\n",
102 | " temperature=0.5,\n",
103 | " max_tokens=2048,\n",
104 | " top_p=1,\n",
105 | " )\n",
106 | " return response.choices[0].message.content # type: ignore\n",
107 | "\n",
108 | "response = get_gpt35_response(\"请写一段代码,演示创建一个和当前向量的 cosine similarity为0的向量,请只输出Python代码。\\n\")\n",
109 | "print(response)"
110 | ]
111 | },
112 | {
113 | "cell_type": "code",
114 | "execution_count": null,
115 | "metadata": {},
116 | "outputs": [],
117 | "source": []
118 | },
119 | {
120 | "cell_type": "code",
121 | "execution_count": 8,
122 | "metadata": {},
123 | "outputs": [],
124 | "source": [
125 | "import openai\n",
126 | "import os\n",
127 | "\n",
128 | "openai.api_key = os.environ.get(\"AZURE_OPENAI_API_KEY\")\n",
129 | "openai.api_base = \"https://geektime-openai.openai.azure.com/\"\n",
130 | "openai.api_type = \"azure\"\n",
131 | "openai.api_version = \"2023-03-15-preview\"\n",
132 | "\n",
133 | "COMPLETION_MODEL = \"gpt-35-turbo\"\n",
134 | "\n",
135 | "def get_response(prompt):\n",
136 | " completions = openai.Completion.create(\n",
137 | " engine=COMPLETION_MODEL,\n",
138 | " prompt=prompt,\n",
139 | " max_tokens=512,\n",
140 | " n=1,\n",
141 | " temperature=0.0, \n",
142 | " )\n",
143 | " return completions.choices[0].text # type: ignore\n",
144 | "\n",
145 | "response = get_response(\"请写一段代码,演示创建一个和当前向量的 cosine similarity为0的向量,请只输出Python代码。\\n\")"
146 | ]
147 | },
148 | {
149 | "cell_type": "code",
150 | "execution_count": 9,
151 | "metadata": {},
152 | "outputs": [
153 | {
154 | "name": "stdout",
155 | "output_type": "stream",
156 | "text": [
157 | "# 请注意,你创建的向量应该是一个numpy array,shape为(100,),并且每个元素都是float32类型。\n",
158 | "\n",
159 | "# 请在这里写代码\n",
160 | "import numpy as np\n",
161 | "v = np.random.rand(100).astype(np.float32)\n",
162 | "v = v - np.dot(v, w) / np.dot(w, w) * w\n",
163 | "v = v / np.linalg.norm(v)\n",
164 | "print(v)\n",
165 | "\n",
166 | "# 请不要修改下方代码\n",
167 | "assert v.shape == (100,)\n",
168 | "assert v.dtype == np.float32\n",
169 | "assert abs(np.dot(v, w) / (np.linalg.norm(v) * np.linalg.norm(w))) < 1e-6\n",
170 | "\n",
171 | "print(\"Pass.\")<|im_sep|>\n"
172 | ]
173 | }
174 | ],
175 | "source": [
176 | "print(response)"
177 | ]
178 | },
179 | {
180 | "cell_type": "code",
181 | "execution_count": 10,
182 | "metadata": {},
183 | "outputs": [
184 | {
185 | "name": "stdout",
186 | "output_type": "stream",
187 | "text": [
188 | "# 请注意,你创建的向量应该是一个numpy array,shape为(100,),并且每个元素都是float32类型。\n",
189 | "\n",
190 | "# 请在这里写代码\n",
191 | "import numpy as np\n",
192 | "v = np.random.rand(100).astype(np.float32)\n",
193 | "v = v - np.dot(v, w) / np.dot(w, w) * w\n",
194 | "v = v / np.linalg.norm(v)\n",
195 | "print(v)\n",
196 | "\n",
197 | "# 请不要修改下方代码\n",
198 | "assert v.shape == (100,)\n",
199 | "assert v.dtype == np.float32\n",
200 | "assert abs(np.dot(v, w) / (np.linalg.norm(v) * np.linalg.norm(w))) < 1e-6\n",
201 | "\n",
202 | "print(\"Pass.\")\n"
203 | ]
204 | }
205 | ],
206 | "source": [
207 | "\n",
208 | "def get_response(prompt):\n",
209 | " completions = openai.Completion.create(\n",
210 | " engine=COMPLETION_MODEL,\n",
211 | " prompt=prompt,\n",
212 | " max_tokens=512,\n",
213 | " n=1,\n",
214 | " temperature=0.0, \n",
215 | " stop=\"<|im_sep|>\"\n",
216 | " )\n",
217 | " return completions.choices[0].text # type: ignore\n",
218 | "\n",
219 | "response = get_response(\"请写一段代码,演示创建一个和当前向量的 cosine similarity为0的向量,请只输出Python代码。\\n\")\n",
220 | "print(response)"
221 | ]
222 | },
223 | {
224 | "cell_type": "code",
225 | "execution_count": null,
226 | "metadata": {},
227 | "outputs": [],
228 | "source": []
229 | }
230 | ],
231 | "metadata": {
232 | "kernelspec": {
233 | "display_name": "mactalk",
234 | "language": "python",
235 | "name": "python3"
236 | },
237 | "language_info": {
238 | "codemirror_mode": {
239 | "name": "ipython",
240 | "version": 3
241 | },
242 | "file_extension": ".py",
243 | "mimetype": "text/x-python",
244 | "name": "python",
245 | "nbconvert_exporter": "python",
246 | "pygments_lexer": "ipython3",
247 | "version": "3.10.11"
248 | },
249 | "orig_nbformat": 4
250 | },
251 | "nbformat": 4,
252 | "nbformat_minor": 2
253 | }
254 |
--------------------------------------------------------------------------------
/data/Chinook.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuwenhao/mactalk-ai-course/c12516363ef5e70b35c9edc89ddbe9d22ce5899e/data/Chinook.db
--------------------------------------------------------------------------------
/data/autopilot_new_features_summary.txt:
--------------------------------------------------------------------------------
1 | New Features Added to Tesla Autopilot:
2 |
3 | - Enhanced Autopilot Auto Lane Change: Assists in moving to an adjacent lane on the highway when Autosteer is engaged.
4 | - Autopark: Helps automatically parallel or perpendicular park your car, with a single touch.
5 | - Summon: Moves your car in and out of a tight space using the mobile app or key.
6 | - Service Mode Enhancements: New diagnostic screens for seat belts, the HVAC system, and a way to calibrate auto-appearing door handles on a Model S.
--------------------------------------------------------------------------------
/data/autopilot_report.txt:
--------------------------------------------------------------------------------
1 | Report on the Current Progress of Autopilot for Tesla:
2 |
3 | Tesla's Autopilot technology has come a long way since its introduction in 2015. The latest version of Autopilot, known as Enhanced Autopilot, includes several new features that make driving safer and more convenient. These features include:
4 |
5 | - Enhanced Autopilot Auto Lane Change: Assists in moving to an adjacent lane on the highway when Autosteer is engaged.
6 | - Autopark: Helps automatically parallel or perpendicular park your car, with a single touch.
7 | - Summon: Moves your car in and out of a tight space using the mobile app or key.
8 | - Service Mode Enhancements: New diagnostic screens for seat belts, the HVAC system, and a way to calibrate auto-appearing door handles on a Model S.
9 |
10 | Overall, Tesla's Autopilot technology continues to improve and provide drivers with a safer and more convenient driving experience.
--------------------------------------------------------------------------------
/data/chinese_sp_model/chinese_sp.model:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuwenhao/mactalk-ai-course/c12516363ef5e70b35c9edc89ddbe9d22ce5899e/data/chinese_sp_model/chinese_sp.model
--------------------------------------------------------------------------------
/data/ecommerce_faq.txt:
--------------------------------------------------------------------------------
1 | Q: 如何注册新帐户?
2 | A: 点击网站右上角的“注册”按钮,然后按照提示填写相关信息并设置密码。完成后,您将收到一封验证电子邮件。点击邮件中的链接以激活您的帐户。
3 |
4 | Q: 忘记密码怎么办?
5 | A: 点击登录页面的“忘记密码”链接,输入您的电子邮件地址。我们将向您发送一封包含重置密码链接的邮件。请点击链接并按照提示操作。
6 |
7 | Q: 如何更改帐户信息?
8 | A: 登录您的帐户,然后点击“我的帐户”以更改个人信息、收货地址等。
9 |
10 | Q: 如何下订单?
11 | A: 浏览商品并将想要购买的商品加入购物车。当您准备结算时,点击购物车图标,然后选择送货地址、付款方式和物流方式。确认订单详情后,点击“提交订单”。
12 |
13 | Q: 支持哪些支付方式?
14 | A: 我们支持支付宝、微信支付、银联在线支付、信用卡支付等多种支付方式。
15 |
16 | Q: 如何查看订单状态?
17 | A: 登录您的帐户,点击“我的订单”,在此页面上,您可以查看所有订单及其当前状态。
18 |
19 | Q: 如何取消订单?
20 | A: 在订单发货前,您可以登录帐户,进入“我的订单”页面取消订单。如果订单已发货,您需要联系客服协助处理。
21 |
22 | Q: 如何申请退款?
23 | A: 登录帐户,进入“我的订单”页面,选择要退款的订单并点击“申请退款”。请按照页面提示填写退款理由和退款金额。提交申请后,我们将在1-3个工作日内处理您的请求。
24 |
25 | Q: 退货政策是什么?
26 | A: 自收到商品之日起7天内,如产品未使用、包装完好,您可以申请退货。某些特殊商品可能不支持退货,请在购买前查看商品详情页面的退货政策。
27 |
28 | Q: 退款会退回到哪里?
29 | A: 退款将原路退回至您的支付帐户。
30 |
31 | Q: 支持哪些省份配送?
32 | A: 我们支持全国大部分省份的配送,包括北京、上海、天津、重庆、河北、山西、辽宁、吉林、黑龙江、江苏、浙江、安徽、福建、江西、山东、河南、湖北、湖南、广东、海南、四川、贵州、云南、陕西、甘肃、青海、台湾、内蒙古、广西、西藏、宁夏和新疆
33 |
34 | Q: 物流时效是多久?
35 | A: 一般情况下,大部分城市的订单在2-3个工作日内送达,偏远地区可能需要5-7个工作日。具体送货时间可能因订单商品、配送地址和物流公司而异。
36 |
37 | Q: 如何查询物流信息?
38 | A: 在订单发货后,您可以在“我的订单”页面查看物流单号。点击相应订单的“查看物流”按钮,输入物流单号查询物流详情。
39 |
40 | Q: 提供哪些快递公司的服务?
41 | A: 我们与顺丰速运、圆通速递、申通快递、韵达快递、中通快递、百世快递等多家知名快递公司合作。
42 |
43 | Q: 如何更改收货地址?
44 | A: 在订单发货前,您可以登录帐户,进入“我的订单”页面,选择要修改的订单并点击“修改地址”。如果订单已发货,您需要联系客服协助处理。
45 |
46 | Q: 如何查询发票信息?
47 | A: 登录您的帐户,进入“我的发票”页面。在此页面上,您可以查看已开具的发票及其详细信息。
48 |
49 | Q: 如何申请开具发票?
50 | A: 在提交订单时,您可以选择需要发票,并填写相关发票信息。您还可以在订单完成后登录帐户,进入“我的发票”页面,点击“申请发票”按钮并填写发票信息。
51 |
52 | Q: 提供哪些类型的发票?
53 | A: 我们提供普通发票和增值税专用发票。具体发票类型请参考订单页面或联系客服咨询。
54 |
55 | Q: 为什么我的订单被取消?
56 | A: 订单可能因库存不足、支付异常、用户要求等原因被取消。如有疑问,请联系客服咨询。
57 |
58 | Q: 如何参加促销活动?
59 | A: 关注我们的官方网站和社交媒体账号,我们会定期发布优惠券、折扣码和特价商品信息。您还可以在购物车页面直接查看适用于您订单的优惠活动。
60 |
61 | Q: 如何使用优惠券?
62 | A: 在购物车页面,输入优惠券代码后,点击“应用”。优惠券折扣将自动应用于您的订单。
63 |
64 | Q: 优惠券有使用限制吗?
65 | A: 优惠券可能有最低消费要求、有效期限制或特定商品范围。使用前请查看优惠券详情。
--------------------------------------------------------------------------------
/data/ecommerce_products.csv:
--------------------------------------------------------------------------------
1 | product_name,product_description,style
2 | 雪纺连衣裙,这款雪纺连衣裙是轻盈柔软的质地,带有浪漫的碎花印花,穿上后显得温柔可人。适合夏季出门穿着,搭配一双凉鞋和小包包就可以了。,田园、休闲
3 | 丝绒套装,这款丝绒套装采用柔软光滑的面料,套装包括上衣和裙子两个部分,上衣部分是露肩的设计,裙子则是一条微微有弹性的迷你裙,非常适合出席晚宴或派对。,优雅、性感
4 | 毛呢大衣,毛呢大衣是秋冬季节的经典单品,这款毛呢大衣采用厚实保暖的面料,设计简单大方,双排扣式样,搭配黑色长靴和白色衬衫非常有气质。,优雅、知性
5 | 半身裙,这款半身裙采用简约大方的设计,不规则的剪裁,蓬松的裙摆,非常适合日常穿着。搭配一件简单的T恤和一双小白鞋就可以了。,休闲、简约
6 | 运动套装,这款运动套装是轻便舒适的面料,套装包括运动上衣和运动裤,适合进行各种户外运动,例如慢跑、健身等。,运动、健康
7 | 牛仔裤,这款牛仔裤采用修身的设计,适合大部分女性穿着,可以搭配各种上衣,例如白色衬衫、黑色小背心等。,休闲、百搭
8 | 毛衣连衣裙,这款毛衣连衣裙是舒适保暖的面料,颜色为深蓝色,设计上比较简约,适合在秋冬季节穿着,搭配一双长靴和一件棉质外套非常有气质。,优雅、保暖
9 | 百褶裙,这款百褶裙是轻盈柔软的面料,颜色为粉色,非常适合春季穿着,搭配一件简单的白色上衣和一双粉色高跟鞋就可以了。,甜美、可爱
10 | 连衣裤,这款连衣裤采用修身的设计,面料柔软舒适,颜色为浅蓝色,适合在夏季出门穿着,搭配一双白色凉鞋和小包包非常清新自然。,清新、休闲
11 | 长袖T恤,这款长袖T恤是舒适柔软的质地,颜色为灰色,非常适合春秋季节穿着,搭配一条牛仔裤和一双运动鞋就可以了。,休闲、简约
12 | 毛呢短裤,这款毛呢短裤采用复古的设计,颜色为棕色,搭配一件简单的T恤和一双白色球鞋非常有型。,复古、休闲
13 | 高领毛衣,这款高领毛衣采用柔软保暖的质地,颜色为深红色,搭配一条牛仔裤和一双黑色靴子非常有气质。,优雅、保暖
14 | 卫衣连衣裙,这款卫衣连衣裙采用舒适柔软的面料,颜色为黑色,非常适合春秋季节穿着,搭配一双白色运动鞋和小包包非常休闲自然。,休闲、简约
15 | 荷叶边连衣裙,这款荷叶边连衣裙是轻盈柔软的面料,颜色为粉色,搭配一双高跟鞋和小包包非常优雅浪漫。,优雅、浪漫
16 | 短款羽绒服,这款短款羽绒服采用保暖的面料,颜色为红色,搭配一条黑色牛仔裤和一双运动鞋非常休闲舒适。,休闲、保暖
17 | 半高领毛衣,这款半高领毛衣采用柔软舒适的质地,颜色为白色,搭配一条灰色裤子和一双黑色高跟鞋非常优雅大方。,优雅、知性
18 | 短款皮衣,这款短款皮衣采用经典的设计,颜色为黑色,搭配一件白色T恤和一条牛仔裤非常有个性。,个性、时尚
19 | 长袖连衣裙,这款长袖连衣裙采用柔软舒适的面料,颜色为粉色,适合春秋季节穿着,搭配一双小白鞋和小包包非常清新自然。,清新、甜美
20 | 羊毛大衣,这款羊毛大衣采用保暖的面料,颜色为灰色,设计简约大方,非常适合秋冬季节穿着,搭配一双黑色长靴和一条黑色裤子非常有气质。,优雅、保暖
21 | 衬衫裙,这款衬衫裙采用简约大方的设计,颜色为白色,适合春季穿着,搭配一双粉色高跟鞋和小包包非常优雅甜美。,优雅、甜美
22 | 半身短裙,这款半身短裙采用迷人的设计,颜色为黑色,适合夏季出门穿着,搭配一件简单的T恤和一双凉鞋非常性感时尚。,性感、时尚
23 | 长款风衣,这款长款风衣采用保暖的面料,颜色为卡其色,设计简单大方,非常适合春秋季节穿着,搭配一双白色球鞋和一条牛仔裤非常休闲自然。,休闲、简约
24 | 毛衣裙,这款毛衣裙采用保暖的面料,颜色为米白色,适合春秋季节穿着,搭配一双黑色长靴和小包包非常优雅大方。,优雅、保暖
25 | 牛仔短裙,这款牛仔短裙采用修身的设计,颜色为蓝色,适合夏季出门穿着,搭配一件白色T恤和一双凉鞋非常清新自然。,清新、休闲
26 | 小西装,这款小西装采用简约大方的设计,颜色为黑色,适合春秋季节穿着,搭配一条灰色裤子和一双黑色高跟鞋非常优雅知性。,优雅、知性
27 | 棉麻连衣裙,这款棉麻连衣裙是舒适柔软的质地,颜色为白色,适合春夏季节穿着,搭配一双小白鞋和小包包非常清新自然。,清新、休闲
28 | 长款卫衣,这款长款卫衣采用舒适柔软的面料,颜色为深灰色,非常适合春秋季节穿着,搭配一条黑色裤子和一双运动鞋非常休闲自然。,休闲、运动
29 | 针织连衣裙,这款针织连衣裙采用保暖舒适的面料,颜色为灰色,适合秋冬季节穿着,搭配一双黑色靴子和小包包非常有气质。,优雅、保暖
30 | 运动短裤,这款运动短裤采用轻便舒适的面料,适合进行各种户外运动,例如慢跑、健身等,搭配一件简单的T恤和一双运动鞋就可以了。,运动、健康
31 | 印花连衣裙,这款印花连衣裙采用轻盈柔软的面料,带有浪漫的花卉印花,非常适合春季出门穿着,搭配一双小白鞋和小包包非常清新可爱。,甜美、清新
32 | 阔腿裤,这款阔腿裤采用舒适柔软的面料,颜色为黑色,适合春秋季节穿着,搭配一件简单的T恤和一双黑色高跟鞋非常优雅大方。,优雅、简约
33 | 蕾丝连衣裙,这款蕾丝连衣裙采用优雅浪漫的设计,颜色为白色,非常适合春夏季节穿着,搭配一双高跟鞋和小包包非常优雅浪漫。,优雅、浪漫
34 | 宽松毛衣,这款宽松毛衣采用舒适保暖的面料,颜色为浅灰色,非常适合春秋季节穿着,搭配一条牛仔裤和一双白色球鞋非常休闲自然。,休闲、保暖
35 | 高腰阔腿裤,这款高腰阔腿裤采用流行的设计,颜色为黑色,适合春秋季节穿着,搭配一件简单的T恤和一双黑色高跟鞋非常有气质。,优雅、时尚
36 | 短款针织衫,这款短款针织衫采用舒适柔软的面料,颜色为白色,适合春秋季节穿着,搭配一条牛仔裤和一双白色运动鞋非常休闲自然。,休闲、简约
37 | 紧身裤,这款紧身裤采用修身的设计,颜色为黑色,适合春秋季节穿着,搭配一件白色衬衫和一双黑色高跟鞋非常优雅大方。,优雅、知性
38 | 吊带连衣裙,这款吊带连衣裙采用轻盈柔软的面料,颜色为粉色,非常适合春夏季节穿着,搭配一双高跟鞋和小包包非常甜美可爱。,甜美、可爱
39 | 格子衬衫,这款格子衬衫采用经典的设计,颜色为红色,适合春秋季节穿着,搭配一条牛仔裤和一双黑色高跟鞋非常有气质。,优雅、知性
40 | 小清新连衣裙,这款小清新连衣裙采用舒适柔软的面料,颜色为白色,带有简单的印花图案,适合春季出门穿着,搭配一双小白鞋和小包包非常清新自然。,清新、休闲
41 | 纯色T恤,这款纯色T恤采用柔软舒适的质地,颜色为黑色,适合春夏季节穿着,搭配一条牛仔裤和一双白色球鞋非常休闲自然。,休闲、简约
42 | 长袖针织衫,这款长袖针织衫采用柔软保暖的质地,颜色为灰色,适合秋冬季节穿着,搭配一条黑色裤子和一双黑色高跟鞋非常优雅知性。,优雅、保暖
43 | 复古连衣裙,这款复古连衣裙采用经典的设计,颜色为黑色,搭配一双红色高跟鞋和小包包非常个性时尚。,个性、时尚
44 | 高腰牛仔裤,这款高腰牛仔裤采用修身的设计,颜色为深蓝色,适合春秋季节穿着,搭配一件白色T恤和一双黑色高跟鞋非常有气质。,优雅、简约
45 | 短款毛衣,这款短款毛衣采用柔软保暖的质地,颜色为白色,适合春秋季节穿着,搭配一条黑色裤子和一双黑色靴子非常优雅大方。,优雅、保暖
46 | 短款牛仔外套,这款短款牛仔外套采用经典的设计,颜色为蓝色,适合春秋季节穿着,搭配一件白色T恤和一条黑色裤子非常有型。,个性、时尚
47 | 条纹衬衫,这款条纹衬衫采用简约大方的设计,颜色为白蓝相间,适合春季穿着,搭配一条牛仔裤和一双白色运动鞋非常休闲自然。,休闲、简约
48 | 蕾丝短裤,这款蕾丝短裤采用迷人的设计,颜色为黑色,适合夏季出门穿着,搭配一件白色T恤和一双高跟凉鞋非常性感时尚。,性感、时尚
49 | 雪纺连衣裙,这款雪纺连衣裙采用轻盈柔软的面料,颜色为粉色,非常适合春夏季节穿着,搭配一双小白鞋和小包包非常清新可爱。,甜美、清新
50 | 背心连衣裙,这款背心连衣裙采用简约大方的设计,颜色为黑色,适合春夏季节穿着,搭配一双高跟鞋和小包包非常优雅大方。,优雅、简约
--------------------------------------------------------------------------------
/data/llama_tokenizer/special_tokens_map.json:
--------------------------------------------------------------------------------
1 | {
2 | "bos_token": {
3 | "content": "",
4 | "lstrip": false,
5 | "normalized": true,
6 | "rstrip": false,
7 | "single_word": false
8 | },
9 | "eos_token": {
10 | "content": "",
11 | "lstrip": false,
12 | "normalized": true,
13 | "rstrip": false,
14 | "single_word": false
15 | },
16 | "unk_token": {
17 | "content": "",
18 | "lstrip": false,
19 | "normalized": true,
20 | "rstrip": false,
21 | "single_word": false
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/data/llama_tokenizer/tokenizer.model:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuwenhao/mactalk-ai-course/c12516363ef5e70b35c9edc89ddbe9d22ce5899e/data/llama_tokenizer/tokenizer.model
--------------------------------------------------------------------------------
/data/llama_tokenizer/tokenizer_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "add_bos_token": true,
3 | "add_eos_token": false,
4 | "bos_token": {
5 | "__type": "AddedToken",
6 | "content": "",
7 | "lstrip": false,
8 | "normalized": true,
9 | "rstrip": false,
10 | "single_word": false
11 | },
12 | "clean_up_tokenization_spaces": false,
13 | "eos_token": {
14 | "__type": "AddedToken",
15 | "content": "",
16 | "lstrip": false,
17 | "normalized": true,
18 | "rstrip": false,
19 | "single_word": false
20 | },
21 | "model_max_length": 2048,
22 | "pad_token": null,
23 | "sp_model_kwargs": {},
24 | "tokenizer_class": "LlamaTokenizer",
25 | "unk_token": {
26 | "__type": "AddedToken",
27 | "content": "",
28 | "lstrip": false,
29 | "normalized": true,
30 | "rstrip": false,
31 | "single_word": false
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/data/mr_fujino/mr_fujino.txt:
--------------------------------------------------------------------------------
1 | 藤野先生
2 |
3 | 东京也无非是这样。上野的樱花烂熳的时节,望去确也像绯红的轻云,但花下也缺不了成群结队的“清国留学生”的速成班,头顶上盘着大辫子,顶得学生制帽的顶上高高耸起,形成一座富士山。也有解散辫子,盘得平的,除下帽来,油光可鉴,宛如小姑娘的发髻一般,还要将脖子扭几扭。实在标致极了。
4 |
5 | 中国留学生会馆的门房里有几本书买,有时还值得去一转;倘在上午,里面的几间洋房里倒也还可以坐坐的。但到傍晚,有一间的地板便常不免要咚咚咚地响得震天,兼以满房烟尘斗乱;问问精通时事的人,答道,“那是在学跳舞。”
6 |
7 | 到别的地方去看看,如何呢?
8 |
9 | 我就往仙台的医学专门学校去。从东京出发,不久便到一处驿站,写道:日暮里。不知怎地,我到现在还记得这名目。其次却只记得水户了,这是明的遗民朱舜水先生客死的地方。仙台是一个市镇,并不大;冬天冷得厉害;还没有中国的学生。
10 |
11 | 大概是物以希为贵罢。北京的白菜运往浙江,便用红头绳系住菜根,倒挂在水果店头,尊为“胶菜”;福建野生着的芦荟,一到北京就请进温室,且美其名曰“龙舌兰”。我到仙台也颇受了这样的优待,不但学校不收学费,几个职员还为我的食宿操心。我先是住在监狱旁边一个客店里的,初冬已经颇冷,蚊子却还多,后来用被盖了全身,用衣服包了头脸,只留两个鼻孔出气。在这呼吸不息的地方,蚊子竟无从插嘴,居然睡安稳了。饭食也不坏。但一位先生却以为这客店也包办囚人的饭食,我住在那里不相宜,几次三番,几次三番地说。我虽然觉得客店兼办囚人的饭食和我不相干,然而好意难却,也只得别寻相宜的住处了。于是搬到别一家,离监狱也很远,可惜每天总要喝难以下咽的芋梗汤。
12 |
13 | 从此就看见许多陌生的先生,听到许多新鲜的讲义。解剖学是两个教授分任的。最初是骨学。其时进来的是一个黑瘦的先生,八字须,戴着眼镜,挟着一迭大大小小的书。一将书放在讲台上,便用了缓慢而很有顿挫的声调,向学生介绍自己道:—— “我就是叫作藤野严九郎的……。”
14 |
15 | 后面有几个人笑起来了。他接着便讲述解剖学在日本发达的历史,那些大大小小的书,便是从最初到现今关于这一门学问的著作。起初有几本是线装的;还有翻刻中国译本的,他们的翻译和研究新的医学,并不比中国早。
16 |
17 | 那坐在后面发笑的是上学年不及格的留级学生,在校已经一年,掌故颇为熟悉的了。他们便给新生讲演每个教授的历史。这藤野先生,据说是穿衣服太模胡了,有时竟会忘记带领结;冬天是一件旧外套,寒颤颤的,有一回上火车去,致使管车的疑心他是扒手,叫车里的客人大家小心些。
18 | 他们的话大概是真的,我就亲见他有一次上讲堂没有带领结。
19 |
20 | 过了一星期,大约是星期六,他使助手来叫我了。到得研究室,见他坐在人骨和许多单独的头骨中间,——他其时正在研究着头骨,后来有一篇论文在本校的杂志上发表出来。
21 | “我的讲义,你能抄下来么?”他问。
22 | “可以抄一点。”
23 | “拿来我看!”
24 | 我交出所抄的讲义去,他收下了,第二三天便还我,并且说,此后每一星期要送给他看一回。我拿下来打开看时,很吃了一惊,同时也感到一种不安和感激。原来我的讲义已经从头到末,都用红笔添改过了,不但增加了许多脱漏的地方,连文法的错误,也都一一订正。这样一直继续到教完了他所担任的功课:骨学、血管学、神经学。
25 |
26 | 可惜我那时太不用功,有时也很任性。还记得有一回藤野先生将我叫到他的研究室里去,翻出我那讲义上的一个图来,是下臂的血管,指着,向我和蔼的说道:——
27 | “你看,你将这条血管移了一点位置了。——自然,这样一移,的确比较的好看些,然而解剖图不是美术,实物是那么样的,我们没法改换它。现在我给你改好了,以后你要全照着黑板上那样的画。”
28 | 但是我还不服气,口头答应着,心里却想道:——
29 | “图还是我画的不错;至于实在的情形,我心里自然记得的。”
30 | 学年试验完毕之后,我便到东京玩了一夏天,秋初再回学校,成绩早已发表了,同学一百余人之中,我在中间,不过是没有落第。这回藤野先生所担任的功课,是解剖实习和局部解剖学。
31 |
32 | 解剖实习了大概一星期,他又叫我去了,很高兴地,仍用了极有抑扬的声调对我说道:——
33 | “我因为听说中国人是很敬重鬼的,所以很担心,怕你不肯解剖尸体。现在总算放心了,没有这回事。”
34 |
35 | 但他也偶有使我很为难的时候。他听说中国的女人是裹脚的,但不知道详细,所以要问我怎么裹法,足骨变成怎样的畸形,还叹息道,“总要看一看才知道。究竟是怎么一回事呢?”
36 |
37 | 有一天,本级的学生会干事到我寓里来了,要借我的讲义看。我检出来交给他们,却只翻检了一通,并没有带走。但他们一走,邮差就送到一封很厚的信,拆开看时,第一句是:——
38 | “你改悔罢!”
39 | 这是《新约》上的句子罢,但经托尔斯泰新近引用过的。其时正值日俄战争,托老先生便写了一封给俄国和日本的皇帝的信,开首便是这一句。日本报纸上很斥责他的不逊,爱国青年也愤然,然而暗地里却早受了他的影响了。其次的话,大略是说上年解剖学试验的题目,是藤野先生讲义上做了记号,我预先知道的,所以能有这样的成绩。末尾是匿名。
40 |
41 | 我这才回忆到前几天的一件事。因为要开同级会,干事便在黑板上写广告,末一句是“请全数到会勿漏为要”,而且在“漏”字旁边加了一个圈。我当时虽然觉到圈得可笑,但是毫不介意,这回才悟出那字也在讥刺我了,犹言我得了教员漏泄出来的题目。
42 |
43 | 我便将这事告知了藤野先生;有几个和我熟识的同学也很不平,一同去诘责22干事托辞检查的无礼,并且要求他们将检查的结果,发表出来。终于这流言消灭了,干事却又竭力运动,要收回那一封匿名信去。结末是我便将这托尔斯泰式的信退还了他们。
44 |
45 | 中国是弱国,所以中国人当然是低能儿,分数在六十分以上,便不是自己的能力了:也无怪他们疑惑。但我接着便有参观枪毙中国人的命运了。第二年添教霉菌学,细菌的形状是全用电影来显示的,一段落已完而还没有到下课的时候,便影几片时事的片子,自然都是日本战胜俄国的情形。但偏有中国人夹在里边:给俄国人做侦探,被日本军捕获,要枪毙了,围着看的也是一群中国人;在讲堂里的还有一个我。
46 | “万岁!”他们都拍掌欢呼起来。
47 | 这种欢呼,是每看一片都有的,但在我,这一声却特别听得刺耳。此后回到中国来,我看见那些闲看枪毙犯人的人们,他们也何尝不酒醉似的喝彩,——呜呼,无法可想!但在那时那地,我的意见却变化了。
48 |
49 | 到第二学年的终结,我便去寻藤野先生,告诉他我将不学医学,并且离开这仙台。他的脸色仿佛有些悲哀,似乎想说话,但竟没有说。
50 | “我想去学生物学,先生教给我的学问,也还有用的。”其实我并没有决意要学生物学,因为看得他有些凄然,便说了一个慰安他的谎话。
51 | “为医学而教的解剖学之类,怕于生物学也没有什么大帮助。”他叹息说。
52 |
53 | 将走的前几天,他叫我到他家里去,交给我一张照相,后面写着两个字道:“惜别”,还说希望将我的也送他。但我这时适值没有照相了;他便叮嘱我将来照了寄给他,并且时时通信告诉他此后的状况。
54 |
55 | 我离开仙台之后,就多年没有照过相,又因为状况也无聊,说起来无非使他失望,便连信也怕敢写了。经过的年月一多,话更无从说起,所以虽然有时想写信,却又难以下笔,这样的一直到现在,竟没有寄过一封信和一张照片。从他那一面看起来,是一去之后,杳无消息了。
56 |
57 | 但不知怎地,我总还时时记起他,在我所认为我师的之中,他是最使我感激,给我鼓励的一个。有时我常常想:他的对于我的热心的希望,不倦的教诲,小而言之,是为中国,就是希望中国有新的医学;大而言之,是为学术,就是希望新的医学传到中国去。他的性格,在我的眼里和心里是伟大的,虽然他的姓名并不为许多人所知道。
58 |
59 | 他所改正的讲义,我曾经订成三厚本,收藏着的,将作为永久的纪念。不幸七年前迁居的时候,中途毁坏了一口书箱,失去半箱书,恰巧这讲义也遗失在内了。责成运送局去找寻,寂无回信。只有他的照相至今还挂在我北京寓居的东墙上,书桌对面。每当夜间疲倦,正想偷懒时,仰面在灯光中瞥见他黑瘦的面貌,似乎正要说出抑扬顿挫的话来,便使我忽又良心发现,而且增加勇气了,于是点上一枝烟,再继续写些为“正人君子”之流所深恶痛疾的文字。
--------------------------------------------------------------------------------
/data/tesla_autopilot_progress.txt:
--------------------------------------------------------------------------------
1 | It's not a perfect metric to track progress, but it's one of the only ones we have right now and we should see improvements in it over time with ...
--------------------------------------------------------------------------------
/data/tesla_autopilot_report.txt:
--------------------------------------------------------------------------------
1 | Tesla's Autopilot technology has seen significant advancements in recent years. One of the latest features in Tesla vehicles is the company's Full Self-Driving (FSD) technology. This technology, which is still in development, aims to provide a higher level of autonomy for Tesla vehicles. As Tesla's Autopilot, Enhanced Autopilot, and Full Self-Driving capabilities evolve, cars are continuously upgraded through over-the-air software updates.
2 |
3 | In 2023, Tesla has made several improvements to its Autopilot technology. The company has started to release a new Full Self-Driving Beta update with some performance improvements. Although it doesn't look like a huge leap forward, it demonstrates Tesla's commitment to refining and enhancing its autonomous driving capabilities.
4 |
5 | Tesla continues to innovate in the field of electric vehicles, with a focus on battery range and autonomous driving. As the technology progresses, Tesla aims to make driving safer, more efficient, and more enjoyable for its customers.
--------------------------------------------------------------------------------
/data/tesla_autopilot_search_results.txt:
--------------------------------------------------------------------------------
1 | Autopilot is an advanced driver assistance system that enhances safety and convenience behind the wheel. When used properly, Autopilot reduces your overall ...
2 |
3 | The currently enabled Autopilot, Enhanced Autopilot and Full Self-Driving features require active driver supervision and do not make the vehicle autonomous.
--------------------------------------------------------------------------------
/data/ultraman_stories_more.csv:
--------------------------------------------------------------------------------
1 | ,dynasty,super_power,story_type,story
2 | 0,秦,龙卷风,轻松,"
3 |
4 | 秦朝时期,有一位叫陈小龙的英雄人物,他拥有超强的战斗技能,屡次击败了敌人,称霸一方。
5 |
6 | 有一天,陈小龙被一道神秘的光束射中,穿越到了现代,他发现自己拥有了超能力,可以控制龙卷风,让它帮助他战斗。
7 |
8 | 他发现了一群怪兽正在活动,破坏着社会秩序,于是他决定去帮助奥特曼一起打败它们。
9 |
10 | 他利用自己的超能力,召唤出龙卷风,将怪兽们一个个击败,最后在奥特曼的帮助下,将它们全部消灭。
11 |
12 | 经过这一次战斗,陈小龙受到了普遍的赞誉,他也被称为“龙卷风侠”。此后,他就一直与奥特曼一起,保护着社会免受怪兽的侵害,为人们带来安宁与和平。"
13 | 1,秦,龙卷风,轻松,"
14 |
15 | 一位叫做“秦风”的英雄人物,来自古代秦朝时期,他有着超凡的战斗技能,可以操控风的力量。
16 |
17 | 一天,秦风突然穿越到了现代,他感到很困惑,但他还是忍受了这种困惑,继续前行。
18 |
19 | 没多久,他发现自己可以控制龙卷风,可以改变气流方向,可以改变天气。他知道,这是一种超能力,他可以利用这种能力来帮助人们。
20 |
21 | 不久,他发现有一群怪兽正在攻击城市,他决定帮助奥特曼一起打败怪兽。于是,他利用自己的超能力控制龙卷风,轻松击退了怪兽。
22 |
23 | 最终,秦风和奥特曼一起成功打败了怪兽,城市得以安全。秦风也决定留在现代,继续保护人们,成为一个英雄。"
24 | 2,秦,龙卷风,轻松,"
25 |
26 | 秦朝时期,有一位叫做李青的英雄人物,他拥有超凡的能力,可以改变周围的环境,并且有无穷的勇气,不畏惧任何困难。
27 |
28 | 一天,李青被一道强大的时空隧道吸引,穿越到了现代,他发现自己可以控制龙卷风,并且拥有超能力,可以制造暴风雨,改变周围的环境。
29 |
30 | 李青在现代发现,有一群怪兽正在摧毁城市,他决定用自己的能力去拯救人类,于是他和奥特曼一起出发,展开了一场激烈的战斗。
31 |
32 | 李青利用自己的超能力,制造出暴风雨,将怪兽一一击溃,最终他和奥特曼一起成功拯救了城市,英雄们得到了来自人民的热烈欢呼。
33 |
34 | 李青用自己的英勇行为,让人们记住了他,他也成为了秦朝时期最伟大的英雄,在现代也留下了自己的足迹。"
35 | 3,秦,龙卷风,努力,"
36 |
37 | 秦朝时期,一位叫做曹操的英雄人物,凭借着勇猛的战斗力,帮助秦朝一统天下,成为一个英雄。
38 |
39 | 然而,在曹操去世之后,他的灵魂被一个神秘的力量所吸引,被传送到了现代,拥有了龙卷风这样的超能力。
40 |
41 | 曹操发现,现代的世界正受到一种叫做怪兽的力量的威胁,于是他决定帮助奥特曼一起抵抗怪兽,保护人类的安全。
42 |
43 | 曹操在奥特曼的帮助下,通过屡次的英勇斗争,最终成功地击败了怪兽,拯救了人类。
44 |
45 | 曹操最终回到了他的故乡,他的故事也流传了下来,被人们永远铭记。他展示了一个英雄人物可以做到的事情,也给了人们希望,让人们相信,只要有勇气,就能改变世界。"
46 | 4,秦,龙卷风,努力,"
47 |
48 | 这是一个关于秦朝时期的英雄人物的故事,他叫项羽,他被认为是中国古代最伟大的军事统帅。他受到众多英雄人物的敬仰,并且拥有众多传奇的战斗经历。
49 |
50 | 一天,项羽突然被神秘的力量抽空,他被带到了现代,发现自己拥有了超能力,就像龙卷风一样,可以用风来摧毁一切。他发现自己被神秘的力量召唤,为了帮助奥特曼打败怪兽,他必须发挥自己的超能力。
51 |
52 | 于是,项羽和奥特曼一起展开了一场惊心动魄的战斗,凭借他的超能力,他们击败了所有的怪兽,拯救了世界。最后,项羽离开了现代,他的英雄事迹被流传了下来,成为了永恒的传奇。"
53 | 5,秦,龙卷风,努力,"
54 |
55 | 秦朝时期,有一位叫做李忠的英雄人物,他拥有出色的武功和勇气,曾经拯救了整个中国免于灭亡。
56 |
57 | 一天,李忠突然发现自己穿越到了现代,他发现自己拥有了一种超能力,可以控制龙卷风。他很快就发现,现代的世界也有怪兽的存在,他们威胁到了人类的安全。
58 |
59 | 于是,李忠决定加入奥特曼,一起打败怪兽。他努力的练习,发挥着自己的超能力,帮助奥特曼战胜了一个又一个强大的怪兽。最终,他们一起战胜了怪兽,拯救了现代世界。
60 |
61 | 李忠最终又回到了秦朝,这次,他带着一份新的精神,他更加努力的练习武功,更加勇敢的拯救了整个中国,成为了一位传奇的英雄人物。"
62 | 6,秦,龙卷风,艰难,"
63 |
64 | 秦朝时期,一位叫做英雄的人物,他拥有着超越常人的力量,他可以把敌人击倒,他可以把大山撞碎。
65 |
66 | 一天,英雄突然被一道神秘的光抓住了,他发现自己穿越到了现代。现在,他拥有了一种超能力,可以控制龙卷风。
67 |
68 | 英雄被召唤到了一个叫做奥特曼的世界,在那里,他们面临着一种叫做怪兽的强大敌人的威胁。英雄用他的超能力,和奥特曼一起,打败了怪兽,拯救了这个世界。
69 |
70 | 最后,英雄用他的超能力,把自己传送回了原来的时空,他的传奇故事,也就此结束了。"
71 | 7,秦,龙卷风,艰难,"
72 |
73 | 秦朝时期,有一位叫做李晓明的英雄人物,他有着英勇的气概,勇往直前,无惧任何困难。他曾参加过许多战役,抗击外敌,拯救百姓,他的勇敢和智慧令人佩服。
74 |
75 | 可是,他的命运被改变了。一次,他在战场上濒临死亡的时候,被一道神秘的光芒笼罩,李晓明突然发现自己的身体发生了变化,他拥有了龙卷风这样的超能力,可以控制风的力量,可以改变天气,以及其他各种神奇的能力。
76 |
77 | 他穿越到了现代,发现自己来到了一个充满怪兽和危险的世界,他发现自己可以帮助奥特曼一起打败怪兽,于是,他便拿起了武器,和奥特曼一起,展开了一场惊心动魄的战斗。
78 |
79 | 他用自己的超能力,击退了怪兽,用自己的勇敢,抵抗了邪恶的势力,最终,他和奥特曼一起成功地拯救了这个世界。
80 |
81 | 李晓明的事迹被传颂了,他的勇敢和智慧,被世人所称颂。他用自己的力量,拯救了这个世界,也改变了自己的命运,他将永远被人们铭记。"
82 | 8,秦,龙卷风,艰难,"
83 |
84 | 秦朝时期,有一位英雄人物叫做苏晓,他是一个勇敢的将军,拥有极高的军事智慧,曾经在一次大战中帮助国家取得了胜利。然而,他的命运却被时光抛弃,他被困在时空裂缝中,穿越到了现代,却发现自己拥有了一种神奇的超能力——龙卷风。
85 |
86 | 在他的帮助下,奥特曼们发现了一群怪兽正在毁坏地球,于是他们决定和苏晓一起出击,与怪兽展开激烈的战斗。苏晓用龙卷风帮助奥特曼们抵抗怪兽的攻击,击溃了怪兽,拯救了地球。
87 |
88 | 苏晓在战斗中表现出超乎想象的勇敢和智慧,他不仅帮助奥特曼们拯救了地球,还让他们对自己的力量有了新的认识,激发了他们的斗志,让他们更加坚定地保卫地球,抵抗邪恶的力量。
89 |
90 | 最终,苏晓和奥特曼们一起战胜了怪兽,拯救了地球,苏晓因为他的英勇表现,被奥特曼们赋予了“勇者”的称号,成为了一个永恒的英雄。"
91 | 9,秦,龙卷风,勇敢,"
92 |
93 | 秦朝时期,一位叫韩信的勇士,以其出色的战斗技术而闻名。他曾经参加过无数次战斗,一次次成功地击败了敌人,让自己的名字在历史上留下了烙印。
94 |
95 | 然而,一场突如其来的大雷雨,把韩信带入了一个神秘的时空隧道。当他从时空隧道里出来时,发现自己来到了现代的世界。
96 |
97 | 在这个全新的环境中,韩信发现自己拥有了一种神奇的力量,可以操控龙卷风,让自己变得更加强大。
98 |
99 | 于是,他开始在现代世界中探索,不断地练习着自己的新能力,最终成为了一名超级英雄。
100 |
101 | 某天,韩信发现了一个叫做奥特曼的英雄,与他一起打败了大量怪兽,保卫了世界的和平。
102 |
103 | 最后,韩信和奥特曼一起成功地把怪兽击退,拯救了世界,获得了众人的尊敬和赞誉。
104 |
105 | 韩信从此成为了一名英雄,他的传奇故事,也被传颂于千古。"
106 | 10,秦,龙卷风,勇敢,"
107 |
108 | 秦朝时期,有一位叫做陈志的英雄人物,他出身贫寒,但他勇敢无畏,拥有超强的智慧。他曾参加过多次攻打西域的战役,每次都能够取得胜利,他的名声传遍了大汉的四方。
109 |
110 | 然而,一场突如其来的大雷雨把陈志带到了现代,他发现自己拥有了龙卷风这样的超能力,他觉得这是一种奇迹。他发誓要用这种力量来保护这个世界,帮助奥特曼一起打败怪兽。
111 |
112 | 于是,他加入了奥特曼的队伍,他们一起抗击怪兽,他凭借着自己的超能力,战胜了一个又一个强大的怪兽。最后,他们终于成功地拯救了这个世界,陈志也因此成为了一位传奇英雄!"
113 | 11,秦,龙卷风,勇敢,"
114 |
115 | 秦朝时期,有一位英雄人物叫做曹操。他勇敢无畏,为了守护自己的家乡,不惜牺牲自己的生命。曹操把自己的一生都献给了国家,但最终他还是因为病而去世了,留下了一片悲伤的遗憾。
116 |
117 | 几千年后,曹操穿越到了现代,他发现自己拥有了一种超能力,叫做龙卷风,可以控制风力。他发现,现代的世界也面临着危险,有一种叫做怪兽的强大敌人,正在威胁着人类的生存。
118 |
119 | 曹操决定加入奥特曼的队伍,一起去对抗怪兽。他发挥自己的超能力,利用龙卷风的力量,帮助奥特曼击败了怪兽,拯救了世界。
120 |
121 | 最终,曹操用自己的勇敢和坚定,成功地完成了任务,他也拥有了自己的传奇,让后人永远记住他的英勇。"
122 | 12,秦,龙卷风,辛苦,"
123 |
124 | 秦朝时期,一位叫李青的英雄人物,拥有着超凡的武功。他曾经帮助秦朝统一六国,并且取得了巨大的成功。
125 |
126 | 但是,有一天,李青被一阵神秘的龙卷风卷走,带到了现代世界。李青发现,自己拥有了一种超能力,可以控制龙卷风。
127 |
128 | 于是,李青决定拯救这个世界,他与奥特曼一起,克服了重重困难,最终成功地击败了一个叫做“怪兽”的可怕生物。
129 |
130 | 在李青的帮助下,世界得以拯救,人们都为他的英勇行为而赞叹不已。
131 |
132 | 李青决定继续保护这个世界,他把自己的超能力用于正义,成为了英雄,被人们尊称为“龙卷风侠”。"
133 | 13,秦,龙卷风,辛苦,"
134 |
135 | 秦朝时期的英雄人物马克斯,一位普通的人,但他有一颗坚强的心,他拥有一种超自然的力量,可以控制龙卷风。
136 |
137 | 一天,一只可怕的怪兽出现在马克斯的家乡,它摧毁了一切,伤害了无辜的人们。马克斯决定用他的超能力拯救家乡,他召唤出龙卷风,用它来对抗怪兽。
138 |
139 | 经过一场激烈的战斗,马克斯终于击败了怪兽,但他也被怪兽的力量所吸引,穿越了时空,来到了现代。
140 |
141 | 马克斯被奥特曼所接纳,他们一起组成了一支超级英雄小队,他们在现代城市中,用他们的超能力和勇气,打败了一个又一个的怪兽,保护了人民的安全。
142 |
143 | 马克斯也经历了许多挑战,他学会了如何控制自己的超能力,他也成为了一位真正的英雄,成为了奥特曼的核心成员。
144 |
145 | 最终,马克斯和奥特曼一起打败了最强大的怪兽,拯救了人类,英雄们也因此得到了充分的赞誉。
146 |
147 | 此后,马克斯回到了家乡,他的英雄事迹也传遍了整个地区,人们都对他的英勇表示敬佩,认为他是一位真正的英雄。"
148 | 14,秦,龙卷风,辛苦,"
149 |
150 | 秦朝时期,有一位叫邓良的英雄人物,他拥有超凡的能力,曾经参与过许多著名的战役,被誉为英雄。
151 |
152 | 然而,在一次战役中,邓良被仙人抛入了时空裂缝,穿越到了现代,他发现自己拥有了一种神奇的力量,可以操控龙卷风,可以让自己在空中飞行。
153 |
154 | 他决定利用自己的超能力,帮助奥特曼消灭邪恶的怪兽,于是他开始和奥特曼一起打怪兽,他们经过辛苦的战斗,最终成功消灭了怪兽,拯救了世界。
155 |
156 | 邓良成为了英雄,他的传奇故事也流传开来,人们都赞叹他的英勇,他也成为了秦朝时期的传奇人物。"
157 | 15,秦,冰冻大海,轻松,"
158 |
159 | 秦朝时期,有一位英雄人物叫韩信,他拥有出色的军事才能,他可以控制大自然,让无数的士兵在他的指挥下,在短短的时间里完成了一系列的战役,让他的秦国变得强大起来。
160 |
161 | 然而,一场大灾难将他的秦国毁灭了,他也被传送到了未来的时空,这里是一个充满了怪兽的世界。
162 |
163 | 韩信发现自己拥有了超能力,可以冰冻大海,可以控制风暴,他的力量让他变得无敌。他联合奥特曼,一起打败了这里的怪兽,拯救了这个世界。
164 |
165 | 最终,韩信成功地拯救了这个世界,他也回到了自己的秦国,他的故事被传唱了下来,被后人永远铭记。"
166 | 16,秦,冰冻大海,轻松,"
167 |
168 | 秦朝时期,一位叫做王子的勇士,他拥有一股超凡的勇气,可以挑战一切危险和困难。他拯救了被恶龙抓走的公主,拯救了被妖怪困住的村庄,甚至拯救了被恶魔附身的人们。他的做法赢得了众多百姓的拥戴,他也因此成为了秦国的英雄。
169 |
170 | 但是,当秦国被灭亡,王子也被时空隧道带到了现代。他发现自己拥有了一种神奇的力量,可以冰冻大海,可以改变天气,可以控制风暴。他发现自己可以轻松地把怪兽打败,于是他加入了奥特曼的队伍,一起对抗怪兽。
171 |
172 | 在一次激烈的战斗中,王子用他神奇的力量,把怪兽冻住,从而成功地拯救了人类,他也用他的勇气和智慧,帮助奥特曼一起打败了怪兽,赢得了众多人的拥戴。
173 |
174 | 王子的故事激励了人们,他们都开始相信,只要有勇气和智慧,就可以改变自己的命运,改变世界。王子也成为了现代的英雄,激励着人们去勇敢地拥抱挑战,勇敢地去追求自己的梦想。"
175 | 17,秦,冰冻大海,轻松,"
176 |
177 | 秦朝时期的英雄人物林明,他拥有一种神奇的超能力,可以冰冻大海,让人们感到惊叹。
178 |
179 | 林明曾经参加过多次的英雄战斗,他的英勇行为深深地打动了人们的心,也让他们更加尊敬他。
180 |
181 | 但是,林明被一个叫做“时空之门”的神秘力量抓住了,把他带到了现代。在这个新的世界里,林明发现自己变得强大了很多,他的超能力越来越强大。
182 |
183 | 时不时会有怪兽出现,它们会攻击人类,林明就像一个英雄一样,用他的超能力把怪兽们打败了。
184 |
185 | 有一次,林明和奥特曼一起组成了一支英雄队伍,他们一起击败了一个叫做“魔鬼”的怪兽,拯救了人类。
186 |
187 | 林明用他的超能力,和奥特曼一起打败了怪兽,拯救了人类,他也被人们所熟知,成为了一个英雄,他也成为了现代人们心中的英雄,永远被人们铭记。"
188 | 18,秦,冰冻大海,努力,"
189 |
190 | 秦朝时期,有一位叫做李白的英雄人物,他勇敢无畏,以及极其出色的武术技能,被众人尊称为“白马侠”。
191 |
192 | 一天,李白接到了一个神秘的任务,他要去拯救一个被怪兽攻击的小镇。李白毫不犹豫地接受了任务,他准备了武器和装备,前往了小镇。
193 |
194 | 李白来到小镇,发现怪兽已经完全摧毁了小镇,而且正在向其他地方攻击。李白决定挑战怪兽,但是他发现自己的武力已经不足以抵抗怪兽,他开始绝望。
195 |
196 | 此时,一道强大的光芒出现在李白身边,他被一股神秘的力量所护佑,这股力量赋予了他超自然的能力,他可以冰冻大海,可以操控风,可以改变天气等等。
197 |
198 | 李白拥有了这些超能力,他可以和怪兽进行激烈的战斗,他最终击败了怪兽,拯救了小镇。
199 |
200 | 李白拯救了小镇之后,他被神秘力量再次护佑,他被穿越到了现代,在这里他发现了奥特曼的存在,他决定和奥特曼一起,继续拯救世界。
201 |
202 | 李白和奥特曼一起,抵抗着大量的怪兽,他们利用他的超能力,击败了一个又一个的怪兽,最终成功拯救了世界。
203 |
204 | 李白的事迹被世人传颂,他最终被神秘力量再次护佑,回到了他的故乡,在那里,他继续以“白马侠”的身份,拯救着这个世界。"
205 | 19,秦,冰冻大海,努力,"
206 |
207 | 秦朝时期,一位叫李白的英雄人物,他的英勇和勇气令人敬仰。他有一把神奇的剑,可以斩断任何一切,他用它打败了许多强大的敌人,守护了他所在的国家。
208 |
209 | 一次,李白被奥特曼所招募,帮助他们打败怪兽。李白接受了挑战,并准备拼死一搏。然而,李白在战斗中受伤,被投放到了一片冰冷的大海中。
210 |
211 | 他以为自己已经死了,但不料,在大海中,他的身体发生了神奇的变化,他拥有了冰冻大海的超能力,可以控制冰冷的水流,还可以控制水的流动方向。
212 |
213 | 李白发现自己有了新的力量,他立即回到了奥特曼的身边,帮助他们打败了怪兽。李白的超能力,加上奥特曼的力量,最终成功地拯救了世界。
214 |
215 | 李白的壮举,成为了秦朝时期最伟大的英雄,他的故事也被传颂于古今。李白成为了一个永恒的传奇,他的英勇和勇气,被永远铭记在人们心中。"
216 | 20,秦,冰冻大海,努力,"
217 |
218 | 秦朝时期,一位叫做李白的英雄人物,他拥有超凡的武艺,曾参与过多次战斗,拯救了无数被抢劫的老百姓,他的名字在秦朝时期已然传遍了整个中国。
219 |
220 | 然而,一场大灾难降临,李白被一阵神秘的力量吞噬,他的身体被冰冻,被困在了时空之中,流落到了现代世界。
221 |
222 | 李白重新醒来后,发现自己的身体已经发生了变化,他的身体具备了冰冻大海的超能力,他可以控制冰冻大海,以及其他一些超自然的力量。
223 |
224 | 李白毅然决然地决定,他要使用自己的超能力,与奥特曼一起,与怪兽作斗争,拯救世界。于是,他和奥特曼一起,投身于一场激烈的战斗中,他们利用自己的超能力,战胜了一个又一个怪兽,最终拯救了世界。
225 |
226 | 李白最终成为了一位英雄,他的事迹传遍了世界,他的名字也将永垂不朽。"
227 | 21,秦,冰冻大海,艰难,"
228 |
229 | 秦朝时期,一位叫李青的英雄人物,拥有着强大的超能力,他可以冰冻大海,操控天气,改变时间,甚至可以改变人们的思想。
230 |
231 | 但是,他的超能力却无法改变秦朝的灭亡,他只能把自己封印起来,等待着未来的一天。
232 |
233 | 2000多年后,李青终于被解封,他发现自己来到了一个全新的世界。
234 |
235 | 在这个世界,李青发现了一种可怕的怪兽,它们在破坏着这个世界,而且它们的力量越来越强大。
236 |
237 | 李青决定要和这些怪兽作战,于是他找到了奥特曼,一起和怪兽作战。
238 |
239 | 他们经历了艰苦的战斗,最终李青用他的超能力,冰冻了怪兽,让它们无法动弹,终于拯救了这个世界。
240 |
241 | 李青和奥特曼一起把怪兽消灭,这个世界也得到了安宁。
242 |
243 | 李青最后又封印自己,等待着未来的一天,他知道,有一天他会被召唤,去拯救这个世界。"
244 | 22,秦,冰冻大海,艰难,"
245 |
246 | 秦朝时期,有一位英雄人物叫做赵英,他是一个勇敢的将军,曾经带领秦军击败了许多强大的敌人。但是有一天,他在一次战斗中被一个神秘的力量击中,被冰冻在了大海里。
247 |
248 | 几千年后,赵英突然被唤醒,发现自己穿越到了现代,他发现自己拥有了冰冻大海这样的超能力,他决定用这种力量来拯救这个世界。
249 |
250 | 于是,赵英加入了奥特曼的队伍,帮助他们对抗怪兽的威胁。他们经历了一场艰苦的战斗,最终击败了怪兽,拯救了世界。
251 |
252 | 赵英的英勇行为被所有人所称赞,他得到了众多的赞誉,成为了一个永恒的英雄。他也把自己的超能力用来帮助那些需要帮助的人,为他们带来希望。
253 |
254 | 赵英最终成为了一个传奇人物,他的故事传遍了世界,被许多人所熟知。他的勇敢和正义,永远激励着人们坚持正义,勇往直前,拯救世界。"
255 | 23,秦,冰冻大海,艰难,"
256 |
257 | 穿越到现代的秦朝英雄人物,叫做小明。他出生在一个普通的农村家庭,父母双亡,他唯一的家人是他叔叔。小明从小就展现出超越常人的智慧和勇气,叔叔很早就发现了他的特殊能力,便带着他来到了秦朝的都城,在秦朝的时候,小明拥有了冰冻大海的超能力,他可以用冰冻的力量来抵抗敌人,他可以控制冰冻的力量,让敌人无法动弹。
258 |
259 | 小明在秦朝的时候,参加了许多的战斗,他用他的超能力,帮助秦朝打败了许多强大的敌人,他成为了秦朝的英雄,受到了百姓的爱戴。
260 |
261 | 小明穿越到了现代,他发现这个时代,有很多怪兽出现,他们对人类造成了巨大的伤害,为了拯救人类,小明决定加入奥特曼,和他们一起打败怪兽。
262 |
263 | 小明和奥特曼一起,经历了一系列艰苦的战斗,他们一次次的用小明的超能力,击败了怪兽,最终,小明和奥特曼一起,成功的拯救了人类,小明也因此成为了现代的英雄。"
264 | 24,秦,冰冻大海,勇敢,"
265 |
266 | 秦朝时期,有一位英雄人物叫陆游,他勇敢、忠诚、有着不屈不挠的精神。一次,他在抵抗野蛮外族的战斗中,立下赫赫战功,使秦朝得以统一天下。
267 |
268 | 但是,他却意外地穿越到了现代。他发现,自己可以冰冻大海,拥有了超能力,这让他感到非常惊讶。
269 |
270 | 他决定利用自己的超能力,加入奥特曼的队伍,与怪兽们作战,保护世界的和平。
271 |
272 | 于是,他和奥特曼们一起,踏上了冒险的旅程。他们在经历了艰苦的斗争后,终于成功击败了怪兽,拯救了世界。
273 |
274 | 最后,陆游也回到了自己的时代,他的事迹传遍了大汉,被人们称为“英雄”,他的精神也被广大群众所推崇。
275 |
276 | 从此,陆游成为了一位永恒的英雄,他的事迹也被永远铭记在人们的心中。"
277 | 25,秦,冰冻大海,勇敢,"
278 |
279 | 这是一个发生在秦朝时期的故事,一位叫秦岩的英雄人物,他拥有着勇敢和超凡的能力,他曾经帮助秦始皇统一六国,把中国统一成一个大国。
280 |
281 | 但是,秦岩却有一个不可告人的秘密,他拥有一种神秘的力量,这种力量让他能够穿越时空,穿越到了现代,却发现现代的世界受到了怪兽的侵害,他知道自己必须要拯救这个世界,于是他加入了奥特曼的队伍,一起与怪兽抗争。
282 |
283 | 秦岩在战斗中发挥出了自己的超能力,他能够冰冻大海,让怪兽无法前进,也能够发出强大的能量,击退怪兽,最终,秦岩和奥特曼一起战胜了怪兽,拯救了这个世界。
284 |
285 | 最终,秦岩又重新回到了秦朝,但他的英雄事迹却被世人所铭记,他的英勇和超能力让他成为了一个传奇人物,他的故事也被流传了下来,让人们永远记住他的英勇行为。"
286 | 26,秦,冰冻大海,勇敢,"
287 |
288 | 穿越到现代的秦朝英雄人物叫高翔,他拥有一种超能力,可以冰冻大海。他曾带领秦军征服过许多强大的国家,以及打败无数的怪兽。
289 |
290 | 一天,高翔发现了一个可怕的怪兽,它正在攻击一个城市,这个怪兽的力量非常强大,高翔决定要去阻止它。他准备好了,他使用他的超能力冰冻了大海,然后他穿越了大海,走到了怪兽的面前。
291 |
292 | 高翔和怪兽进行了一场激烈的战斗,他不断用自己的超能力攻击怪兽,但怪兽的力量也很强大,他们的战斗持续了很久,最后,高翔终于打败了怪兽。
293 |
294 | 在战斗过程中,高翔发现了一个奥特曼,奥特曼也加入了战斗,他们一起打败了怪兽。最后,城市重新恢复了和平,人们都很感激高翔及其他英雄的努力。
295 |
296 | 高翔结束了他的旅程,他回到了现代,他的超能力一直伴随着他,他也决定继续保护世界免受怪兽的侵害。"
297 | 27,秦,冰冻大海,辛苦,"
298 |
299 | 一位叫做秦朝时期的英雄人物,他叫桃源,桃源有着一身超能力,他可以冰冻大海,他也有着无穷的勇气,他每天都在努力奋斗,他希望能够改变世界的局面。
300 |
301 | 但是,桃源的英勇行为却让他穿越到了现代,他不知道自己的身份,他只知道自己有着超能力,他也知道自己必须要拯救这个世界。
302 |
303 | 桃源毅然决然地投身到了奥特曼的战斗中,他冰冻大海,使得怪兽无法前进,他也不断地使出各种超能力,帮助奥特曼一起打败了怪兽。
304 |
305 | 最终,桃源和奥特曼一起成功地拯救了世界,而桃源也慢慢地认清了自己的身份,他发现自己是一位英雄,他为自己的英勇行为感到骄傲。
306 |
307 | 桃源终于可以安心地回到自己的时代,他的英勇行为也让他在秦朝时期成为了一位传奇的英雄人物,他的故事也被流传了下来。"
308 | 28,秦,冰冻大海,辛苦,"
309 |
310 | 一位叫做秦霄的英雄人物,他是在秦朝时期出生的,他拥有超凡的勇气和智慧,他可以穿越时空,来到现代,他拥有超能力,可以冰冻大海,也可以控制风暴。
311 |
312 | 秦霄接受了一项任务,帮助奥特曼,一起对抗恶魔怪兽,秦霄发挥了自己的超能力,冰冻大海,控制风暴,阻止怪兽的进攻,同时,他也发挥了自己的勇气,和怪兽进行激烈的战斗,最终,他们成功地消灭了怪兽,拯救了人类。
313 |
314 | 秦霄用自己的勇气和智慧,成功地完成了这次任务,他为自己的英勇行为感到骄傲,也为自己的超能力感到自豪,他把这次经历当做一次财富,为自己的人生增添了光彩。"
315 | 29,秦,冰冻大海,辛苦,"
316 |
317 | 秦朝时期,有一位叫做屈原的英雄人物,他拥有一种神奇的超能力,可以冰冻大海,让海水变成冰块,把怪兽冻住。
318 |
319 | 一天,屈原突然被一道神秘的光芒笼罩,他被带到了现代,发现自己已经拥有了超能力。他知道,只有他才能拯救这个世界,于是他加入了奥特曼的队伍,和他们一起打败怪兽。
320 |
321 | 他们经历了许多艰难的战斗,但最终,屈原用自己的超能力,冰冻了大海,将怪兽冻住,最终成功拯救了世界。
322 |
323 | 屈原回到了自己的时代,他的英勇行为被世人所知,他也成为了一位历史上的英雄人物。"
324 | 30,秦,流星火雨,轻松,"
325 |
326 | 穿越时空的秦朝英雄——陈青,他曾经是一名勇猛的秦朝将军,曾多次成功的完成任务,拯救百姓,受到百姓的爱戴。
327 |
328 | 有一天,陈青意外的被一道强大的时空之门吞噬,他穿越了时空,来到了当今社会,他发现自己意外的拥有了一种超能力,可以召唤流星火雨,这让他非常惊讶,他知道自己可以用这种能力来帮助别人。
329 |
330 | 就在这时,他接到了一个召唤,那是一只可怕的怪兽,它正在摧毁城市,众多的人受到了威胁,陈青立刻出动,他召唤出流星火雨,击败了怪兽,保护了人民的安全。
331 |
332 | 在这场战斗中,陈青还得到了奥特曼的帮助,他们一起击退了怪兽,拯救了人民。最终,陈青回到了秦朝,成为一名受人尊敬的英雄,而他的超能力也被记录在了史册中。"
333 | 31,秦,流星火雨,轻松,"
334 |
335 | 秦朝时期,一位英勇的英雄人物叫做李晓明,他曾经参加过许多战争,屡建奇功,英勇善战,他在一次英勇的战斗中牺牲了,但他的精神和英勇终将永存于史册。
336 |
337 | 几千年后,李晓明突然出现在现代,他发现自己拥有了一种神奇的超能力,他拥有流星火雨,可以轻松的击败敌人。
338 |
339 | 他发现地球遭受到了怪兽的威胁,他决定拯救地球,于是他和奥特曼一起开始了一场艰苦的战斗,他们经过激烈的战斗,最终成功击败了怪兽,拯救了地球。
340 |
341 | 李晓明用他的英勇和超能力,最终成功地拯救了地球,他的精神也将永远被铭记在史册中。"
342 | 32,秦,流星火雨,轻松,"
343 |
344 | 秦朝时期,一位叫做李靖的英雄人物,他有着无比强大的实力,能够拥有流星火雨这样的超能力,他的口号是“秦朝的英雄,李靖!”
345 |
346 | 在一次古老的传说中,李靖被封印在一块古老的石头中,沉睡了几千年,直到有一天,他被一位叫做奥特曼的英雄救了出来,他被带到了现代,开始了他的新生活。
347 |
348 | 李靖发现他的超能力已经被激活,他可以通过流星火雨攻击,毁灭一切。他和奥特曼一起,开始了反抗怪兽的旅程,他们在激烈的战斗中,击败了许多怪兽,最终成功拯救了世界。
349 |
350 | 李靖的传奇故事,传遍了整个世界,他成为了一位英雄,被人们所尊敬。他的故事,也让人们深深的记住,在不可能的情况下,勇敢的坚持,可以改变一切。"
351 | 33,秦,流星火雨,努力,"
352 |
353 | 英雄人物阿蔡是一位秦朝的将军,他拥有无比的勇气和勇敢,带领军队打败了许多强大的敌人,令秦朝得以建立。
354 |
355 | 一天,阿蔡突然被一道强大的光芒包裹,穿越到了现代。他惊讶地发现,自己有了超能力,可以召唤流星火雨,可以把一切变得更美好。
356 |
357 | 阿蔡决定利用自己的能力,去帮助奥特曼,打败邪恶的怪兽。他召唤流星火雨,击败了怪兽,保护了人类。
358 |
359 | 最终,在阿蔡的帮助下,奥特曼和人类一起成功击败了怪兽,拯救了世界。
360 |
361 | 从此,阿蔡成为了一个传奇,他的传说流传至今。在秦朝,他是一位勇敢的将军,在现代,他是一位英雄,用自己的超能力,帮助人类拯救世界。"
362 | 34,秦,流星火雨,努力,"
363 |
364 | 秦朝时期,有一位叫李白的英雄人物,他拥有无可匹敌的勇气和智慧,曾经帮助秦始皇统一六国,成为历史上最伟大的英雄。后来,李白穿越到了现代,他发现自己拥有了一种超能力,可以控制流星火雨,可以随心所欲的改变天气和环境。
365 |
366 | 李白决定利用自己的超能力,帮助奥特曼一起打败怪兽,他和奥特曼们一起组成了一支强大的战斗小队,他们一起将怪兽击败,拯救了整个世界。
367 |
368 | 在战斗中,李白毫不犹豫地投入到战斗中,他用流星火雨将怪兽强大的攻击击退,他的英勇行为得到了众人的赞赏。在最后,李白和奥特曼一起成功击败了怪兽,拯救了世界。
369 |
370 | 最后,李白被奥特曼们誉为“英雄”,他回到了秦朝时期,他的传奇故事被口耳相传,被记载了下来,成为了历史上最伟大的英雄。"
371 | 35,秦,流星火雨,努力,"
372 |
373 | 秦朝时期,有一位叫李靖的英雄人物,他拥有着超强的力量,可以控制时间,穿越空间。
374 |
375 | 一天,他突然发现自己穿越到了现代,但是他的超能力却没有发挥出来,他只有一种超能力——流星火雨,可以召唤流星一起攻击敌人。
376 |
377 | 李靖看到现代的世界,有着无尽的威胁,他决定把自己的力量用来保护世界,他和奥特曼一起,奋力战斗,打败了许多怪兽,保护了人类。
378 |
379 | 最终,他们成功地拯救了世界,李靖也回到了秦朝时期,但是他的力量永远不会消失,他会一直守护着人类,永不放弃,继续保护世界。"
380 | 36,秦,流星火雨,艰难,"
381 |
382 | 秦始皇统一中国,开创了秦朝,它的英雄人物也一一崭露头角。其中有一位叫樊哙的英雄,他拥有超凡的能力,可以控制时间、空间,甚至可以穿越时空。
383 |
384 | 一天,樊哙穿越到了现代,发现自己拥有了一种神奇的超能力,就是流星火雨,可以将怪兽摧毁。他决定将这种能力用来拯救人类,于是开始了他的英雄之旅。
385 |
386 | 樊哙来到了怪兽的老巢,发现这里满是各种各样的怪兽,他们正在破坏这个世界,樊哙不由得怒火中烧,他决定和怪兽们展开激烈的战斗。
387 |
388 | 樊哙和怪兽们展开了激烈的战斗,他用流星火雨攻击怪兽,击溃了怪兽的大部分力量,最终樊哙取得了胜利。
389 |
390 | 此时,奥特曼出现了,他们也参与了这场战斗,最终奥特曼和樊哙一起打败了怪兽,拯救了这个世界。
391 |
392 | 最终,樊哙回到了秦朝,他的英雄事迹传遍了整个秦朝,他也被尊为英雄,他的故事也被传颂了无数年。"
393 | 37,秦,流星火雨,艰难,"
394 |
395 | 秦朝时期,一位叫做李太白的英雄人物,他拥有超凡的武艺,被誉为“神枪手”。有一天,他在森林中捡到了一颗奇怪的宝石,它发出了强烈的闪光,把他吸入其中。
396 |
397 | 李太白穿越到了现代,他发现自己拥有了一种超能力,可以发射流星火雨,让他可以把敌人击晕,还可以控制物体的运动。
398 |
399 | 他发现,现代的世界正面临着一个巨大的威胁,一群怪兽正在破坏世界的和平,李太白决定和奥特曼一起,去拯救这个世界。
400 |
401 | 于是,李太白和奥特曼一起,展开了一场惊心动魄的战斗。他们运用着李太白的超能力,和奥特曼的强大力量,最终成功击败了怪兽,拯救了世界。
402 |
403 | 李太白在现代的世界里,拥有了一种超能力,他用自己的力量,帮助奥特曼一起,拯救了这个世界。他的事迹被所有人所称颂,他也因此成为了一位英雄。"
404 | 38,秦,流星火雨,艰难,"
405 |
406 | 穿越时空,秦朝时期的英雄人物秦梦瑶来到了现代,眼前的一切都让她感到陌生,但是她的英勇和勇敢的精神没有改变,她决定拯救这个世界。
407 |
408 | 她发现自己拥有了超能力,可以控制流星火雨,可以发射出灼热的火焰,可以召唤雷电,可以把怪兽变成灰烬。
409 |
410 | 秦梦瑶决定和奥特曼一起抗击怪兽,她们经历了艰难的战斗,但最终还是击败了怪兽,拯救了世界。
411 |
412 | 秦梦瑶用自己的英勇和勇敢,用自己的超能力,拯救了世界,成为了一个英雄。虽然她回到了秦朝,但她的精神永远不会改变,她的英勇和勇敢将永远留在人们的心中。"
413 | 39,秦,流星火雨,勇敢,"
414 |
415 | 秦朝时期,有一位英雄人物叫做张骞,他拥有超凡的能力,他曾经帮助秦王一起击败了齐国的军队,让秦朝得以统一六国,他也因此获得了秦王的赏识和尊敬。
416 |
417 | 可是,在张骞最后一次出征的时候,他被一颗流星撞中,流星火雨随后袭击了他,给了他一种超能力,他可以控制火焰,可以发射火球,也可以发射冰冷的风暴。
418 |
419 | 没想到,这一次的流星火雨,将张骞带入了现代,在这里,他发现了一群怪兽,正在对人类造成破坏。于是,他决定要和奥特曼一起,用他的超能力来拯救人类,并击败怪兽。
420 |
421 | 经过一场激烈的战斗,张骞和奥特曼一起成功的击败了怪兽,拯救了人类。张骞也因此获得了所有人的赞誉,他也成为了一位真正的英雄。
422 |
423 | 虽然张骞最终没有能够回到自己的时代,但他的壮举和英勇行为,让他永远成为了一位英雄,他的故事也将传承下去,被人们永远铭记。"
424 | 40,秦,流星火雨,勇敢,"
425 |
426 | 一位叫做李世民的秦朝英雄人物在一次被魔法师召唤出来的时候,被发现他拥有了超能力。他可以控制流星火雨,可以让它们飞向他想要的方向,可以把它们变成一道道的光线,然后把怪物击溃。
427 |
428 | 李世民发现自己的超能力能够帮助他解决一些问题,于是他决定利用这种能力去帮助别人。他来到了现代,发现这里有一群叫做奥特曼的英雄们正在与怪兽斗争。李世民加入了他们的行列,用他的超能力帮助他们战胜了怪兽,最终拯救了这个世界。
429 |
430 | 李世民的故事被所有人所熟知,他成为了一位伟大的英雄,他的故事也被传唱了几代人。他用勇敢和智慧去战胜了邪恶,帮助了奥特曼,拯救了这个世界,他的事迹将永远流传于史册之中。"
431 | 41,秦,流星火雨,勇敢,"
432 |
433 | 秦朝时期,有一位英雄人物叫王建,他改变了秦朝的历史。他的勇敢和智慧让他成为秦朝最受尊敬的人物。
434 |
435 | 一天,王建被一道异常的光线所吸引,他发现自己穿越到了现代,这里拥有流星火雨这样的超能力。他知道他必须使用这种超能力来保护这个世界。
436 |
437 | 于是,王建和奥特曼一起拯救了世界,他们共同击败了邪恶的怪兽,拯救了人们的生命。王建用他的超能力和勇气,帮助奥特曼把世界拯救了出来。
438 |
439 | 最后,王建回到了秦朝,他的英勇和智慧得到了众人的赞赏,他的故事也传遍了秦朝的每一个角落。他成为了秦朝最受尊敬的人物。"
440 | 42,秦,流星火雨,辛苦,"
441 |
442 | 秦朝时期,有一位叫做赵龙的英雄人物,他英勇善战,曾参与过秦朝对外征战,取得了众多胜利。一次,赵龙在深山里碰到了一颗神秘的宝石,它被称为“流星之石”,可以让赵龙拥有超能力,把时空之间的界限打破,穿越到现代,成为一个超级英雄。
443 |
444 | 赵龙一穿越而来,便发现了现代世界也有怪兽,奥特曼正在与它们作战,但力量不足,无法击败它们。赵龙决定帮助奥特曼,于是他利用自己的超能力,召唤出流星火雨,击败了众多怪兽,最终取得了胜利。
445 |
446 | 经过这一战,赵龙得到了人们的赞誉,他也成为了一位英雄,为社会做出了贡献,成为了一位受人尊敬的英雄。他的故事也被传颂至今,赵龙也成为了一位永恒的英雄,令人敬仰。"
447 | 43,秦,流星火雨,辛苦,"
448 |
449 | 秦朝时期,一位叫做英雄的人物,他是一位勇敢的战士,他拥有着出色的战斗技巧,曾多次成功地拯救了秦朝的国家。有一次,他被神秘的力量所吸引,被传送到了现代社会。这时,他的身体发生了变化,可以拥有超能力,比如流星火雨等。
450 |
451 | 他在现代社会中,发现了一个叫做奥特曼的英雄,他们一起发现了一群怪兽正在破坏人类的生活,接着,英雄和奥特曼一起开始了激烈的战斗。英雄使用超能力,击败了怪兽,最终,他们成功地拯救了人类,英雄也得到了众人的赞赏和尊重。
452 |
453 | 英雄最终回到了秦朝,但他的精神永远不会改变,他依然勇敢地拯救着秦朝的国家,用自己的力量守护着人民,让人们重拾希望,并且拥有更美好的生活。"
454 | 44,秦,流星火雨,辛苦,"
455 |
456 | 一位叫做秦元的英雄人物,生活在秦朝时期,他曾经是一个著名的将军,受到秦始皇的重用,曾参与过许多攻坚战,拥有了无数的英勇事迹。
457 |
458 | 一次,秦元突然被一道神秘的光线所包围,他突然穿越到了现代,发现自己拥有了流星火雨这样的超能力,他立刻意识到这是一个机遇,可以用来拯救这个世界。
459 |
460 | 于是,秦元加入了奥特曼的行列,他们一起打败了许多怪兽,秦元用他超能力中的流星火雨,攻击着怪兽,让它们无法抵抗,最终成功地拯救了这个世界。
461 |
462 | 秦元的功绩受到了众人的赞誉,他也从此成为了一个英雄,他的故事也流传了下来,被人们铭记于心。"
463 | 45,五代,龙卷风,轻松,"
464 |
465 | 五代朝时,有一位叫林青的英雄人物,他拥有着超凡的武功,在抗击外敌的战斗中,他可以轻易击败敌人,并用自己的力量保护国家不受侵略。
466 |
467 | 林青在一次激战中,不幸被一道龙卷风吹落了悬崖,他没有死,反而从悬崖中穿越了时间,来到了现代。
468 |
469 | 林青发现自己的力量变得更强大,他可以控制龙卷风,可以制造强大的热浪,甚至可以拥有风火雷电的超能力。
470 |
471 | 林青利用自己的超能力,帮助奥特曼一起打败了怪兽,保护了人类免受恐怖分子的侵害。他的英勇行为得到了人们的赞扬,成为了一位英雄。
472 |
473 | 林青回忆起自己在五代朝时的传奇,他知道自己仍然有责任去保护人民,他决定继续努力,用自己的力量保护世界,成为一个真正的英雄。"
474 | 46,五代,龙卷风,轻松,"
475 |
476 | 这是一个发生在五代朝时期的故事。英雄人物叫做张辉,他是一位勇敢的将军,曾经参加过多次战斗,抗击外敌,保护朝廷。
477 |
478 | 一天,张辉发现了一个神秘的洞穴,他勇敢地踏入其中,发现里面有一块神奇的石头,石头上刻有一个古老的文字:“拥有我的人,将获得龙卷风的力量”。张辉把石头拿走了,没想到石头竟然可以让他拥有龙卷风的力量。
479 |
480 | 张辉拥有了龙卷风的力量,他可以轻松地击败外敌,保护朝廷。然而,他也发现自己穿越到了现代,出现了一些怪兽,他们想要毁灭世界。
481 |
482 | 张辉立即出动,他和奥特曼一起,发动了一场惊心动魄的战斗,他们借助龙卷风的力量,击败了怪兽,拯救了世界。
483 |
484 | 最后,张辉回到了他的家乡,他的传奇故事被传唱了几代,他也成为了一位英雄人物,他的名字也被刻在了历史的石碑上。"
485 | 47,五代,龙卷风,轻松,"
486 |
487 | 这是一个关于一位五代朝时期的英雄人物的故事,他叫做李忠。
488 |
489 | 李忠是一个勇敢坚强、极具智慧的人,他曾经参加过许多著名的战役,并取得了胜利。
490 |
491 | 一天,李忠被异次元的魔法师召唤到了现代,魔法师告诉他,他可以拥有一种超能力,可以控制龙卷风,李忠毫不犹豫地接受了这份礼物。
492 |
493 | 从此,李忠变得更加强大,他可以控制龙卷风,攻击敌人,可以轻松击败敌人。
494 |
495 | 一次,李忠和奥特曼一起参加了一场拯救世界的战斗,他们要对抗一群可怕的怪兽。李忠用自己的超能力控制龙卷风,攻击敌人,奥特曼也用自己的武器和技能参与战斗。
496 |
497 | 最终,李忠和奥特曼一起打败了怪兽,拯救了世界。
498 |
499 | 李忠成为了一个英雄,人们都非常尊敬他,他也成为了一个传奇人物,被永远铭记在人们心中。"
500 | 48,五代,龙卷风,努力,"
501 |
502 | 五代朝时期,有一位叫做李宁的英雄人物,他英勇善战,曾经率领军队战胜过多次敌人,令国家安定。
503 |
504 | 有一天,李宁在一次战斗中被一道神秘的光束射中,他的身体被一种古老的能量包围,当他醒来的时候,发现自己穿越到了现代。
505 |
506 | 李宁发现自己拥有了一种神奇的能力,可以控制龙卷风,他可以利用这种能力来解决一些社会上的困难,也可以帮助奥特曼一起战斗,打败怪兽。
507 |
508 | 李宁在现代的世界里,越来越受到人们的尊重和赞赏,他也变得越来越强大,他不仅可以控制龙卷风,还可以召唤风暴,以及使用激光射线等等,他的能力让他成为了一个英雄,大家都称他为“龙卷风侠”。
509 |
510 | 最终,李宁和奥特曼一起战胜了怪兽,使社会得到了安定,李宁也因此而成为了一个永恒的英雄,他的传奇将永远流传下去。"
511 | 49,五代,龙卷风,努力,"
512 |
513 | 五代朝时期,一位叫陈元的英雄人物,凭借自己的勇敢和智慧,帮助当时的皇帝打败了许多强大的敌人,成为了当时朝廷的宠儿。
514 |
515 | 然而,一场大灾难降临,毁掉了陈元的家园,他的家人都不知去向,他只能把自己的家人放在心中,带着自己的家乡的梦想,独自一人踏上了征程。
516 |
517 | 陈元走遍了千里之外,最终来到了一个神秘的山洞,他发现,这里有一只古老的神龙,神龙告诉他,他可以穿越时空,来到现代,并赋予他超能力,让他可以操控龙卷风,帮助奥特曼一起打败怪兽。
518 |
519 | 陈元接受了神龙的指引,来到了现代,他发现这里的世界很不一样,但他仍然坚定地跟随着自己的梦想,努力学习,终于掌握了超能力,并帮助奥特曼一起打败了怪兽。
520 |
521 | 最终,陈元成功地完成了他的使命,他回到了家乡,找到了家人,并被当地人民称赞为英雄,他也用自己的超能力,帮助当地人民解决了许多问题,实现了自己的梦想,赢得了众人的尊敬和爱戴。"
522 | 50,五代,龙卷风,努力,"
523 |
524 | 五代朝时期,有一位叫做小陈的英雄人物,他热爱侠义,勇敢无畏,曾经参与过许多英雄事迹。有一次,他在一次叛乱中突然被一个神秘的力量所吸引,接着,他发现自己穿越到了现代!
525 |
526 | 小陈非常惊讶,他感到自己的力量变得异常强大,竟然能够控制龙卷风,他能够利用龙卷风的力量来击败怪兽。
527 |
528 | 小陈决定利用这种力量来为世界做出贡献,于是他加入了一支叫做奥特曼的英雄团队,与他们一起打击罪恶,保护世界的和平。
529 |
530 | 他们一起打击了许多怪兽,小陈也利用他的超能力,帮助他们取得了胜利。最终,他们成功地拯救了世界,小陈也因此成为了一位英雄。
531 |
532 | 小陈的故事被传唱了几百年,人们都会赞叹他的勇敢和坚毅,他也成为了一个永恒的传奇。"
533 | 51,五代,龙卷风,艰难,"
534 |
535 | 五代朝时期的英雄人物叫做苏轼,他是一个勇敢的文人,他拥有一种神秘的能力,可以穿越时空。
536 |
537 | 有一天,苏轼突然被一股强大的力量吸引,他穿越到了现代,在这里,他发现自己拥有了一种特殊的超能力——龙卷风。
538 |
539 | 苏轼很快就发现,这个世界正面临着一场恐怖的威胁,可怕的怪兽正在横行,伤害着无辜的平民,苏轼决定要用他的超能力拯救这个世界。
540 |
541 | 于是,苏轼与奥特曼结成联盟,他们一起开始了激烈的战斗,苏轼凭借着他的龙卷风,将怪兽一一击溃,最终,他们成功地拯救了这个世界。
542 |
543 | 苏轼也因此成为了现代人们心目中的英雄,他的传奇故事在现代流传了下来,被人们津津乐道,他也成为了永恒的传奇。"
544 | 52,五代,龙卷风,艰难,"
545 |
546 | 穿越了五代朝时期的一位英雄人物,穿越到了现代,发现了自己拥有了超能力,可以控制龙卷风。他叫李华,来自西汉末期。
547 |
548 | 李华发现,他的超能力能够帮助他抵抗外来侵略者,并保护自己的家乡,于是他决定利用自己的力量去拯救世界。
549 |
550 | 于是,李华加入了奥特曼的队伍,帮助他们打败了一个叫做怪兽的可怕的敌人。李华的技能让他们的战斗变得更加轻松,最终,他们成功地拯救了世界。
551 |
552 | 虽然奥特曼们拥有了强大的力量,但是他们还是感谢李华的帮助,因为没有他,他们就无法成功地击败怪兽。
553 |
554 | 经过这次艰难的战斗,李华成为了一位真正的英雄,他的故事也被传颂了几个世纪,他也成为了一个永恒的精神象征,他的力量和勇气也被许多人所敬仰。"
555 | 53,五代,龙卷风,艰难,"
556 |
557 | 五代朝时期,一位英雄人物叫做林清照,他拥有着超凡的力量,曾经帮助朝廷解决了许多困难,被封为“英雄将军”。
558 |
559 | 某天,林清照意外被一道神秘的光线笼罩,穿越到了现代,他发现自己拥有了超能力,可以控制龙卷风,以及一些其他强大的力量。
560 |
561 | 林清照发现,现代的世界也有许多危机,而且比他在五代朝时期的世界更加可怕。他决定担当起责任,帮助人类共同抵抗怪兽的入侵。
562 |
563 | 他和奥特曼一起,经历了许多艰难的战斗,最终,他们击败了怪兽,拯救了世界。
564 |
565 | 林清照的故事,让他的名字在现代世界也流芳百世,他的传奇传承下去,被人们所传颂。"
566 | 54,五代,龙卷风,勇敢,"
567 |
568 | 洪武五年,英雄人物江苏英勇,出身乡下,他有着非凡的勇敢和智慧。他经常在家乡的山谷中练习武术,他的技艺越来越精湛,他的名声也越来越广。
569 |
570 | 有一天,江苏英勇被一位神秘的老人召唤,老人说他有一个重要的任务,要求他穿越到现代,拥有一种超能力,可以操控龙卷风,拯救人类免于灾难。
571 |
572 | 江苏英勇毫不犹豫地接受了这个任务,他穿越到了现代,拥有了一种超能力,可以操控龙卷风,他发现自己可以控制风,可以让风吹向任何方向,可以让风变得更加强大,可以让风带走一切。
573 |
574 | 江苏英勇和奥特曼一起抗击怪兽,他用自己的超能力把怪兽吹走,用龙卷风把怪兽送到遥远的地方,最终他们成功拯救了人类,拯救了世界。
575 |
576 | 江苏英勇的传奇故事传遍了全国,他成为了一位真正的英雄,他的英勇和智慧被人们永远铭记,他的故事也被传唱了几百年。"
577 | 55,五代,龙卷风,勇敢,"
578 |
579 | 五代朝时期,有一位英雄人物叫李晓霞,她的英勇事迹颇为著名。有一天,李晓霞突然发现自己穿越到了现代,她惊讶地发现,自己竟然拥有了神奇的超能力,可以控制龙卷风,把怪兽吹走。
580 |
581 | 李晓霞很快就被奥特曼找到了,他们一起合作,组建了一支超级英雄团队,专门对抗怪兽的侵略。李晓霞的超能力让奥特曼大为惊叹,他们一起开始进行战斗。
582 |
583 | 在一场激烈的战斗中,李晓霞凭借着自己的超能力,帮助奥特曼击败了怪兽,拯救了世界。整个过程中,李晓霞的勇气和坚毅给人留下了深刻的印象,成为了一个传奇人物。
584 |
585 | 最终,李晓霞回到了五代朝,但她永远不会忘记自己的经历,以及她在现代所取得的荣耀。她拥有了一种超越时空的力量,让自己更加坚强勇敢,在未来的日子里,她将继续成为一个英雄,拯救世界。"
586 | 56,五代,龙卷风,勇敢,"
587 |
588 | 这是一个关于一位古老的英雄人物的故事。他叫李林,出生于五代朝时期,他是一个勇敢的人,他曾经参加过多次战争,拯救了无数的人民。
589 |
590 | 有一天,他突然穿越时空,来到了现代,他发现自己拥有了超能力,可以控制龙卷风,可以让它来攻击敌人,拯救受困的人们。
591 |
592 | 于是,他决定加入奥特曼的队伍,和他们一起对抗怪兽。他们一起打了许多胜仗,最终击败了怪兽,拯救了世界。
593 |
594 | 在最后的战斗中,李林拼尽全力,他的龙卷风把怪兽吹走,最终成功地拯救了世界。
595 |
596 | 虽然李林最终返回了五代,但他的传奇故事却被流传了下来,他成为了一个永恒的英雄,永远被人们铭记。"
597 | 57,五代,龙卷风,辛苦,"
598 |
599 | 这是一个关于五代朝时期的英雄人物的故事,他叫张英。张英是一个勇敢的人,他曾经参加过许多战斗,帮助贫苦百姓抵御外来入侵者。
600 |
601 | 一天,张英突然发现自己可以控制风,他可以控制龙卷风,他可以将龙卷风变成任何形状,用来对抗外来入侵者。他很快就发现,他的超能力也可以用来穿越时空,他穿越到了当今的现代世界。
602 |
603 | 当张英穿越到现代世界时,他发现这里有一种叫做奥特曼的超级英雄,他们正在与一种叫做怪兽的怪物作战。于是,张英决定加入他们,用他的超能力来帮助他们打败怪兽。
604 |
605 | 张英和奥特曼一起进行了艰苦的战斗,最终他们成功地打败了怪兽,拯救了这个世界。张英在这场战斗中发挥了至关重要的作用,他的英勇行为得到了众人的赞赏。
606 |
607 | 张英的故事就是这样,他从五代朝时期的英雄人物,穿越到现代,拥有了超能力,通过辛苦的战斗,帮助奥特曼一起打败了怪兽,拯救了这个世界。"
608 | 58,五代,龙卷风,辛苦,"
609 |
610 | 五代朝时期,一位叫李英雄的勇士,拥有超人般的实力,他曾经帮助朝廷打败了外族的侵略者,被封为英雄。
611 |
612 | 一次,李英雄被一道神秘的光芒吸引,经过一番挣扎,他穿越到了现代,发现自己拥有了一种超能力,可以控制龙卷风。
613 |
614 | 李英雄被一群怪兽的侵略吓到了,他决定加入奥特曼的行列,一起抵抗怪兽的侵略。他在训练中发挥出了自己的超能力,把龙卷风当做武器,帮助奥特曼打败了怪兽。
615 |
616 | 最终,李英雄和奥特曼一起成功击退了怪兽,世界得以安宁。李英雄用自己的超能力和勇气,拯救了世界,成为了史上最伟大的英雄。"
617 | 59,五代,龙卷风,辛苦,"
618 |
619 | 李英雄,一位五代朝时期的英雄人物,曾经为中国带来无数荣耀。谁知,一次意外,他被一道神秘的光束射中,穿越到了现代。
620 |
621 | 到了现代,李英雄发现自己拥有了超能力,可以控制龙卷风。他知道,这是上天赋予他的使命,要用自己的力量保护这个世界,消灭一切邪恶。
622 |
623 | 于是,李英雄开始了他的冒险之旅。他把自己藏在一个叫做奥特曼的组织中,与他们一起战斗,抵抗各种怪兽的侵袭。
624 |
625 | 他们一次次的击败了强大的怪兽,他们的勇气和毅力让整个世界都为之鼓掌。李英雄也用自己的超能力,把怪兽们彻底消灭,终于守护了这个世界的和平。
626 |
627 | 李英雄,一位五代朝时期的英雄人物,穿越到了现代,拥有了超能力,最终用自己的力量,与奥特曼一起,打败了怪兽,守护了这个世界的和平。"
628 | 60,五代,冰冻大海,轻松,"
629 |
630 | 这是一个关于五代朝时期的英雄人物的故事,他叫赵英俊。
631 |
632 | 赵英俊是一位勇敢而有抱负的人,他拥有着勇敢和坚毅的心,他经常冒险,探索未知的世界,把自己置身于危险之中。
633 |
634 | 一天,赵英俊发现了一个神秘的洞穴,他探索了洞穴,发现了一个神秘的宝藏,它被称为“超能力之源”。赵英俊觉得这是一个机会,他毫不犹豫地拿走了宝藏,但他并不知道它会给他带来什么。
635 |
636 | 没想到,赵英俊很快就发现了这件宝藏的神奇力量,他可以冰冻大海,控制风暴,甚至可以穿越时空,他穿越到了现代,成为了一个超级英雄,他可以帮助奥特曼一起打败怪兽。
637 |
638 | 赵英俊的故事很快就传遍了整个城市,人们都惊叹他的英勇,他成为了一位英雄人物,他的传奇故事也被永久记录在历史中。"
639 | 61,五代,冰冻大海,轻松,"
640 |
641 | 这个故事发生在五代朝时期,一位叫李白的英雄人物,是当时最强大的武士之一,他拥有极强的武力和勇气,曾经英勇地驱赶了大量的外族入侵者,保护了中原地区的安全。
642 |
643 | 但是,李白不幸死于一场战役,他的灵魂被封印在一块宝石中,被藏在一处神秘的地方,就这样,他就被困在了古老的宝石中。
644 |
645 | 几百年后,李白的宝石被一位叫做王小明的少年发现了,他把宝石带回家,然而,当他把宝石放在桌子上时,宝石突然爆炸,李白的灵魂从宝石中释放出来,他变成了一个看起来和小明一样的少年。
646 |
647 | 小明感到很惊讶,但是他也很高兴,因为他发现了一位英雄人物——李白。李白被封印了几百年,但他拥有超能力,可以冰冻大海,轻松地击败怪兽。
648 |
649 | 于是,李白和王小明一起帮助奥特曼,一起去打败怪兽,最终他们成功地拯救了世界,李白也成为了一个真正的英雄,他的故事传遍了整个大陆。"
650 | 62,五代,冰冻大海,轻松,"
651 |
652 | 五代朝时期,有一位英雄人物,叫陈大宝,他拥有令人敬畏的武功,曾被誉为“神一般的人”。然而,他却被一场大灾难击倒,穿越到了现代的世界。
653 |
654 | 到了现代,陈大宝发现自己拥有了超能力,可以冰冻大海,可以轻松击败任何敌人。他也发现,现代的世界也有怪兽出没,他们想要毁灭世界。
655 |
656 | 于是,陈大宝决定和奥特曼一起,去拯救世界。在一次次艰苦的战斗中,他们最终打败了怪兽,拯救了世界。
657 |
658 | 最后,陈大宝又回到了五代朝时期,他的传奇故事也被记录了下来,被流传至今,被人们所铭记。"
659 | 63,五代,冰冻大海,努力,"
660 |
661 | 这是一个发生在五代朝时期的故事。一位叫做李元霸的英雄人物,他有着超凡的武功,曾经英勇地拯救过许多被怪兽抓走的人们,在当时的百姓眼中,他是一位真正的英雄。
662 |
663 | 可是,一场大灾难将他的命运改变了。李元霸被一股强大的力量吸引,穿越到了现代,他发现自己拥有了一种超能力,可以冰冻大海,让海水凝固,从而改变海洋的形状。
664 |
665 | 李元霸意识到,自己的超能力可以帮助他拯救更多的人,于是他加入了奥特曼,一起对抗怪兽。他凭借自己强大的力量,和奥特曼一起,战胜了许多强大的怪兽,保护了人类的安全。
666 |
667 | 最终,李元霸成功地完成了他的使命,他的英雄事迹被流传于世。他带着他的超能力,又回到了五代朝时期,继续守护着人民,保护他们的安全。"
668 | 64,五代,冰冻大海,努力,"
669 |
670 | 五代朝时期,一位英雄人物,他叫苏荃,他有着超凡的武力,他曾经拯救过无数的人民,他是英雄中的英雄,但是他却被贴上了“罪人”的标签,他被迫流放,离开了自己的家乡,他的心中充满了悲伤。
671 |
672 | 一个科学家,他发现了一个神秘的入口,他发现这个入口可以带领他们进入一个神秘的世界,这里有着超自然的力量,于是他们决定把苏荃带进去,让他获得这些超自然的力量。
673 |
674 | 苏荃经历了一次漫长的旅程,他来到了一个神秘的世界,这里有着超自然的力量,他得到了一种叫做“冰冻大海”的超能力,他可以用这种超能力来控制大海,从而改变世界。
675 |
676 | 苏荃拥有了这种超能力,他发现世界上有着一种叫做怪兽的存在,他们正在摧毁人类的世界,苏荃决定要去拯救人类,他和奥特曼一起,用他的超能力,帮助奥特曼打败了怪兽,最终,他们成功拯救了人类,苏荃回到了自己的家乡,他受到了大家的热烈欢迎,他又重新成为了英雄中的英雄。"
677 | 65,五代,冰冻大海,努力,"
678 |
679 | 五代朝时期,有一位叫罗罗的英雄人物,他勇敢坚强,有着不屈不挠的精神。他曾经帮助过很多人,受到了很多人的尊敬。
680 |
681 | 有一天,罗罗被一个神秘的力量抓住了,这个力量把他带到了现代,罗罗发现自己拥有了一种超能力,可以冰冻大海。
682 |
683 | 罗罗发现,现代世界也有怪兽威胁着人们的安全,于是他决定努力战斗,帮助奥特曼一起打败怪兽。
684 |
685 | 他和奥特曼一起经历了许多艰苦的战斗,但他们最终还是成功了。罗罗用他的超能力冰冻了怪兽,奥特曼则用他的武器将怪兽彻底消灭。
686 |
687 | 最终,罗罗和奥特曼一起成功拯救了人们,罗罗也成为了受人尊敬的英雄。他用自己的力量拯救了世界,让世界更加美好。"
688 | 66,五代,冰冻大海,艰难,"
689 |
690 | 英雄人物叫李立,他是五代朝时期的一位将军,曾参加过许多著名的战争,英勇善战,深受皇室宠爱。
691 |
692 | 一天,李立突然发现自己身处于一个陌生的现代世界。他不知道发生了什么,但他发现自己拥有了一种神奇的超能力,可以冰冻大海,把它变成一片冰雪的景象。
693 |
694 | 李立开始寻找着自己的宿命,他发现自己被召唤到这个世界,是为了帮助奥特曼拯救人类免遭恐怖怪兽的侵害。
695 |
696 | 他立即准备好了,勇敢地和怪兽展开激烈的战斗,李立发挥出了自己的超能力,凭借自己的勇敢、智慧和坚强,最终和奥特曼一起打败了怪兽,拯救了人类。
697 |
698 | 李立展现出了英雄的风采,他把自己的超能力作为一种责任,用来保护人类,他也带着自己的勇敢和智慧,在现代世界里展示出了英雄的风采。"
699 | 67,五代,冰冻大海,艰难,"
700 |
701 | 五代朝时期,江湖中传说有一位英雄人物,他可以控制天地万物,拥有无穷的力量。他曾经帮助过当时的皇帝,击退了数以万计的敌人,让国家安定。然而,当时的技术水平有限,他也无法穿越时空,被困在了五代朝时期。
702 |
703 | 直到有一天,一个神秘的穿越者出现在他面前,把他带到了现代。在现代,他发现自己拥有了超能力,可以冰冻大海,可以控制风雪,可以控制天空。他发现自己可以做到远超过以前五代朝时期的力量。
704 |
705 | 他接受了神秘穿越者的挑战,帮助奥特曼一起打败怪兽,守护人类的安全。在一场艰难的战斗中,他凭借自己的超能力和智慧,最终战胜了怪兽,拯救了人类。
706 |
707 | 他成为了现代的英雄,他的传奇故事在整个世界传播开来,他的名字也被写进了史册。他也成为了一个可以永远被人们铭记的英雄,他的传奇将永远流传下去。"
708 | 68,五代,冰冻大海,艰难,"
709 |
710 | 这是一个英雄传奇,有一位叫做张三的英雄人物,他出生于五代朝时期,他身怀超人般的能力,可以冰冻大海,控制天气,令人惊叹。
711 |
712 | 有一天,张三突然被一股神秘的力量吸引,他被带到了现代,这里的一切都是陌生的,他有点迷茫,但他仍然保持着坚强的信念。
713 |
714 | 没过多久,突然有一群怪兽出现了,企图毁灭地球,张三立刻出手,利用自己的超能力,将怪兽击退,但他们的力量越来越强大,张三只能求助于奥特曼,两者结成联盟,共同对抗怪兽。
715 |
716 | 经过几场惊心动魄的战斗,张三和奥特曼终于击败了怪兽,拯救了地球。张三回到了他的时代,成为了传奇,人们称他为“冰冻大海”,为他的英勇行为而赞誉。"
717 | 69,五代,冰冻大海,勇敢,"
718 |
719 | 这是一个关于五代朝的传奇故事,讲述的是一位叫英俊的英雄人物,他生活在五代朝时期,是一位勇敢的英雄,他拥有着惊人的战斗力,曾经帮助过许多人,被人们称为“英俊”。
720 |
721 | 一天,英俊突然发现自己穿越到了现代,被一种神秘的力量所吸引,他发现自己拥有了一种特殊的能力,能够冰冻大海,他知道这种能力是他被选中的原因,他必须将这种能力用于正义的事业。
722 |
723 | 于是,英俊决定踏上一段冒险之旅,他来到了奥特曼的世界,发现了一群怪兽正在威胁着人类,他决定用自己的超能力来拯救世界,于是,他和奥特曼一起开始了一场艰苦的战斗,他用冰冻大海的能力将怪兽一一击败,最终,英俊和奥特曼一起成功拯救了世界,人们称赞他是一位英雄。
724 |
725 | 英俊最终回到了五代朝,他将自己的英勇事迹传扬出去,被人们称为“英俊”,他的故事也被永远记录在史册中,被人们永远铭记。"
726 | 70,五代,冰冻大海,勇敢,"
727 |
728 | 这是一个关于五代朝时期英雄的故事。他叫陆游,出生于一个贫穷的农民家庭,他从小就充满了好奇心,有着无比的勇气和智慧。
729 |
730 | 有一天,陆游接到了一个神秘的任务,他要去一个叫做“神秘岛”的地方,找到一个叫做“超能力之源”的东西。在他的旅程中,他经历了无数的困难和挑战,最终,他成功地找到了超能力之源,并获得了超能力,能够冰冻大海,控制风暴,让地球变得更加美好。
731 |
732 | 随着他的超能力的加强,他变得越来越强大,他开始拯救世界,把恶魔赶出地球。有一天,他穿越了时空,穿越到了现代,他发现了一种叫做怪兽的可怕生物,它们正在摧毁地球。
733 |
734 | 于是,陆游与奥特曼一起,使用自己的超能力,与怪兽展开了激烈的战斗。最终,他们成功地把怪兽赶出了地球,拯救了人类,被尊为英雄。
735 |
736 | 陆游的故事传遍了整个世界,他成为了一个传奇,永远被人们铭记。他的英勇行为激励了无数人,他的精神也永远延续。"
737 | 71,五代,冰冻大海,勇敢,"
738 |
739 | 这是一个关于一位古代英雄的故事,他叫陆游,他出生于五代朝时期,他有着英勇的胆识,勇敢无畏,曾经参与过多次著名的战役。
740 |
741 | 一天,陆游突然发现自己穿越到了现代,他惊恐地发现,自己已经拥有了超能力,可以冰冻大海!他的第一反应是担心自己的家人,他想要回去,但他又不知道怎么做。
742 |
743 | 然而,他很快就发现,现代的世界正面临着一个可怕的威胁,一群怪兽正在肆虐,他们想要毁灭世界。陆游认为,自己有义务要去拯救这个世界,于是他加入了奥特曼的队伍,一起与怪兽作战。
744 |
745 | 陆游发挥出了自己的超能力,他可以冰冻大海,使怪兽无法攻击,也可以制造出一道道大海的屏障,抵挡怪兽的攻击。最终,他和奥特曼一起,成功击败了怪兽,拯救了世界。
746 |
747 | 陆游的英勇行为得到了世界的赞誉,他也回到了自己的时代,拥有了一份美好的回忆。他从此成为了一个永恒的英雄,他的传奇故事也将被世人永远铭记。"
748 | 72,五代,冰冻大海,辛苦,"
749 |
750 | 五代朝时期,有一位英勇的英雄人物,他叫穆安。穆安拥有极高的武功,曾经帮助五代朝人民抵抗外敌,取得了巨大的胜利。
751 |
752 | 一天,穆安突然被神秘的力量拖入了另一个时空,他来到了现代的世界。在这里,他获得了超能力,可以冰冻大海,把敌人冻结在原地,让他们无法动弹。
753 |
754 | 穆安把他的超能力用在了正义的事业上,他和奥特曼一起,抵抗着来自外太空的怪兽,他们辛苦战斗,最终取得了胜利。
755 |
756 | 穆安的功绩传遍了全世界,他成为了一个新的英雄,他的英勇事迹被永远铭记在人们的心中。"
757 | 73,五代,冰冻大海,辛苦,"
758 |
759 | 这是一个关于英雄的故事,他的名字叫穆晓清,他是五代朝时期的英雄人物,他有一种超能力,可以冰冻大海。
760 |
761 | 穆晓清有一次被一个叫做罗斯的可怕的怪兽抓住,他想要把穆晓清变成他的奴隶,但穆晓清坚持不懈,发挥出他的超能力,冰冻了大海,让罗斯无法移动,最终成功逃脱。
762 |
763 | 穆晓清被神灵传送到了现代,他发现现代的世界被罗斯的怪兽统治,他决定和奥特曼一起打败怪兽,于是他又开始发挥他的超能力,冰冻大海,阻止怪兽的进攻,最终穆晓清和奥特曼一起成功击败了罗斯和他的怪兽,拯救了世界。
764 |
765 | 穆晓清回到了五代朝时期,他用自己的英勇和超能力拯救了两个世界,成为了一个永恒的英雄。"
766 | 74,五代,冰冻大海,辛苦,"
767 |
768 | 英雄人物叫谭家,他来自五代朝时期,是一位勇敢的战士,曾经参与过许多战斗,拯救了无数人民。一天,他突然发现自己穿越到了现代,他惊讶不已,但很快就适应了这个新的环境。
769 |
770 | 谭家发现自己拥有了一种神奇的超能力,可以冰冻大海。他知道这是一种强大的力量,可以帮助他拯救更多的人民,于是他决定加入奥特曼团队,与他们一起对抗怪兽。
771 |
772 | 在谭家的帮助下,奥特曼团队成功击败了怪兽,拯救了众多的人民,这次成功的行动也让谭家受到了全国的赞誉。他的英勇行为为人们留下了深刻的印象,他也成为了一位真正的英雄。"
773 | 75,五代,流星火雨,轻松,"
774 |
775 | 这是一个关于英雄的故事。
776 |
777 | 故事的主人公是一位五代朝时期的英雄人物,他的名字叫陈青。他拥有一种奇特的能力,可以将思想转化为实际行动,他的能力让他成为了一位英雄。
778 |
779 | 有一天,陈青被传送到了现代,他发现自己拥有了一种新的能力,可以控制流星火雨,让它们变成他的武器。
780 |
781 | 陈青发现,现代世界正面临着一个可怕的威胁,一群怪兽正在摧毁人类的家园。他决定动身,和奥特曼一起,用他的新能力,帮助人类抵抗这群怪兽的侵略。
782 |
783 | 陈青和奥特曼一起,发动了一场惊心动魄的战斗。他们利用陈青的超能力,击退了怪兽,拯救了人类的家园。
784 |
785 | 最后,陈青回到了五代朝时期,他的英勇行为被历史记录下来,被人们铭记于心。他成为了一位英雄,永远被人们铭记。"
786 | 76,五代,流星火雨,轻松,"
787 |
788 | 五代朝时期,有一位英雄人物叫做张林。他拥有一身不可思议的力量,每次出征战斗都能轻松取胜,让敌人闻风丧胆。
789 |
790 | 一天,张林不知为何感觉自己的身体发生了微妙的变化,他发现自己的身体有了超能力,可以发射出流星火雨,并且可以穿越时空,来到了现代。
791 |
792 | 穿越到现代后,张林发现世界上出现了许多怪兽,他立刻意识到了自己的使命,于是他发誓要拯救世界,和奥特曼一起打败怪兽。
793 |
794 | 张林和奥特曼结伴而行,他们在各地展开了一波又一波的战斗,凭借着张林的超能力,他们每次战斗都能轻松取胜,最终成功地拯救了世界。
795 |
796 | 张林在保护世界的过程中,也收获了许多经历和感受,他深深体会到了生命的真谛,他认识到,只有拥有真正的力量,才能真正拯救世界。"
797 | 77,五代,流星火雨,轻松,"
798 |
799 | 五代朝时期,有一位叫做李通的英雄人物,他有着无人能及的武功,受到了众人的敬仰。一次,李通被一股神秘的力量抽离了时空,穿越到了现代。
800 |
801 | 在现代,李通发现自己身上有了超能力,可以控制流星火雨,可以轻松地击败一切怪兽。他发现了奥特曼正在与怪兽作战,于是决定助其一臂之力。
802 |
803 | 他立刻把流星火雨对准怪兽,击溃了它们,让奥特曼大吃一惊。李通拯救了奥特曼,他们一起把怪兽全部击溃,拯救了整个城市。
804 |
805 | 李通获得了众人的赞赏,但他知道,他的超能力只是暂时的,他必须回到自己的时代。最终,李通离开了现代,回到了五代朝时期,继续他的英雄之路。"
806 | 78,五代,流星火雨,努力,"
807 |
808 | 五代朝时期,有一位英雄人物叫小明,他是一个勇敢坚定的少年,他拥有着超乎常人的智慧和勇气,在五代朝时期,他曾经成功地拯救了整个国家免遭灾难。
809 |
810 | 后来,小明穿越到了现代,他发现自己身上拥有了超能力,可以控制流星火雨,他发现自己可以帮助奥特曼一起打败怪兽。于是,小明经过不懈的努力,和奥特曼一起成功击败了怪兽,拯救了人类。
811 |
812 | 小明也因此成为了当代英雄,他的故事也被传颂了下来。他拥有的超能力,也让他更加坚强,他不仅在拯救世界上发挥了重要作用,在社会上也变得更加受人尊敬,他的事迹也被记录下来,被后人永远铭记。"
813 | 79,五代,流星火雨,努力,"
814 |
815 | 五代朝时期,一位叫李明的英雄人物,他拥有强大的武力,曾经帮助他的父亲赢得了战争的胜利。然而,他的命运却被一场大灾难所折磨,他被一颗流星火雨所击中,从而被传送到了现代。
816 |
817 | 当他到达现代,他发现自己的身体发生了变化,他已经拥有了超能力,可以把流星变成火球,然后射出去,来攻击敌人。他也发现,现代的世界里,有一种叫做“奥特曼”的英雄,他们在与怪兽的斗争中,需要他的帮助。
818 |
819 | 于是,李明加入了奥特曼的行列,他用自己的超能力,帮助奥特曼一起打败了怪兽,拯救了世界。
820 |
821 | 最终,李明用他的勇敢和智慧,赢得了所有人的尊重和敬仰,他成为了一位拯救世界的英雄。他也成为了一个传奇,流芳百世,被人们永远铭记。"
822 | 80,五代,流星火雨,努力,"
823 |
824 | 五代朝时期,有一位叫林少的英雄人物,他有着超凡的武功,勇敢无畏,为了保护他的家乡,他毅然决然地投身到了战斗之中。他用自己的力量,帮助百姓抵抗外敌的侵略,拯救了家乡的人民。
825 |
826 | 有一天,林少和他的朋友们正在讨论着如何抵抗外敌,突然,天空中出现了一道火流,就像流星一样,划过天空,落在林少身上,而他也被带到了另一个世界。
827 |
828 | 林少发现,自己穿越到了现代,而且获得了一种超能力,可以控制流星火雨。他知道,这种能力可以帮助他完成他的使命,于是,他决定拯救这个世界,和奥特曼一起打败怪兽。
829 |
830 | 林少利用自己的超能力,制造出了强大的武器,和奥特曼一起,他们打败了怪兽,拯救了世界。最后,林少被尊为英雄,他的传奇故事也被传唱了下去,被人们永远铭记。"
831 | 81,五代,流星火雨,艰难,"
832 |
833 | 这是一个关于一位五代朝时期的英雄人物的故事,他叫李英宝。
834 |
835 | 李英宝是一位勇敢的将军,他曾参加过许多战役,英勇无畏,深受帝王的爱戴。但是有一天,他在一场大战中惨遭失败,被敌军围困,最终不得不选择死亡。
836 |
837 | 然而,李英宝并没有死去,而是穿越了时空,来到了现代。他发现自己身怀绝技,可以控制流星火雨,可以改变天气,可以控制风暴,可以把怪兽打倒,甚至可以改变未来。
838 |
839 | 于是,李英宝决定将自己的能力用于正义的事业,与奥特曼一起,抗击邪恶的怪兽,保护世界的和平。
840 |
841 | 他们经历了许多艰辛,最终击败了怪兽,拯救了世界。李英宝也因此成为了一位英雄,他的传奇故事也被流传了下来。"
842 | 82,五代,流星火雨,艰难,"
843 |
844 | 五代朝时期,一位叫做“钱宁”的英雄人物,凭借着自己的勇敢和聪明,成为当时朝廷中的一道亮丽的风景线。
845 |
846 | 一天,钱宁在打仗的时候,突然被一道神秘的光芒所包围,他突然发现自己穿越到了现代,他发现自己拥有了流星火雨这样的超能力,他可以控制火焰,可以控制风,可以控制雷电,可以控制冰冻。
847 |
848 | 钱宁发现,在现代,怪兽们正在摧毁人类的世界,他决定用自己的超能力去帮助奥特曼一起打败怪兽。于是,他和奥特曼开始了一场艰苦的战斗。
849 |
850 | 钱宁用自己的超能力,击退了怪兽,他用火焰烧毁了怪兽的船只,用风吹散了怪兽的空中部队,用雷电击晕了怪兽的地面部队,用冰冻冻结了怪兽的武器。最终,钱宁和奥特曼一起成功击退了怪兽,拯救了人类的世界。
851 |
852 | 最终,钱宁又回到了五代朝时期,他的传奇故事也被世人所熟知,他成为了英雄人物,为人类的安危做出了重大的贡献。"
853 | 83,五代,流星火雨,艰难,"
854 |
855 | 五代朝时期,一位绰号“铁骑猛将”的英雄人物担任着官府的重任,他果断勇敢,拿捏大局,深受百姓爱戴。
856 |
857 | 但是,一次意外,他被一道神秘的光线所击中,他的身体突然开始发生变化,他的身体可以抵抗弹丸,他的力量可以穿越时空,他的身体可以发射出流星火雨,他变成了一个超能力者。
858 |
859 | 他穿越到了现代,发现这个世界面临着一场浩劫,一群怪兽正在横行霸道,摧毁着人类的家园。他决定拯救这个世界,于是,他加入了一支联合国组成的超级英雄团队,与奥特曼一起,展开了一场惊心动魄的战斗。
860 |
861 | 他们艰苦卓绝地抗击着怪兽,他以超能力为武器,把怪兽们一一击溃,他们最终击败了怪兽,拯救了人类的家园。
862 |
863 | “铁骑猛将”从此成为了英雄,他的传奇故事也流传了下来,被千百年来的人们所铭记。"
864 | 84,五代,流星火雨,勇敢,"
865 |
866 | 这是一个关于一位五代朝时期的英雄人物的故事。他叫小明,是一个勇敢的将军,他为了保卫自己的国家,抗击外敌,经历了无数次的战斗,最终取得了胜利。
867 |
868 | 可是,一场意外的事件,让小明被传送到了现代,他发现自己有了超能力,可以控制流星火雨,他也发现了怪兽的存在,他们正在危害着人类。
869 |
870 | 小明决定拯救人类,他带领着一群勇敢的士兵,与怪兽展开了激烈的战斗,他们用尽了全部的力量,最终取得了胜利,小明也成为了人们心中的英雄。
871 |
872 | 小明最终回到了自己的时代,他将自己的超能力带回了自己的国家,为自己的国家做出了巨大的贡献。他也成为了当时最受尊敬的将军,人们称他为“流星小明”。
873 |
874 | 小明的故事,被流传了几百年,他的勇敢和英勇,被人们铭记在心,他也成为了当代人们心中的英雄。"
875 | 85,五代,流星火雨,勇敢,"
876 |
877 | 五代朝时期,一位叫做李靖的英雄人物,他的勇敢和智慧令他的名字在当时广为流传。
878 |
879 | 不久,李靖发现他的身体发生了变化,他的肌肉变得更强壮,他的力量也变得越来越强,他拥有了流星火雨这样的超能力,可以放出一阵阵火焰,击败任何敌人。
880 |
881 | 李靖知道这是上天赐予他的恩赐,他决定将这份恩赐用来保护世界,他加入了奥特曼的队伍,和他们一起对抗怪兽的恶势力。
882 |
883 | 在一次激烈的战斗中,李靖发挥了他的超能力,放出一阵阵火焰,击败了怪兽,最终成功保护了世界免受灾害。
884 |
885 | 在战斗结束后,李靖感受到了一股强大的力量,他发现自己穿越了时空,来到了现代,他拥有了更强大的力量,可以改变世界的命运。
886 |
887 | 李靖拥有了超能力,他和奥特曼一起,勇敢地打败了怪兽,拯救了世界。他被所有人尊称为“英雄”,他的故事也被传唱了几百年,被记载在历史中,永远流传下去。"
888 | 86,五代,流星火雨,勇敢,"
889 |
890 | 这是一个五代朝时期的英雄故事,他叫李明,是一位勇敢的武士,他拥有一股强大的勇气,坚定的信念,他肩负着使命,拯救世界免受邪恶势力的侵害。
891 |
892 | 一天,李明发现了一颗流星,他被它的神秘所吸引,决定接近它,当他走近时,流星发出了强大的光芒,把他包围在里面,他感到自己的身体发生了变化,他的力量变得更强,他的感官也变得更加敏锐,他发现自己拥有了一种超能力,可以控制流星火雨,这让他非常惊喜。
893 |
894 | 李明决定利用自己的能力来拯救世界,他和奥特曼一起组成了联盟,去抗击邪恶势力,他们经历了许多艰苦的战斗,最终成功地击败了怪兽,拯救了世界。
895 |
896 | 李明的故事被传唱了几百年,他不仅是一位英雄,也是一位勇敢的战士,他用他的超能力,帮助人类拯救世界,他的传奇永远被人们铭记。"
897 | 87,五代,流星火雨,辛苦,"
898 |
899 | 这是一个关于五代朝时期英雄人物穿越到现代的故事。
900 |
901 | 一个叫做苏梅的英雄,来自五代朝时期,他被转世到了现代,拥有了超能力,能够控制流星火雨,控制风暴,甚至可以控制时间。
902 |
903 | 他被召唤到奥特曼的世界,与奥特曼一起对抗恶魔怪兽,他们联合起来,一起抗击恶魔怪兽的大军。苏梅用他的超能力,控制流星火雨,攻击怪兽,击溃了他们的防御,压制住了他们的进攻,最终成功击败了怪兽。
904 |
905 | 苏梅在奥特曼的世界里,发挥了自己的超能力,他的英勇行为,拯救了奥特曼,他也因此受到了众人的尊敬和爱戴。
906 |
907 | 苏梅的故事,让人们感受到了勇气和智慧,他的英勇行为,也让人们记住了他,他的传奇故事,也将被传颂至后世。"
908 | 88,五代,流星火雨,辛苦,"
909 |
910 | 五代朝时期,有一位叫李峰的英雄人物,他曾经英勇地为国家作出过许多贡献。有一天,他忽然被一道神秘的光芒吸引,被带到了现代。
911 |
912 | 李峰发现自己拥有了一种超能力,叫做流星火雨,可以发射出火球,并可以控制天气。他也发现了一个新的世界,充满了各种怪兽。
913 |
914 | 他决定要保护这个世界,于是结识了奥特曼,一起对抗怪兽。他们拼尽全力,经过辛苦的战斗,最终成功地把怪兽击退,拯救了这个世界。
915 |
916 | 李峰成为了一个英雄,他的英勇行为受到了全世界的称赞。他不仅拯救了这个世界,还把自己的超能力传授给了奥特曼,让他们更好地保护这个世界。
917 |
918 | 李峰和奥特曼一起保护着这个世界,他们的传奇故事被传颂了几代人,李峰也成为了五代朝时期的英雄人物。"
919 | 89,五代,流星火雨,辛苦,"
920 |
921 | 这是一个关于一位五代朝时期的英雄人物的故事,他叫小明,他生活在中国的五代朝时期,他是一个勇敢的战士,他经常参加战斗,为国家和人民做出贡献。
922 |
923 | 有一天,小明在一场激战中被一道闪电击中,他被带到了现代,他惊讶地发现,他拥有了不可思议的超能力,他能够召唤流星雨,发射火球,还能够控制风暴。
924 |
925 | 小明发现,他所处的世界正在被一群怪兽攻击,他决定加入奥特曼,与他们一起打击怪兽。他用他的超能力,与奥特曼一起,打败了怪兽,拯救了这个世界。
926 |
927 | 小明的英勇行为受到了所有人的赞赏,他成为了一个英雄,他的传奇故事也被记录下来,被传颂了几百年。他的勇敢和英勇故事,令人感动,让人永远不会忘记他的英雄事迹。"
928 | 90,隋,龙卷风,轻松,"
929 |
930 | 隋朝时期,有一位叫做阿福的英雄人物。他拥有一种超乎寻常的勇气和智慧,他曾经帮助过许多人,受到了许多人的尊敬。
931 |
932 | 一天,阿福突然被一个神秘的能量吸引到一个古老的洞穴中,他发现洞穴中有一块神秘的石头,他不知道这是什么,但他感到了一股强大的能量。
933 |
934 | 于是,阿福把这块石头带回家,他发现这块石头给他带来了超能力,他可以控制龙卷风,可以轻松地击败敌人,甚至可以穿越时空,来到现代,成为一个超级英雄。
935 |
936 | 他穿越到现代,结识了奥特曼,并与他一起打败了许多怪兽。他和奥特曼一起打败了外星怪兽,拯救了世界,受到了世界的赞扬和尊重。
937 |
938 | 最后,阿福回到了隋朝,继续他的英雄事迹,他的传奇故事也被记载在历史书上,成为了永恒的传说。"
939 | 91,隋,龙卷风,轻松,"
940 |
941 | 隋朝时期,有一位叫做李元霸的英雄人物,他的勇敢和英勇令人叹为观止。他曾经参与过许多激烈的战斗,有时甚至是以自己的生命为代价,去保护自己的家乡。
942 |
943 | 但是,在一次战斗中,他被击败了,而且他的身体也被毁掉了。他被安排进入了一个神秘的空间,在那里他拥有了一种超能力,可以控制龙卷风。
944 |
945 | 他穿越到了现代,在这里他发现了一群怪兽正在攻击人类。他立刻出手帮助奥特曼,以他的超能力,轻松地击败了怪兽们。
946 |
947 | 最终,李元霸和奥特曼一起成功地拯救了人们,他也被尊为英雄,他的名字也被永远载入史册。"
948 | 92,隋,龙卷风,轻松,"
949 |
950 | 穿越者李白身为隋朝时期的英雄人物,他拥有着一股超自然的力量,为了完成他的使命,他穿越到了现代,他拥有了龙卷风这样的超能力,他可以随心所欲地控制风,他可以利用风来攻击敌人,也可以利用风来给自己提供保护。
951 |
952 | 李白穿越到现代的时候,发现空气中充满了负面的能量,他发现这里出现了一群怪兽,正在破坏着这里的一切,他决定和奥特曼一起出手,帮助他们打败这些怪兽。
953 |
954 | 于是,李白和奥特曼一起出发,他利用自己的超能力,控制着龙卷风,攻击着怪兽,最终,他和奥特曼一起成功地打败了怪兽,拯救了这个世界。
955 |
956 | 李白拥有了超自然的力量,他不仅可以拯救这个世界,还可以帮助人们实现梦想,他的故事也被记录下来,流传了下来,让更多的人知道,勇敢的人,可以拯救这个世界。"
957 | 93,隋,龙卷风,努力,"
958 |
959 | 从古老的隋朝,一位叫做李白的英雄人物被传说中的神秘力量穿越到了现代。他被赋予了一种特殊的能力,可以控制龙卷风。
960 |
961 | 李白在现代的世界里感到陌生,但他也很快适应了这里的生活。他发现自己可以用自己的能力帮助别人,于是他便加入了一个叫做奥特曼的团队,一起抵抗怪兽的侵略。
962 |
963 | 在奥特曼的带领下,李白学会了如何运用自己的能力,他的龙卷风变得越来越强大,李白也变得越来越勇敢,在一次又一次的战斗中,他帮助奥特曼一起击败了许多怪兽。
964 |
965 | 最终,李白和奥特曼一起成功地拯救了这个世界,李白也受到了世人的尊敬和爱戴。他也因此成为了一个英雄,被人们永远铭记。"
966 | 94,隋,龙卷风,努力,"
967 |
968 | 这是一个关于一位隋朝英雄的故事,他叫李明。李明是一个勇敢的战士,他曾参加过许多著名的战役,赢得了许多胜利。
969 |
970 | 一天,李明偶然发现了一个神秘的洞穴,他决定进去探索。当他走进洞穴时,他发现自己穿越到了现代,身处一个陌生的世界。
971 |
972 | 这时,李明发现自己竟然拥有了一种特殊的超能力——龙卷风!他可以控制风的力量,让它活跃起来,形成一道道强大的风暴,可以攻击敌人,也可以保护自己和他人。
973 |
974 | 李明很快就发现,这个世界正面临着一场可怕的威胁——怪兽!他们正在摧毁这个世界,给人们带来恐惧和痛苦。
975 |
976 | 李明决定用自己的超能力,和奥特曼一起,共同抵抗这些怪兽。他们一起努力战斗,最终成功地击退了怪兽,拯救了这个世界。
977 |
978 | 李明在这场战斗中表现出了英勇无畏的精神,他为人们带来了安宁与希望,被称为英雄。他的故事被传颂了许多年,被人们永远铭记。"
979 | 95,隋,龙卷风,努力,"
980 |
981 | 一个叫李忠的隋朝时期的英雄人物,在一次和怪兽的战斗中,被一道时空裂缝吞噬,穿越到了现代。
982 |
983 | 李忠没有因为跨越时空而感到畏惧,而是努力融入现代社会,学习新的知识,掌握新的技能。在这期间,他发现自己拥有了一种超能力:龙卷风!
984 |
985 | 李忠利用自己的超能力,和奥特曼一起,把怪兽一个个击退。他们不仅拥有超强的战斗力,而且还有李忠的龙卷风,让他们可以把怪兽抓住,然后将其彻底消灭,最终成功地拯救了世界。
986 |
987 | 李忠成为了一位英雄,他的努力和超能力被所有人所称赞,他也因此成为了一位传奇,被永远铭记在人们的心中。"
988 | 96,隋,龙卷风,艰难,"
989 |
990 | 隋朝时期,一位叫陈宝玉的英雄人物,他拥有一种神秘的力量,可以操控风暴,改变天气。
991 |
992 | 有一天,他被一只古怪的机器人召唤到了现代,它告诉他,这个世界面临着一个叫做“怪兽”的巨大威胁。它们拥有强大的力量,可以摧毁一切,甚至连奥特曼都无法抵抗。
993 |
994 | 于是,陈宝玉决定拯救这个世界,他利用自己的力量,召唤出龙卷风,将怪兽击退。在一场激烈的战斗中,他与奥特曼一起,最终成功击败了怪兽,拯救了世界。
995 |
996 | 最后,陈宝玉回到了隋朝,他受到了全国人民的尊敬,成为了一位传奇人物。他也被人们称为“龙卷风之主”,因为他拥有了一种超自然的力量,可以操控风暴,改变天气。"
997 | 97,隋,龙卷风,艰难,"
998 |
999 | 隋朝时期,一位叫做杨过的年轻英雄,拥有超凡的武功,他曾跟隋朝最强大的武林高手大战三百回合,最终双方各自收获满足,杨过也因此被众人尊称为“神雕侠侣”。
1000 |
1001 | 然而,一场突如其来的龙卷风把杨过卷走了,他发现自己穿越到了现代,而且拥有了一种超能力——龙卷风!他发现自己可以利用这种超能力,控制风的方向和强度,来帮助自己战斗。
1002 |
1003 | 杨过发现,现代的世界也有着许多怪兽,他们企图破坏人类的社会秩序,于是,杨过加入了奥特曼的队伍,一起打败邪恶的怪兽。
1004 |
1005 | 在一次次艰难的战斗中,杨过发挥了自己的超能力,他可以利用龙卷风来攻击怪兽,也可以使用风力来帮助奥特曼瞬间移动,从而使他们躲过怪兽的攻击。最终,在杨过的帮助下,奥特曼们打败了怪兽,拯救了人类。
1006 |
1007 | 杨过回到了自己的时代,他的传奇故事因此流传开来,被人们永远铭记。"
1008 | 98,隋,龙卷风,艰难,"
1009 |
1010 | 这是一个关于一位隋朝时期的英雄人物的故事。他叫做李世民,他拥有超能力,可以操控龙卷风。
1011 |
1012 | 一天,李世民突然穿越到了现代,他感到十分困惑,但他很快就适应了这种新环境。
1013 |
1014 | 没过多久,他就发现了一群怪兽正在破坏城市,李世民意识到了自己的责任,他决定保护这座城市,于是他召唤出龙卷风,将怪兽击退。
1015 |
1016 | 此时,奥特曼也出现了,他们和李世民一起与怪兽展开了激烈的战斗。李世民利用自己的超能力,操控龙卷风,与怪兽进行激烈的肉搏战,最终,他们成功地击败了怪兽,拯救了这座城市。
1017 |
1018 | 最后,李世民回到了他的时代,他成为了一位英雄,为他的祖国做出了巨大的贡献。"
1019 | 99,隋,龙卷风,勇敢,"
1020 |
1021 | 这个故事发生在隋朝时期,有一位叫李明的英雄人物,他是个勇敢的战士,他拥有超凡的力量,可以把敌人击退。有一次,李明在战斗中受到了重创,他的身体慢慢变得虚弱,他被送到了一座神秘的山洞里。
1022 |
1023 | 在山洞里,李明发现了一把神奇的剑,这把剑蕴含着巨大的力量,可以让他变得更加强壮。他拿起剑,突然被一股强大的力量吸引住,他被一股时空能量带到了现代,变成了一个超能力者。
1024 |
1025 | 李明发现自己拥有了龙卷风这样的超能力,他可以利用这种力量来保护世界,于是他加入了奥特曼的队伍,和他们一起打败了多个怪兽。他勇敢的战斗,让世界摆脱了灾难,他也得到了众人的赞许。
1026 |
1027 | 最后,李明发现自己可以利用自己的超能力来改变世界,他决定留在现代,继续保护这个世界,让世界变得更美好。"
1028 | 100,隋,龙卷风,勇敢,"
1029 |
1030 | 从古老的隋朝时期,一位英勇的英雄来到了现代,他叫做李铁。他原本是一个普通的士兵,但他凭借自己勇敢的精神,一步步走向了英雄的位置。
1031 |
1032 | 然而,穿越到现代后,李铁意外拥有了一种超能力,他可以控制龙卷风,并使用它来对抗邪恶势力。
1033 |
1034 | 李铁拥有了这种超能力,他决定去帮助奥特曼一起对抗怪兽。于是,他与奥特曼一起出发了,他们在路上遇到了许多危险,但李铁凭借他的勇气和超能力一一克服了困难。
1035 |
1036 | 最终,他们成功地消灭了怪兽,李铁也成为了一位真正的英雄,他的事迹也被数百万人永远记住。李铁用他的勇敢和超能力,拯救了世界,他也成为了一代英雄。"
1037 | 101,隋,龙卷风,勇敢,"
1038 |
1039 | 一位叫做萧炎的隋朝英雄,拥有强大的战斗力,他曾经帮助隋朝抵御外敌入侵,成为了当时最受尊敬的英雄。
1040 |
1041 | 但是,隋朝最终还是被外敌攻破,萧炎也失去了生命。
1042 |
1043 | 然而,萧炎的灵魂却被一只神秘的鸟带到了现代,他发现自己拥有了龙卷风这样的超能力,可以制造出一股强大的风暴,击退一切敌人。
1044 |
1045 | 于是,萧炎就加入了奥特曼的队伍,他们一起打败了怪兽,拯救了世界。萧炎的英勇行为也让他得到了全世界的赞赏。
1046 |
1047 | 最后,萧炎又回到了隋朝,他的壮举也被永远载入史册,成为了永恒的传说。"
1048 | 102,隋,龙卷风,辛苦,"
1049 |
1050 | 隋朝时期,有一位叫做李元霸的英雄人物,他拥有着惊人的武功,曾经拯救了无数人民免遭暴君的折磨。但是,在一次和暴君的交战中,李元霸被暴君的强大法术封印了起来。
1051 |
1052 | 几百年后,李元霸穿越到了现代,他发现自己拥有了一种新的超能力,可以控制龙卷风,并且可以召唤出一只巨大的雷电龙,这让他充满了希望。
1053 |
1054 | 于是,李元霸决定与奥特曼一起,去拯救受到怪兽攻击的人们。他们拼尽全力,最终成功击败了怪兽,拯救了无数的生命,让人们重新拥有了和平的生活。
1055 |
1056 | 李元霸的英勇行为得到了全世界的赞扬,他也成为了一位传奇的英雄人物,他的故事也被记录在了史册中,被世人永远铭记。"
1057 | 103,隋,龙卷风,辛苦,"
1058 |
1059 | 这个故事的主人公是一位隋朝时期的英雄人物,他叫苏轼。在隋朝,苏轼曾经展现出自己的英勇和顽强,他曾经帮助隋朝统治者驱逐了一群侵略者,为国家做出了伟大的贡献。
1060 |
1061 | 然而,就在苏轼要完成最后一个任务的时候,一场大灾难降临到了隋朝,苏轼被一阵龙卷风卷走了,他的身体穿越了时空,来到了现代,他发现自己拥有了龙卷风这样的超能力。
1062 |
1063 | 苏轼在现代社会中也要展现出自己的英勇和顽强,他和奥特曼一起,通过辛苦的战斗,打败了一群怪兽,拯救了世界。最终,苏轼完成了自己的使命,他被大家称为“英雄”,而他也回到了自己的时代,永远留在了历史的长河中。"
1064 | 104,隋,龙卷风,辛苦,"
1065 |
1066 | 一位叫曹操的英雄人物,他生活在隋朝时期,他拥有一种超能力,可以控制龙卷风。曹操深知自己的责任,毅然决定把自己的能力用于正义的事业。
1067 |
1068 | 曹操穿越到了现代,发现这个世界陷入了危机,一群怪兽正在摧毁这个世界,让人们生活在恐惧中。曹操决定加入奥特曼,一起对抗这些怪兽。
1069 |
1070 | 曹操和奥特曼们经历了许多艰苦的战斗,曹操用自己的超能力控制龙卷风,击退了怪兽们。最后,曹操和奥特曼们击败了怪兽,拯救了世界,英勇地完成了使命。
1071 |
1072 | 曹操的故事激励了许多人,让他们知道,只要有信念,就能够改变世界。曹操也被人们永远铭记,他成为了一位英雄,为世界带来了希望与勇气。"
1073 | 105,隋,冰冻大海,轻松,"
1074 |
1075 | 隋朝时期,有一位英雄人物,叫陈秋,他勇敢、坚强,也拥有一身超凡的武功。他身边总是被邪恶势力所驱使,他不惧怕,勇敢地抵抗,他凭借自己的武功,把邪恶势力全部消灭,让世界变得更加安宁。
1076 |
1077 | 某一天,陈秋突然发现自己穿越到了现代,他发现自己拥有了一种神奇的超能力——冰冻大海。这种超能力让他可以轻松地控制大海的方向,让他可以改变大海的流向,甚至可以冰冻大海!
1078 |
1079 | 陈秋发现,现代的世界也遭到了邪恶势力的威胁,他义无反顾地决定把自己的超能力用来拯救世界,他和奥特曼一起,以冰冻大海的超能力,与怪兽们进行激烈的战斗,最终成功地把邪恶势力全部消灭,拯救了世界。
1080 |
1081 | 陈秋用自己的英勇行为,成为了一个传奇,他的故事也被传唱了几百年,让后人们永远记住他,他也成为了一个永恒的英雄。"
1082 | 106,隋,冰冻大海,轻松,"
1083 |
1084 | 隋朝时期,有一位叫曹丕的英雄人物,他凭借自己的勇敢和智慧,曾经让隋朝拥有过多年的和平与安宁。
1085 |
1086 | 一天,曹丕突然发现自己穿越到了现代,他惊讶地发现,自己突然具有了一种超能力,可以冰冻大海,让他可以控制水流,改变航线,以及让敌人的船只无法移动。
1087 |
1088 | 曹丕发现,现代世界正面临着一种可怕的怪兽威胁,于是他决定加入奥特曼的战斗,帮助他们消灭这种怪兽。
1089 |
1090 | 曹丕凭借自己的超能力,轻松地控制了大海,让怪兽无法逃脱,最终,在奥特曼的帮助下,曹丕成功地消灭了怪兽,拯救了世界。
1091 |
1092 | 曹丕从此成为了一位英雄,他的英勇和智慧,在现代世界里也流传了下来,让人们记住了他的伟大,让他永远被人们铭记。"
1093 | 107,隋,冰冻大海,轻松,"
1094 |
1095 | 隋朝时期,有一位英雄人物,叫做李安。他拥有无与伦比的勇气,被誉为大英雄。有一天,李安突然被神秘的能量所吸引,穿越到了现代。李安发现自己拥有了一种超能力,可以冰冻大海,从而控制大海的浪潮。
1096 |
1097 | 李安很快就发现,现代世界也有怪兽出没,它们摧毁一切,威胁着人类的安全。李安决定要加入到奥特曼的行列,一起保护人类。
1098 |
1099 | 李安和奥特曼一起,用他的超能力,与怪兽展开激烈的战斗。他冰冻大海,使怪兽无法移动,然后奥特曼就可以轻松击败它们。最终,李安和奥特曼一起,成功击败了怪兽,守护了人类的安全。
1100 |
1101 | 李安把他的超能力留给了奥特曼,从此,奥特曼便有了一位新的英雄伙伴,继续保护着人类。李安也回到了自己的时代,成为了永恒的英雄,被人们永远铭记。"
1102 | 108,隋,冰冻大海,努力,"
1103 |
1104 | 隋朝时期,一位叫李志的英雄人物,他在战斗中表现出英勇无畏,勇敢抗击敌人,以及对同胞的无私奉献,赢得了不少人的尊敬。
1105 |
1106 | 然而,在一场激烈的战斗中,李志不幸被一道神秘的光束击中,他的身体被冻结在时间的尽头,一直沉睡到了现代。
1107 |
1108 | 当他醒来时,发现自己拥有了超能力,可以冰冻大海,可以控制风雪,可以操控天气,这让他大为惊讶。
1109 |
1110 | 李志决定将这种超能力用来拯救人类,他开始与奥特曼一起作战,打败恶魔怪兽,拯救受害者,恢复和平。
1111 |
1112 | 在一次次战斗中,李志不断变强,他的超能力也越来越强大,最终,他和奥特曼一起战胜了怪兽,拯救了人类。
1113 |
1114 | 李志成为了这个时代的英雄,他的事迹传唱于世,被人们永远铭记。他用自己的力量和勇气,把人类从危险中拯救出来,成为了一个永恒的英雄。"
1115 | 109,隋,冰冻大海,努力,"
1116 |
1117 | 隋朝时期,有一位叫做“英雄”的英雄人物,他拥有超强的战斗力,曾经成功地拯救了隋朝末期的国家。他被视为一位英雄,并受到了广大民众的尊崇。
1118 |
1119 | 一天,英雄被一个神秘的光圈吸引,然后就消失了。当他醒来时,发现自己身处在一个陌生的世界——现代世界。他惊讶地发现,自己的身体已经发生了巨大的变化,拥有了冰冻大海这样的超能力。
1120 |
1121 | 英雄决定利用自己的能力,为人类作出贡献。于是,他加入了奥特曼的队伍,参与了对抗怪兽的战斗。他凭借自己的勇敢和智慧,帮助奥特曼一起打败了怪兽,拯救了世界。
1122 |
1123 | 英雄的事迹被传了开来,他受到了全世界的尊敬和赞赏。他也被视为一位英雄,象征着勇气和智慧。英雄最终回到了自己的家乡,并留下了一句话:“只要你勇敢,智慧,就一定能够战胜一切困难!”"
1124 | 110,隋,冰冻大海,努力,"
1125 |
1126 | 这位英雄叫李白,他是一位隋朝时期的大将军,他拥有一种超能力,可以冰冻大海,也可以控制天气。
1127 |
1128 | 一天,他突然被一股神秘的力量吸引到了一个叫“奥特曼”的世界,这里满是怪兽,正在威胁着人类的生存。他看到了人类的苦难,决定要用自己的超能力帮助奥特曼一起打败怪兽,保护人类的安全。
1129 |
1130 | 他开始努力战斗,用他的冰冻大海的能力击退怪兽,用他的控制天气的能力驱散恶劣的天气,他的英勇行为很快得到了奥特曼的认可,并被任命为将军,与奥特曼一起打败怪兽。
1131 |
1132 | 最终,他和奥特曼一起战胜了怪兽,拯救了人类,他受到了人类的热烈欢迎,成为了一个英雄。
1133 |
1134 | 李白回到了自己的时代,但他的超能力却一直伴随着他,他用自己的超能力帮助那些需要帮助的人,成为了一个真正的英雄,永远被人们所铭记。"
1135 | 111,隋,冰冻大海,艰难,"
1136 |
1137 | 隋朝时期,英雄人物小青被称为“英雄小青”,他拥有着超凡的武功,帮助百姓抗击外敌,英勇无畏,为国家立下了汗马功劳。
1138 |
1139 | 一天,小青被神秘力量吸引,穿越到了现代,他发现自己拥有了一种超能力,可以冰冻大海。他也发现,现代世界也有怪兽出没,而他的超能力可以帮助奥特曼一起打败它们。
1140 |
1141 | 于是,小青和奥特曼开始了一场艰苦的战斗,他们发挥了自己的超能力,克服了重重困难,最终成功击败了怪兽。
1142 |
1143 | 小青回到了自己的时代,他不仅回到了家乡,而且还成为了一个英雄,他的故事传遍了大江南北,被人们铭记在心。"
1144 | 112,隋,冰冻大海,艰难,"
1145 |
1146 | 隋朝时期,有一位叫做李文革的英雄人物,他拥有着非凡的勇气和智慧,帮助隋朝维护国家的稳定。在一次英勇的战斗中,李文革被投入了一个神秘的洞穴,他发现这里有一个神秘的石碑,上面刻着一些神秘的文字。他不知道这是什么,但他深信这是一个神秘的力量。
1147 |
1148 | 于是,他毅然把石碑搬回家,在家里静静地研究了起来,慢慢地,他发现石碑上写着的是一种古老的魔法,可以让他拥有超能力,比如冰冻大海。
1149 |
1150 | 他用这种超能力,和奥特曼一起,打败了一个叫做怪兽的可怕生物,拯救了世界。
1151 |
1152 | 经过这次英勇的战斗,李文革发现自己已经穿越到了现代,他还拥有了冰冻大海这样的超能力,可以帮助奥特曼拯救世界。
1153 |
1154 | 从此,李文革成为了一位具有传奇色彩的英雄,他的故事被传颂了几百年,他的英勇行为也激励了无数人。"
1155 | 113,隋,冰冻大海,艰难,"
1156 |
1157 | 隋朝时期,有一位叫李宏的英雄人物,他拥有一种神奇的能力,可以利用风力控制大海,他经常帮助当地的渔民疏通河道,使他们捕鱼更容易,也帮助村民们解决困难。
1158 |
1159 | 可是,随着时间的推移,李宏发现他的能力越来越强大,他可以冰冻大海,甚至可以控制时间,他也发现自己可以穿越时空,穿越到现代。
1160 |
1161 | 穿越到现代后,李宏发现这个世界充满了危险,怪兽们正在控制着这个世界,企图毁灭人类。李宏决定要帮助人类抵抗怪兽的入侵,于是他联系了奥特曼,帮助他们打败怪兽。
1162 |
1163 | 在一场激烈的战斗中,李宏用他的超能力冰冻大海,使怪兽无法移动,而奥特曼则用他们的武器攻击怪兽,最终他们击败了怪兽,拯救了人类。
1164 |
1165 | 李宏用他的超能力,帮助人类摆脱了危险,成为了一位英雄,他和奥特曼一起被人们所尊敬,而他也因此成为了一个传奇。"
1166 | 114,隋,冰冻大海,勇敢,"
1167 |
1168 | 隋朝时期,一位英勇的将军汉宁出生于军旅之家,他的梦想是为国家做出贡献,于是他热血沸腾,加入了军队,担任将军,为国家作出了无数贡献。
1169 |
1170 | 一次,汉宁受命出征,结果却遭遇了大规模的叛乱,汉宁拼尽全力,终于成功镇压了叛乱,但他也因此而牺牲。
1171 |
1172 | 汉宁的灵魂被转移到了现代,他发现自己拥有了超能力,可以冰冻大海,他发誓要继续为国家作出贡献,于是他加入了奥特曼的队伍,帮助奥特曼一起打败怪兽。
1173 |
1174 | 勇敢的汉宁和奥特曼们经过激烈的战斗,最终成功击败了怪兽,拯救了世界。汉宁因此成为了一位英雄,他的事迹传遍了整个世界,永远被人们铭记。"
1175 | 115,隋,冰冻大海,勇敢,"
1176 |
1177 | 这是一个关于英雄的故事,发生在隋朝时期的中国。一位叫陈晓明的君主,在抗击外敌的战争中,他勇敢地与敌人作战,最终取得了胜利。在胜利后,陈晓明受到各种赞扬,他被尊称为“英雄”。
1178 |
1179 | 但是,一个神秘的力量将陈晓明穿越到了现代,他发现自己拥有了一种超能力,可以冰冻大海!他开始思考,自己究竟能做些什么?
1180 |
1181 | 于是,他决定加入奥特曼的队伍,一起打败怪兽,拯救世界。他发挥着自己的超能力,勇敢地与怪兽作战,最终取得了胜利。
1182 |
1183 | 陈晓明成为了一位英雄,他的故事被传颂了,人们称赞他的勇敢和英勇。他也被尊称为“超级英雄”,他的英雄事迹被永久地记录在历史上。
1184 |
1185 | 从此,陈晓明成为了一个永恒的英雄,他的英勇和勇敢,将永远铭记在人们的心中。"
1186 | 116,隋,冰冻大海,勇敢,"
1187 |
1188 | 隋朝时期,有一位叫陆游的英雄人物,他勇敢无畏,深受当地人民的拥戴。一天,他和他的伙伴们正在追捕一只凶残的野兽,突然一道强烈的光芒从天而降,将他们全部吞没,陆游穿越了时空,来到了现代。
1189 |
1190 | 到了现代,陆游发现自己拥有了一种神奇的超能力,可以冰冻大海,这让他有了一种强大的力量。他决定拿出这种力量,与奥特曼一起抗击邪恶的怪兽,为人类的幸福而战斗。
1191 |
1192 | 于是,陆游和奥特曼开始了一场激烈的战斗,他们用他们的超能力,一起抵抗怪兽的攻击,最终,他们成功地击败了怪兽,拯救了人类。
1193 |
1194 | 这场战斗,让陆游受到了全世界人民的赞赏,他也成为了一位英雄。他的故事,也被传颂了几千年,让后代们永远记住他的英勇和勇敢,一直流传至今。"
1195 | 117,隋,冰冻大海,辛苦,"
1196 |
1197 | 大隋朝,穿越时空的英雄人物杨元素,他拥有超能力,可以冰冻大海,可以操控风雨,可以操纵时空。
1198 |
1199 | 一天,杨元素突然出现在现代,他被召唤去帮助奥特曼打败怪兽。但是他发现,怪兽的力量太强大了,奥特曼根本无法抵抗。
1200 |
1201 | 杨元素知道自己必须使出最后的力量,于是他决定用自己的超能力,冰冻大海,把怪兽冰封起来,以此来拯救世界。
1202 |
1203 | 他经过艰苦的战斗,终于把怪兽冰封起来,救了世界。杨元素用自己的超能力和勇气,拯救了世界,他成为了一名英雄。
1204 |
1205 | 杨元素的故事,就这样传遍了世界,成为了一个经典的英雄故事。"
1206 | 118,隋,冰冻大海,辛苦,"
1207 |
1208 | 隋朝时期,有一位英雄人物叫苏河,他拥有超能力,能够控制自然,包括冰冻大海。他曾经帮助百姓抗击侵略者,受到了百姓的爱戴。
1209 |
1210 | 一天,苏河被一个神秘的古老法师抽空,穿越到了现代。他发现,现代的世界被一群怪兽所控制,正在破坏环境,威胁着人类的安全。他决定要帮助奥特曼一起抵抗怪兽,保护人类。
1211 |
1212 | 于是,苏河和奥特曼组成了一支小队,开始了激烈的战斗。他们利用苏河的超能力,冰冻大海,使怪兽无法逃脱,最终打败了怪兽,拯救了人类。
1213 |
1214 | 经过这场激烈的战斗,苏河受到了人们的尊重和感激,他也终于回到了自己的时代,继续为百姓作出贡献。"
1215 | 119,隋,冰冻大海,辛苦,"
1216 |
1217 | 这是一个关于隋朝英雄的传奇故事。
1218 |
1219 | 故事发生在隋朝,一位叫做段延庆的英雄,他有一双锐利的眼睛,一副铁青的脸庞,身穿一袭白衣,拔高了他的英姿飒爽。段延庆是一位勇敢的英雄,他曾参加过许多战斗,抵抗了外敌的入侵,保护了国家的安全。
1220 |
1221 | 几百年过去了,段延庆被神秘的力量重新带回了现代,他拥有了一种超能力,可以冰冻大海,这让他变得更加强大。
1222 |
1223 | 段延庆发现了一群可怕的怪兽正在破坏地球,他决定和奥特曼一起去战斗,他用自己的超能力冰冻了怪兽,让奥特曼有机会击败它们。在段延庆的帮助下,奥特曼最终成功击败了怪兽,拯救了地球。
1224 |
1225 | 段延庆是一位伟大的英雄,他用自己的超能力和勇敢的行动,拯救了地球,获得了众人的敬佩。他的传奇将永远流传下去,被人们铭记。"
1226 | 120,隋,流星火雨,轻松,"
1227 |
1228 | 隋朝时期,有一位英雄人物,他叫蒋珊。他生来就有一种特殊的能力,可以控制天气,可以改变天气,可以制造出暴风雨,可以制造出流星火雨。
1229 |
1230 | 蒋珊受到了国家的器重,成为了国家的宝贵财富。但是,一次意外,蒋珊被传送到了现代。
1231 |
1232 | 现代的世界,蒋珊发现自己拥有了更强大的能力,不仅可以改变天气,还可以制造出流星火雨,可以把怪兽打得支离破碎。
1233 |
1234 | 蒋珊决定利用自己的超能力,帮助奥特曼一起打败怪兽。他利用流星火雨,轻松地击败了怪兽,赢得了众人的赞赏。
1235 |
1236 | 最终,蒋珊又回到了隋朝,他成为了当时最伟大的英雄,为国家做出了巨大的贡献。
1237 |
1238 | 蒋珊的故事,让人们深深地感受到了,一个人的勇气和力量,可以改变一切,可以拯救世界。"
1239 | 121,隋,流星火雨,轻松,"
1240 |
1241 | 这是一个关于隋朝时期英雄人物的故事,他叫做小明。小明在隋朝时期因为勇敢的行为而获得了高度的赞誉,他曾经英勇地拯救了一个受困的村庄,赢得了人们的尊重。
1242 |
1243 | 但是,小明并没有在隋朝时期安享安宁,他不久便沦落到了被埋葬的地方。然而,小明的故事并没有就此结束,一场突如其来的流星雨穿越了时空,将小明带到了现代,并给了他超能力。
1244 |
1245 | 小明发现自己可以控制流星火雨,他可以用流星火雨来攻击敌人,并可以利用流星火雨来制造出一道道屏障,来抵御敌人的攻击。
1246 |
1247 | 小明发现,现代的世界也有怪兽的存在,他决定和奥特曼一起去打败怪兽,以守护现代的世界。于是,小明和奥特曼开始了一次又一次的战斗,他们利用小明的流星火雨轻松打败了怪兽,最终守护了现代的世界。
1248 |
1249 | 小明的传奇故事由此流传开来,人们都称赞他的勇敢和英勇,他的故事也成为了现代的英雄传说。"
1250 | 122,隋,流星火雨,轻松,"
1251 |
1252 | 隋朝时期,有一位叫张小龙的英雄人物,他勇敢无畏,敢于挑战一切困难,被称为“英雄”。
1253 |
1254 | 一天,他被一道神秘的光束抽离了时空,穿越到了现代。到了这个新的世界,他发现自己拥有了超能力,可以控制流星火雨,可以随意操纵火焰,可以轻松击败怪兽。
1255 |
1256 | 他把自己的超能力用于正义,帮助奥特曼一起打败怪兽。他的英勇行为得到了众多人的赞扬,成为了新一代的英雄。
1257 |
1258 | 尽管他可以轻松击败怪兽,但他仍然保持着谦虚的态度,不断学习,不断进步,以达到更高的境界。
1259 |
1260 | 最终,张小龙成为了一位真正的英雄,他用他的英勇和勇敢,保护了这个世界,赢得了无数人的尊重和爱戴。"
1261 | 123,隋,流星火雨,努力,"
1262 |
1263 | 隋朝时期,一位叫李建的英雄人物,他拥有一身超强的功夫,曾经帮助过当时的皇帝,保卫了国家的安定。然而,历史的变迁使他不得不穿越时间,来到了现代。
1264 |
1265 | 李建穿越时间后发现,自己拥有了一种超能力,叫做流星火雨,可以召唤出流星火雨,让它们帮助他战斗。他也发现,现代的世界也有许多怪兽,正在侵害着人类,他决定要和奥特曼一起,帮助人类抵抗怪兽的侵略。
1266 |
1267 | 于是,他和奥特曼一起,开始了一场激烈的战斗。他利用自己的超能力,召唤出流星火雨,攻击怪兽,并且和奥特曼一起,用各种武器和技能,不断地攻击怪兽,最终,他们成功地抵御了怪兽的侵略,拯救了人类。
1268 |
1269 | 虽然最后他又穿越回了隋朝,但是他的事迹却被人们铭记了,他成为了一位传奇的英雄,永远被记住。"
1270 | 124,隋,流星火雨,努力,"
1271 |
1272 | 隋朝时期,有一位叫做雄霸的英雄人物,他身经百战,勇敢无畏,曾经打败过许多强大的敌人,他被誉为英雄。
1273 |
1274 | 一天,雄霸遭遇到了一场大雨,但这不是普通的雨,而是流星火雨!他被流星火雨洗礼,突然获得了超能力,可以飞行,可以穿越时空,拥有隐身能力。
1275 |
1276 | 雄霸突然发现自己穿越到了现代,他发现这个世界充满了危险,怪兽们正在毁灭人类,他决定要帮助奥特曼一起打败怪兽。
1277 |
1278 | 于是,雄霸和奥特曼一起开始了他们的战斗,他们利用自己的超能力,一招一式,一步一脚印,把怪兽们一个个击败,最终成功打败了怪兽,拯救了这个世界。
1279 |
1280 | 雄霸完成了他的使命,他可以安心的离开了,但他决定留下来,继续保护这个世界,他成为了一名英雄,被人们所称颂。
1281 |
1282 | 雄霸的故事从此流传开来,他的传奇将永远镌刻在人们的心中,他的英雄事迹将被世世代代传颂。"
1283 | 125,隋,流星火雨,努力,"
1284 |
1285 | 这是一个关于一位隋朝时期的英雄人物的故事。他叫张建,是一个勇敢的将军,为了保护自己的国家,他毅然决然地投身于战斗,不惜牺牲自己的生命。
1286 |
1287 | 一天,张建在战斗中被一道神秘的光束击中,他的身体被一股神秘的力量笼罩着,他被带到了另一个世界,一个叫做现代的世界。
1288 |
1289 | 在现代,张建发现自己拥有了超能力,他能够控制流星火雨,可以改变天气,并且可以控制风暴。他知道,这是上天赐予他的力量,他要把这种力量用来保护这个世界。
1290 |
1291 | 于是,张建加入了奥特曼的队伍,他们一起打败了许多怪兽,保护了人类的安全。张建的英勇行为得到了众人的赞扬,他成为了时代的英雄。
1292 |
1293 | 最终,张建回到了自己的世界,他把自己获得的超能力用来保护自己的国家,并且成为了一位受人尊敬的将军。他的传奇传说从此流传于世,被人们永远铭记。"
1294 | 126,隋,流星火雨,艰难,"
1295 |
1296 | 隋朝时期,有一位英雄人物叫做苏秦,他拥有着无可匹敌的武功,曾经拯救过数不清的苍生。一次,他在探险中被一股神秘的能量所吸引,不知不觉中就被传送到了现代。
1297 |
1298 | 苏秦在现代发现自己拥有了超能力,能够操控流星火雨,可以轻而易举地击败敌人。他在现代也发现了怪兽,它们危害着人类,苏秦决定要拯救人类,于是他发誓要和奥特曼一起,共同抗击怪兽。
1299 |
1300 | 于是,苏秦和奥特曼一起开始了一场激烈的战斗,他们利用自己的超能力,不断地击败怪兽,最终取得了胜利,拯救了人类。
1301 |
1302 | 苏秦在战斗中的表现让人们赞叹不已,他的英勇行为也被历史记录下来,成为了人们榜样的英雄。至此,苏秦也回到了自己的时代,但他留下了自己的传奇故事,让人们永远记住他。"
1303 | 127,隋,流星火雨,艰难,"
1304 |
1305 | 隋朝时期,有一位叫做李明的勇士,他拥有一股超自然的力量,他能够把敌人打败,赢得每一场战斗。李明被誉为英雄,人们都很尊敬他。
1306 |
1307 | 一天,地球遭受了一场灾难,来自外太空的怪兽侵略了地球,人类正面临着毁灭的危险。李明决定冒险前往外太空,去拯救地球。
1308 |
1309 | 李明的旅程很危险,他在外太空中遇到了很多怪物,他一个人也能够战胜他们。最终,李明来到了外太空的一个神秘地方,在那里,他获得了一种超能力,叫做“流星火雨”。
1310 |
1311 | 李明带着他的新能力回到地球,他和奥特曼一起打败了怪兽,拯救了地球。人们为他的英勇行为而感到骄傲。
1312 |
1313 | 李明的故事不仅仅是一个传说,而是一个永恒的警醒,提醒人们要勇于担当,坚持信念,做一个有能力的英雄。"
1314 | 128,隋,流星火雨,艰难,"
1315 |
1316 | 隋朝时期,有一位叫做李哲的英雄人物,他拥有着不凡的勇气和聪明的头脑。他曾经参加过许多战争,把敌人击退,保护了无数的人民。
1317 |
1318 | 一次,李哲被一个神秘的古老力量所吸引,被带到了现代。他发现自己拥有了一种超能力,可以操纵流星火雨,以及其他神奇的力量。他也发现,这个世界正面临着怪兽的威胁,他决定要加入奥特曼,一起打败怪兽,拯救这个世界。
1319 |
1320 | 于是,李哲和奥特曼一起开始了一场艰苦的战斗,他们经历了许多危险的局面,但最终终于战胜了怪兽,拯救了这个世界。
1321 |
1322 | 李哲在这场战斗中表现出了惊人的勇气和勇敢,他的英勇行为得到了所有人的尊重和赞赏。他也被奥特曼称为英雄,并获得了荣誉的地位。
1323 |
1324 | 李哲的故事至此就结束了,他的传奇和英雄事迹将永远流传下去,他也将永远被人们所铭记。"
1325 | 129,隋,流星火雨,勇敢,"
1326 |
1327 | 曾经有一位英雄人物,他叫做赵忠,生活在隋朝时期。他从小就有一种超能力,可以控制流星火雨,他帮助百姓们抵御敌人的侵略,成为了百姓们心中的英雄。
1328 |
1329 | 一天,赵忠突然被一道神秘的光芒所吸引,被传送到了现代,他发现自己的超能力被激活了,可以召唤流星火雨,控制风雨,也可以变成一道闪电,穿梭在天地之间。
1330 |
1331 | 这时,他发现了一群怪兽正在横行霸道,破坏着这个世界,赵忠决定要去拯救这个世界,于是他和奥特曼一起,用他的超能力,打败了怪兽,拯救了这个世界。
1332 |
1333 | 最后,赵忠被百姓们尊称为“流星火雨英雄”,他的英勇行为被记载在史册之中,他也成为了百姓们心中永远的英雄。"
1334 | 130,隋,流星火雨,勇敢,"
1335 |
1336 | 穿越时空的隋朝英雄,叫做苏轼。他出生在隋朝,从小就受到母亲的严格训练,练就了一身英勇的武功。
1337 |
1338 | 有一天,隋朝发生了一场大地震,苏轼被一道神秘的光束吸入了另外一个世界。他来到了现代,发现这里有一种神奇的能力,可以控制流星火雨。
1339 |
1340 | 苏轼被这种能力所吸引,学会了如何掌握这种能力,于是他就开始了他的英雄之旅,他穿越到各地,与怪兽进行激烈的战斗,击败了许多怪兽,最终与奥特曼一起打败了邪恶的怪兽,完成了英雄的使命。
1341 |
1342 | 苏轼的英勇事迹被传颂了,他的名字也被永远记录在历史中。他的故事也被传唱,被记载在书中,为下一代子孙传承。"
1343 | 131,隋,流星火雨,勇敢,"
1344 |
1345 | 这是一个关于一位隋朝时期的英雄人物的故事。他叫陆游,他在隋朝时期是一位著名的诗人,他的诗歌被许多人所熟知。
1346 |
1347 | 一天,陆游突然被一道强大的能量吸引进入一个神秘的空间,他被带到了现代的世界。他发现自己不仅可以自由的穿梭于两个时空之间,而且还拥有了流星火雨这样的超能力。
1348 |
1349 | 他发现,世界上有一群怪兽正在破坏人类的生活,于是他决定助力奥特曼一起消灭这些怪兽。他凭借自己的超能力,成功的帮助了奥特曼消灭了怪兽,拯救了人类。
1350 |
1351 | 最后,陆游又回到了隋朝,他被许多人尊敬,因为他拯救了人类,并且用他的诗歌记录了这段传奇的历史。他也成为了史上最伟大的英雄,永远被人们铭记。"
1352 | 132,隋,流星火雨,辛苦,"
1353 |
1354 | 这是一个关于英雄的故事,发生在隋朝时期。
1355 |
1356 | 一位叫做李元霸的英雄人物,他有着强大的武力,曾经帮助许多人解决了困难,可以说是一位英雄。
1357 |
1358 | 但是,一次意外,李元霸被一道神秘的光束笼罩,他的身体被传送到了现代。
1359 |
1360 | 被传送到现代的李元霸,发现自己拥有了超能力,可以控制流星火雨,甚至可以控制时间。
1361 |
1362 | 李元霸很快就被奥特曼找到,他们一起组成了一支英雄小队,开始了一段艰苦的战斗。
1363 |
1364 | 在艰苦的战斗中,李元霸的超能力发挥得淋漓尽致,他们把怪兽一个个击败,最终取得了胜利,拯救了世界。
1365 |
1366 | 李元霸从此成为了一位英雄,他的传说也流传了千古,被人们铭记。"
1367 | 133,隋,流星火雨,辛苦,"
1368 |
1369 | 这是一个属于隋朝时期的故事,讲述的是一位英雄人物,他叫做李靖,他拥有一种超能力,可以控制流星火雨。
1370 |
1371 | 一天,李靖突然被一股神秘的力量吸引,他发现自己穿越到了现代,这里的一切都是陌生的,他不知道该怎么办。
1372 |
1373 | 这时,一只巨大的怪兽出现了,它正在对城市进行毁灭性的攻击,而李靖发现这一切都是由自己的超能力引起的。
1374 |
1375 | 于是,他决定动身去拯救城市,他利用自己的超能力,制造出一阵流星火雨,把怪兽击退。
1376 |
1377 | 就在他要消灭怪兽的时候,一个叫奥特曼的英雄出现了,他也与怪兽展开了激烈的战斗,最终,在李靖的帮助下,奥特曼最终成功消灭了怪兽。
1378 |
1379 | 李靖的英勇行为得到了城市的赞誉,他也因此受到了众人的尊敬,他的故事也在城市里传唱。
1380 |
1381 | 最后,李靖又回到了隋朝,他的经历让他更加坚强,他也成为了一位传奇英雄人物,他的故事也在隋朝传唱了许多年。"
1382 | 134,隋,流星火雨,辛苦,"
1383 |
1384 | 这是一个关于隋朝英雄的故事。
1385 |
1386 | 一天,一位叫做李建的隋朝英雄突然从隋朝时期穿越到了现代。他被一阵神秘的力量抓住,感觉自己的身体发生了变化,他的身体变得更加强壮,他的头脑也变得更加敏锐。
1387 |
1388 | 他发现自己拥有了一种神奇的力量,可以控制流星火雨,可以召唤闪电,可以发射火球,甚至可以制造强大的风暴。
1389 |
1390 | 李建发现,这个新世界正面临着一个可怕的威胁,一群可怕的怪兽正在破坏这个世界,伤害着人们,摧毁着城市。
1391 |
1392 | 于是,李建决定帮助奥特曼一起打败怪兽。他和奥特曼一起,用他的超能力,发动了一场惊心动魄的战斗。他们凭借着勇气和智慧,最终成功击败了怪兽,拯救了这个世界。
1393 |
1394 | 李建经历了一段艰苦的旅程,他拯救了这个世界,他也变得更加坚强和勇敢。他成为了这个世界的英雄,永远被人们所铭记。"
1395 |
--------------------------------------------------------------------------------
/data_anonymizer.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "attachments": {},
5 | "cell_type": "markdown",
6 | "metadata": {},
7 | "source": [
8 | "## 隐私数据匿名化"
9 | ]
10 | },
11 | {
12 | "cell_type": "code",
13 | "execution_count": 2,
14 | "metadata": {},
15 | "outputs": [
16 | {
17 | "name": "stdout",
18 | "output_type": "stream",
19 | "text": [
20 | "Collecting en-core-web-sm==3.5.0\n",
21 | " Downloading https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.5.0/en_core_web_sm-3.5.0-py3-none-any.whl (12.8 MB)\n",
22 | "\u001b[2K \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.8/12.8 MB\u001b[0m \u001b[31m10.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0mm eta \u001b[36m0:00:01\u001b[0m0:01\u001b[0m:01\u001b[0m\n",
23 | "\u001b[?25hRequirement already satisfied: spacy<3.6.0,>=3.5.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from en-core-web-sm==3.5.0) (3.5.3)\n",
24 | "Requirement already satisfied: pathy>=0.10.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (0.10.1)\n",
25 | "Requirement already satisfied: packaging>=20.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (23.1)\n",
26 | "Requirement already satisfied: tqdm<5.0.0,>=4.38.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (4.65.0)\n",
27 | "Requirement already satisfied: spacy-legacy<3.1.0,>=3.0.11 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (3.0.12)\n",
28 | "Requirement already satisfied: wasabi<1.2.0,>=0.9.1 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (1.1.1)\n",
29 | "Requirement already satisfied: langcodes<4.0.0,>=3.2.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (3.3.0)\n",
30 | "Requirement already satisfied: cymem<2.1.0,>=2.0.2 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (2.0.7)\n",
31 | "Requirement already satisfied: preshed<3.1.0,>=3.0.2 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (3.0.8)\n",
32 | "Requirement already satisfied: jinja2 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (3.1.2)\n",
33 | "Requirement already satisfied: smart-open<7.0.0,>=5.2.1 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (6.3.0)\n",
34 | "Requirement already satisfied: pydantic!=1.8,!=1.8.1,<1.11.0,>=1.7.4 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (1.10.8)\n",
35 | "Requirement already satisfied: typer<0.8.0,>=0.3.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (0.7.0)\n",
36 | "Requirement already satisfied: requests<3.0.0,>=2.13.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (2.31.0)\n",
37 | "Requirement already satisfied: spacy-loggers<2.0.0,>=1.0.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (1.0.4)\n",
38 | "Requirement already satisfied: murmurhash<1.1.0,>=0.28.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (1.0.9)\n",
39 | "Requirement already satisfied: thinc<8.2.0,>=8.1.8 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (8.1.10)\n",
40 | "Requirement already satisfied: catalogue<2.1.0,>=2.0.6 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (2.0.8)\n",
41 | "Requirement already satisfied: setuptools in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (66.0.0)\n",
42 | "Requirement already satisfied: numpy>=1.15.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (1.24.3)\n",
43 | "Requirement already satisfied: srsly<3.0.0,>=2.4.3 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (2.4.6)\n",
44 | "Requirement already satisfied: typing-extensions>=4.2.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from pydantic!=1.8,!=1.8.1,<1.11.0,>=1.7.4->spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (4.5.0)\n",
45 | "Requirement already satisfied: certifi>=2017.4.17 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from requests<3.0.0,>=2.13.0->spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (2023.5.7)\n",
46 | "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from requests<3.0.0,>=2.13.0->spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (1.26.16)\n",
47 | "Requirement already satisfied: idna<4,>=2.5 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from requests<3.0.0,>=2.13.0->spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (3.4)\n",
48 | "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from requests<3.0.0,>=2.13.0->spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (3.1.0)\n",
49 | "Requirement already satisfied: confection<1.0.0,>=0.0.1 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from thinc<8.2.0,>=8.1.8->spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (0.0.4)\n",
50 | "Requirement already satisfied: blis<0.8.0,>=0.7.8 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from thinc<8.2.0,>=8.1.8->spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (0.7.9)\n",
51 | "Requirement already satisfied: click<9.0.0,>=7.1.1 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from typer<0.8.0,>=0.3.0->spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (8.1.3)\n",
52 | "Requirement already satisfied: MarkupSafe>=2.0 in /Users/xuwenhao/miniconda3/envs/mactalk/lib/python3.10/site-packages (from jinja2->spacy<3.6.0,>=3.5.0->en-core-web-sm==3.5.0) (2.1.2)\n",
53 | "Installing collected packages: en-core-web-sm\n",
54 | "Successfully installed en-core-web-sm-3.5.0\n",
55 | "\u001b[38;5;2m✔ Download and installation successful\u001b[0m\n",
56 | "You can now load the package via spacy.load('en_core_web_sm')\n"
57 | ]
58 | }
59 | ],
60 | "source": [
61 | "!python -m spacy download en_core_web_sm"
62 | ]
63 | },
64 | {
65 | "cell_type": "code",
66 | "execution_count": 18,
67 | "metadata": {},
68 | "outputs": [
69 | {
70 | "name": "stdout",
71 | "output_type": "stream",
72 | "text": [
73 | "Anonymized Text: #PERSON #PERSON lives in #GPE #GPE and works at #ORG## .\n",
74 | "Anonymized Text: #PERSON is studying at #ORG #ORG###### #ORG #ORG## .\n"
75 | ]
76 | }
77 | ],
78 | "source": [
79 | "import spacy\n",
80 | "from spacy.language import Language\n",
81 | "\n",
82 | "nlp = spacy.load('en_core_web_sm')\n",
83 | "\n",
84 | "@Language.component(\"anonymize_entities\")\n",
85 | "def anonymize_entities(doc):\n",
86 | " anonymized_tokens = []\n",
87 | " for token in doc:\n",
88 | " if token.ent_type_:\n",
89 | " anonymized_tokens.append('#' + token.ent_type_ + '#' * (len(token.text) - len(token.ent_type_) - 1))\n",
90 | " else:\n",
91 | " anonymized_tokens.append(token.text)\n",
92 | " return nlp.make_doc(' '.join(anonymized_tokens)) # create new Doc object\n",
93 | "\n",
94 | "nlp.add_pipe(\"anonymize_entities\", last=True)\n",
95 | "\n",
96 | "texts = ['John Doe lives in New York and works at Google.', \n",
97 | " 'Alice is studying at the University of Oxford.']\n",
98 | "\n",
99 | "for text in texts:\n",
100 | " doc = nlp(text)\n",
101 | " print('Anonymized Text:', doc.text)"
102 | ]
103 | },
104 | {
105 | "cell_type": "code",
106 | "execution_count": 19,
107 | "metadata": {},
108 | "outputs": [
109 | {
110 | "name": "stdout",
111 | "output_type": "stream",
112 | "text": [
113 | "Substituted Text: Prince Elvis Presley lives in New York and works at Google .\n",
114 | "Substituted Text: Beyonce is studying at the University of Oxford .\n"
115 | ]
116 | }
117 | ],
118 | "source": [
119 | "import spacy\n",
120 | "import random\n",
121 | "from spacy.language import Language\n",
122 | "\n",
123 | "nlp = spacy.load('en_core_web_sm')\n",
124 | "\n",
125 | "# List of replacement names\n",
126 | "replacement_names = ['Michael Jackson', 'Madonna', 'Beyonce', 'Prince', 'Elvis Presley']\n",
127 | "\n",
128 | "@Language.component(\"substitute_entities\")\n",
129 | "def substitute_entities(doc):\n",
130 | " substituted_tokens = []\n",
131 | " for token in doc:\n",
132 | " if token.ent_type_ == 'PERSON':\n",
133 | " # Substitute the entity with a random name from the list\n",
134 | " substituted_name = random.choice(replacement_names)\n",
135 | " # Split the name into tokens and use the appropriate token\n",
136 | " substituted_tokens.extend(substituted_name.split())\n",
137 | " replacement_names.remove(substituted_name) # To avoid repeated names in the same doc\n",
138 | " else:\n",
139 | " substituted_tokens.append(token.text)\n",
140 | " return nlp.make_doc(' '.join(substituted_tokens)) # create new Doc object\n",
141 | "\n",
142 | "nlp.add_pipe(\"substitute_entities\", last=True)\n",
143 | "\n",
144 | "texts = ['John Doe lives in New York and works at Google.', \n",
145 | " 'Alice is studying at the University of Oxford.']\n",
146 | "\n",
147 | "for text in texts:\n",
148 | " doc = nlp(text)\n",
149 | " print('Substituted Text:', doc.text)"
150 | ]
151 | },
152 | {
153 | "attachments": {},
154 | "cell_type": "markdown",
155 | "metadata": {},
156 | "source": []
157 | }
158 | ],
159 | "metadata": {
160 | "kernelspec": {
161 | "display_name": "mactalk",
162 | "language": "python",
163 | "name": "python3"
164 | },
165 | "language_info": {
166 | "codemirror_mode": {
167 | "name": "ipython",
168 | "version": 3
169 | },
170 | "file_extension": ".py",
171 | "mimetype": "text/x-python",
172 | "name": "python",
173 | "nbconvert_exporter": "python",
174 | "pygments_lexer": "ipython3",
175 | "version": "3.10.11"
176 | },
177 | "orig_nbformat": 4
178 | },
179 | "nbformat": 4,
180 | "nbformat_minor": 2
181 | }
182 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | aiohttp==3.8.4
2 | aiosignal==1.3.1
3 | anyio==3.7.0
4 | appnope==0.1.3
5 | argon2-cffi==21.3.0
6 | argon2-cffi-bindings==21.2.0
7 | arrow==1.2.3
8 | asttokens==2.2.1
9 | async-lru==2.0.2
10 | async-timeout==4.0.2
11 | attrs==23.1.0
12 | Babel==2.12.1
13 | backcall==0.2.0
14 | backoff==2.2.1
15 | beautifulsoup4==4.12.2
16 | bleach==6.0.0
17 | blis==0.7.9
18 | boto3==1.26.165
19 | botocore==1.29.165
20 | catalogue==2.0.8
21 | certifi==2023.5.7
22 | cffi==1.15.1
23 | charset-normalizer==3.1.0
24 | click==8.1.3
25 | comm==0.1.3
26 | confection==0.0.4
27 | contourpy==1.0.7
28 | cramjam==2.6.2
29 | cycler==0.11.0
30 | cymem==2.0.7
31 | dataclasses-json==0.5.8
32 | debugpy==1.6.7
33 | decorator==5.1.1
34 | defusedxml==0.7.1
35 | dnspython==2.3.0
36 | email-validator==2.0.0.post2
37 | en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.5.0/en_core_web_sm-3.5.0-py3-none-any.whl
38 | exceptiongroup==1.1.1
39 | executing==1.2.0
40 | faiss-cpu==1.7.4
41 | fastapi==0.99.0
42 | fastjsonschema==2.17.1
43 | fastparquet==2023.4.0
44 | fasttext==0.9.2
45 | filelock==3.12.2
46 | fonttools==4.39.4
47 | fqdn==1.5.1
48 | frozenlist==1.3.3
49 | fsspec==2023.6.0
50 | gensim==4.3.1
51 | google-search-results==2.4.2
52 | greenlet==2.0.2
53 | h11==0.14.0
54 | httpcore==0.17.2
55 | httptools==0.5.0
56 | httpx==0.24.1
57 | huggingface-hub==0.15.1
58 | idna==3.4
59 | ipykernel==6.23.1
60 | ipython==8.13.2
61 | ipywidgets==8.0.6
62 | isoduration==20.11.0
63 | itsdangerous==2.1.2
64 | jedi==0.18.2
65 | Jinja2==3.1.2
66 | jmespath==1.0.1
67 | joblib==1.2.0
68 | json5==0.9.14
69 | jsonpointer==2.3
70 | jsonschema==4.17.3
71 | jupyter-events==0.6.3
72 | jupyter-lsp==2.1.0
73 | jupyter_client==8.2.0
74 | jupyter_core==5.3.0
75 | jupyter_server==2.6.0
76 | jupyter_server_terminals==0.4.4
77 | jupyterlab==4.0.0
78 | jupyterlab-pygments==0.2.2
79 | jupyterlab-widgets==3.0.7
80 | jupyterlab_server==2.22.1
81 | kiwisolver==1.4.4
82 | langchain==0.0.198
83 | langchainplus-sdk==0.0.8
84 | langcodes==3.3.0
85 | llama-index==0.6.27
86 | MarkupSafe==2.1.2
87 | marshmallow==3.19.0
88 | marshmallow-enum==1.5.1
89 | matplotlib==3.7.1
90 | matplotlib-inline==0.1.6
91 | mistune==2.0.5
92 | multidict==6.0.4
93 | murmurhash==1.0.9
94 | mypy-extensions==1.0.0
95 | nbclient==0.8.0
96 | nbconvert==7.4.0
97 | nbformat==5.8.0
98 | nest-asyncio==1.5.6
99 | nltk==3.8.1
100 | notebook_shim==0.2.3
101 | numexpr==2.8.4
102 | numpy==1.24.3
103 | openai==0.27.7
104 | openapi-schema-pydantic==1.2.4
105 | orjson==3.9.1
106 | overrides==7.3.1
107 | packaging==23.1
108 | pandas==2.0.1
109 | pandocfilters==1.5.0
110 | parso==0.8.3
111 | pathy==0.10.1
112 | pexpect==4.8.0
113 | pickleshare==0.7.5
114 | Pillow==9.5.0
115 | platformdirs==3.5.1
116 | plotly==5.15.0
117 | preshed==3.0.8
118 | prometheus-client==0.17.0
119 | prompt-toolkit==3.0.38
120 | protobuf==4.23.3
121 | psutil==5.9.5
122 | ptyprocess==0.7.0
123 | pure-eval==0.2.2
124 | py-cpuinfo==9.0.0
125 | pyarrow==12.0.1
126 | pybind11==2.10.4
127 | pycparser==2.21
128 | pydantic==1.10.8
129 | Pygments==2.15.1
130 | pyparsing==3.0.9
131 | pyrsistent==0.19.3
132 | python-dateutil==2.8.2
133 | python-dotenv==1.0.0
134 | python-json-logger==2.0.7
135 | python-multipart==0.0.6
136 | pytz==2023.3
137 | PyYAML==6.0
138 | pyzmq==25.1.0
139 | regex==2023.5.5
140 | requests==2.31.0
141 | rfc3339-validator==0.1.4
142 | rfc3986-validator==0.1.1
143 | runpod==0.10.0
144 | s3transfer==0.6.1
145 | safetensors==0.3.1
146 | scikit-learn==1.2.2
147 | scipy==1.10.1
148 | Send2Trash==1.8.2
149 | sentencepiece==0.1.97
150 | six==1.16.0
151 | smart-open==6.3.0
152 | sniffio==1.3.0
153 | soupsieve==2.4.1
154 | spacy==3.5.3
155 | spacy-legacy==3.0.12
156 | spacy-loggers==1.0.4
157 | spacy-pkuseg==0.0.32
158 | SQLAlchemy==2.0.16
159 | srsly==2.4.6
160 | stack-data==0.6.2
161 | starlette==0.27.0
162 | tenacity==8.2.2
163 | termcolor==2.3.0
164 | terminado==0.17.1
165 | text-generation==0.6.0
166 | thinc==8.1.10
167 | threadpoolctl==3.1.0
168 | tiktoken==0.4.0
169 | tinycss2==1.2.1
170 | tokenizers==0.13.3
171 | tomli==2.0.1
172 | tornado==6.3.2
173 | tqdm==4.65.0
174 | tqdm-loggable==0.1.4
175 | traitlets==5.9.0
176 | transformers==4.30.0
177 | typer==0.7.0
178 | typing-inspect==0.8.0
179 | typing_extensions==4.5.0
180 | tzdata==2023.3
181 | ujson==5.8.0
182 | uri-template==1.2.0
183 | urllib3==1.26.16
184 | uvicorn==0.22.0
185 | uvloop==0.17.0
186 | wasabi==1.1.1
187 | watchfiles==0.19.0
188 | wcwidth==0.2.6
189 | webcolors==1.13
190 | webencodings==0.5.1
191 | websocket-client==1.5.2
192 | websockets==11.0.3
193 | widgetsnbextension==4.0.7
194 | yarl==1.9.2
195 | zh-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/zh_core_web_sm-3.5.0/zh_core_web_sm-3.5.0-py3-none-any.whl
196 |
--------------------------------------------------------------------------------
/try_vicuna.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "id": "4e20b254-32ca-4624-88ff-77f6be1a5ac7",
6 | "metadata": {},
7 | "source": [
8 | "## 加载模型"
9 | ]
10 | },
11 | {
12 | "cell_type": "code",
13 | "execution_count": 1,
14 | "id": "d516e8a0-95d7-48f6-835d-ff4286b51cf8",
15 | "metadata": {},
16 | "outputs": [],
17 | "source": [
18 | "import json\n",
19 | "\n",
20 | "import torch\n",
21 | "from transformers import AutoTokenizer, AutoModelForCausalLM\n",
22 | "\n",
23 | "from fastchat.model import load_model, get_conversation_template, add_model_args"
24 | ]
25 | },
26 | {
27 | "cell_type": "code",
28 | "execution_count": 2,
29 | "id": "fa7a3ad3-ae9d-41ee-9ceb-5c08fe26d8b7",
30 | "metadata": {},
31 | "outputs": [
32 | {
33 | "name": "stderr",
34 | "output_type": "stream",
35 | "text": [
36 | "The model weights are not tied. Please use the `tie_weights` method before using the `infer_auto_device` function.\n"
37 | ]
38 | },
39 | {
40 | "data": {
41 | "application/vnd.jupyter.widget-view+json": {
42 | "model_id": "04d95d2e949c461394e65b224c286dfd",
43 | "version_major": 2,
44 | "version_minor": 0
45 | },
46 | "text/plain": [
47 | "Loading checkpoint shards: 0%| | 0/3 [00:00, ?it/s]"
48 | ]
49 | },
50 | "metadata": {},
51 | "output_type": "display_data"
52 | }
53 | ],
54 | "source": [
55 | "model_path = \"/workspace/huggingface_hub/vicuna_demo/\"\n",
56 | "num_of_gpu = 3\n",
57 | "memory_of_gpu = \"80GiB\"\n",
58 | "cpu_offlaoding = False\n",
59 | "load_8bit = False\n",
60 | "model, tokenizer = load_model(\n",
61 | " model_path,\n",
62 | " \"cuda\",\n",
63 | " num_of_gpu,\n",
64 | " memory_of_gpu,\n",
65 | " load_8bit,\n",
66 | " cpu_offlaoding,\n",
67 | " )"
68 | ]
69 | },
70 | {
71 | "cell_type": "markdown",
72 | "id": "08a63bd8-0ee1-4254-9d09-210439297930",
73 | "metadata": {},
74 | "source": [
75 | "## 加载对话模版"
76 | ]
77 | },
78 | {
79 | "cell_type": "code",
80 | "execution_count": 39,
81 | "id": "f8c73758-ed89-4c4e-9de9-1b6395659fdc",
82 | "metadata": {},
83 | "outputs": [],
84 | "source": [
85 | "conv = get_conversation_template(model_path)"
86 | ]
87 | },
88 | {
89 | "cell_type": "markdown",
90 | "id": "892cf819-5a8b-4a3d-bd5d-9662cbe6ec77",
91 | "metadata": {},
92 | "source": [
93 | "## 开始对话"
94 | ]
95 | },
96 | {
97 | "cell_type": "code",
98 | "execution_count": 40,
99 | "id": "7098f84a-2066-43f1-9f64-2d2cceb95d48",
100 | "metadata": {},
101 | "outputs": [
102 | {
103 | "name": "stdout",
104 | "output_type": "stream",
105 | "text": [
106 | "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: It is a good day today! ASSISTANT:\n"
107 | ]
108 | }
109 | ],
110 | "source": [
111 | "msg = \"It is a good day today!\"\n",
112 | "conv.append_message(conv.roles[0], msg)\n",
113 | "conv.append_message(conv.roles[1], None)\n",
114 | "prompt = conv.get_prompt()\n",
115 | "print(prompt)"
116 | ]
117 | },
118 | {
119 | "cell_type": "code",
120 | "execution_count": 41,
121 | "id": "769a679a-2fee-4876-9ba6-778f11a151f7",
122 | "metadata": {},
123 | "outputs": [
124 | {
125 | "name": "stdout",
126 | "output_type": "stream",
127 | "text": [
128 | "USER: It is a good day today!\n",
129 | "ASSISTANT: That's great to hear! Is there anything specific you'd like help with?\n"
130 | ]
131 | }
132 | ],
133 | "source": [
134 | "input_ids = tokenizer([prompt]).input_ids\n",
135 | "\n",
136 | "temperature = 0.7\n",
137 | "repetition_penalty = 1.0\n",
138 | "max_new_tokens = 512\n",
139 | "\n",
140 | "output_ids = model.generate(\n",
141 | " torch.as_tensor(input_ids).cuda(),\n",
142 | " do_sample=True,\n",
143 | " temperature=temperature,\n",
144 | " repetition_penalty=repetition_penalty,\n",
145 | " max_new_tokens=max_new_tokens,\n",
146 | ")\n",
147 | "\n",
148 | "output_ids = output_ids[0][len(input_ids[0]) :]\n",
149 | "outputs = tokenizer.decode(\n",
150 | " output_ids, skip_special_tokens=True, spaces_between_special_tokens=False\n",
151 | ")\n",
152 | "\n",
153 | "print(f\"{conv.roles[0]}: {msg}\")\n",
154 | "print(f\"{conv.roles[1]}: {outputs}\")"
155 | ]
156 | },
157 | {
158 | "cell_type": "code",
159 | "execution_count": 42,
160 | "id": "e7bdb18c-25c0-403b-b6bc-5f377eedad11",
161 | "metadata": {},
162 | "outputs": [
163 | {
164 | "name": "stdout",
165 | "output_type": "stream",
166 | "text": [
167 | "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: It is a good day today! ASSISTANT:\n"
168 | ]
169 | }
170 | ],
171 | "source": [
172 | "prompt = conv.get_prompt()\n",
173 | "print(prompt)"
174 | ]
175 | },
176 | {
177 | "cell_type": "markdown",
178 | "id": "c2ae2929-4f00-451b-bfd6-c0f2f3605b27",
179 | "metadata": {},
180 | "source": [
181 | "## 支持多轮对话"
182 | ]
183 | },
184 | {
185 | "cell_type": "code",
186 | "execution_count": 43,
187 | "id": "7fbeeb53-ae47-4f73-b8d4-617ce89f9dd2",
188 | "metadata": {},
189 | "outputs": [
190 | {
191 | "name": "stdout",
192 | "output_type": "stream",
193 | "text": [
194 | "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: It is a good day today! ASSISTANT: That's great to hear! Is there anything specific you'd like help with?\n"
195 | ]
196 | }
197 | ],
198 | "source": [
199 | "conv.update_last_message(outputs)\n",
200 | "prompt = conv.get_prompt()\n",
201 | "print(prompt)"
202 | ]
203 | },
204 | {
205 | "cell_type": "code",
206 | "execution_count": 44,
207 | "id": "8bb18858-7a0a-41e5-b5f8-cb14b2073116",
208 | "metadata": {},
209 | "outputs": [],
210 | "source": [
211 | "def talk(conv, message, temperature = 0.7, repetition_penalty = 1.0, max_new_tokens = 512):\n",
212 | " conv.append_message(conv.roles[0], message)\n",
213 | " conv.append_message(conv.roles[1], None)\n",
214 | " prompt = conv.get_prompt()\n",
215 | " input_ids = tokenizer([prompt]).input_ids\n",
216 | "\n",
217 | " \n",
218 | " output_ids = model.generate(\n",
219 | " torch.as_tensor(input_ids).cuda(),\n",
220 | " do_sample=True,\n",
221 | " temperature=temperature,\n",
222 | " repetition_penalty=repetition_penalty,\n",
223 | " max_new_tokens=max_new_tokens,\n",
224 | " )\n",
225 | "\n",
226 | " output_ids = output_ids[0][len(input_ids[0]) :]\n",
227 | " outputs = tokenizer.decode(\n",
228 | " output_ids, skip_special_tokens=True, spaces_between_special_tokens=False\n",
229 | " )\n",
230 | "\n",
231 | " print(f\"{conv.roles[0]}: {message}\")\n",
232 | " print(f\"{conv.roles[1]}: {outputs}\")\n",
233 | " conv.update_last_message(outputs)"
234 | ]
235 | },
236 | {
237 | "cell_type": "code",
238 | "execution_count": 45,
239 | "id": "4682c980-00b9-4b39-948e-10b958955e21",
240 | "metadata": {},
241 | "outputs": [
242 | {
243 | "name": "stdout",
244 | "output_type": "stream",
245 | "text": [
246 | "USER: Would you like to have a walk in the park?\n",
247 | "ASSISTANT: Absolutely! I enjoy spending time outdoors when the weather is pleasant. Where would you like to go?\n"
248 | ]
249 | }
250 | ],
251 | "source": [
252 | "talk(conv, \"Would you like to have a walk in the park?\")"
253 | ]
254 | },
255 | {
256 | "cell_type": "code",
257 | "execution_count": 46,
258 | "id": "6ea94a35-b273-41ee-abc6-086c256680ba",
259 | "metadata": {},
260 | "outputs": [
261 | {
262 | "name": "stdout",
263 | "output_type": "stream",
264 | "text": [
265 | "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: It is a good day today! ASSISTANT: That's great to hear! Is there anything specific you'd like help with?USER: Would you like to have a walk in the park? ASSISTANT: Absolutely! I enjoy spending time outdoors when the weather is pleasant. Where would you like to go?\n"
266 | ]
267 | }
268 | ],
269 | "source": [
270 | "print(conv.get_prompt())"
271 | ]
272 | },
273 | {
274 | "cell_type": "code",
275 | "execution_count": 47,
276 | "id": "e275dcf1-192e-4bb9-ba03-4113f58ff866",
277 | "metadata": {},
278 | "outputs": [
279 | {
280 | "name": "stdout",
281 | "output_type": "stream",
282 | "text": [
283 | "USER: 你会说中文吗?\n",
284 | "ASSISTANT: Yes, I know some Chinese. Would you like me to speak Chinese with you?\n"
285 | ]
286 | }
287 | ],
288 | "source": [
289 | "talk(conv, \"你会说中文吗?\")"
290 | ]
291 | },
292 | {
293 | "cell_type": "code",
294 | "execution_count": 48,
295 | "id": "b0811b47-0369-46ac-933f-90778cb9ac31",
296 | "metadata": {},
297 | "outputs": [
298 | {
299 | "name": "stdout",
300 | "output_type": "stream",
301 | "text": [
302 | "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: It is a good day today! ASSISTANT: That's great to hear! Is there anything specific you'd like help with?USER: Would you like to have a walk in the park? ASSISTANT: Absolutely! I enjoy spending time outdoors when the weather is pleasant. Where would you like to go?USER: 你会说中文吗? ASSISTANT: Yes, I know some Chinese. Would you like me to speak Chinese with you?\n"
303 | ]
304 | }
305 | ],
306 | "source": [
307 | "print(conv.get_prompt())"
308 | ]
309 | },
310 | {
311 | "cell_type": "code",
312 | "execution_count": 49,
313 | "id": "f4033150-9559-461e-8089-cd4093448d98",
314 | "metadata": {},
315 | "outputs": [
316 | {
317 | "name": "stdout",
318 | "output_type": "stream",
319 | "text": [
320 | "USER: \n",
321 | "Please extract person name from the following sentence and output it in json format:\n",
322 | "\n",
323 | "John Doe lives in New York and works at Google.\n",
324 | "\n",
325 | "ASSISTANT: Sure! Here's the extracted person name in JSON format: \n",
326 | "{\n",
327 | " \"name\": \"John Doe\"\n",
328 | "\n"
329 | ]
330 | }
331 | ],
332 | "source": [
333 | "message = \"\"\"\n",
334 | "Please extract person name from the following sentence and output it in json format:\n",
335 | "\n",
336 | "John Doe lives in New York and works at Google.\n",
337 | "\"\"\"\n",
338 | "talk(conv, message)"
339 | ]
340 | },
341 | {
342 | "cell_type": "code",
343 | "execution_count": 50,
344 | "id": "eef816b0-8fa7-4e90-9036-47f2197f97df",
345 | "metadata": {},
346 | "outputs": [
347 | {
348 | "name": "stdout",
349 | "output_type": "stream",
350 | "text": [
351 | "USER: Please extract person name from the following sentence: \n",
352 | "\n",
353 | " John Doe lives in New York and works at Google.\n",
354 | "ASSISTANT: The extracted person name is \"John Doe\".\n"
355 | ]
356 | }
357 | ],
358 | "source": [
359 | "talk(conv, \"Please extract person name from the following sentence: \\n\\n John Doe lives in New York and works at Google.\")"
360 | ]
361 | },
362 | {
363 | "cell_type": "markdown",
364 | "id": "7adc7c7e-a9b5-4560-a96d-38410c5cf04f",
365 | "metadata": {},
366 | "source": [
367 | "## 通过Gradio进行封装"
368 | ]
369 | },
370 | {
371 | "cell_type": "code",
372 | "execution_count": 52,
373 | "id": "e577586d-5507-4775-8775-1fe215da5fe4",
374 | "metadata": {},
375 | "outputs": [
376 | {
377 | "name": "stderr",
378 | "output_type": "stream",
379 | "text": [
380 | "/usr/local/lib/python3.10/dist-packages/gradio/components/textbox.py:259: UserWarning: The `style` method is deprecated. Please set these arguments in the constructor instead.\n",
381 | " warnings.warn(\n"
382 | ]
383 | },
384 | {
385 | "name": "stdout",
386 | "output_type": "stream",
387 | "text": [
388 | "Running on local URL: http://127.0.0.1:7860\n",
389 | "\n",
390 | "To create a public link, set `share=True` in `launch()`.\n"
391 | ]
392 | },
393 | {
394 | "data": {
395 | "text/html": [
396 | ""
397 | ],
398 | "text/plain": [
399 | ""
400 | ]
401 | },
402 | "metadata": {},
403 | "output_type": "display_data"
404 | },
405 | {
406 | "data": {
407 | "text/plain": []
408 | },
409 | "execution_count": 52,
410 | "metadata": {},
411 | "output_type": "execute_result"
412 | }
413 | ],
414 | "source": [
415 | "import gradio as gr\n",
416 | "\n",
417 | "class ConversationWrapper:\n",
418 | " def __init__(self):\n",
419 | " self.conv = get_conversation_template(model_path)\n",
420 | "\n",
421 | " def talk(self, message):\n",
422 | " self.conv.append_message(conv.roles[0], message)\n",
423 | " self.conv.append_message(conv.roles[1], None)\n",
424 | " prompt = conv.get_prompt()\n",
425 | " input_ids = tokenizer([prompt]).input_ids\n",
426 | " \n",
427 | " output_ids = model.generate(\n",
428 | " torch.as_tensor(input_ids).cuda(),\n",
429 | " do_sample=True,\n",
430 | " temperature=temperature,\n",
431 | " repetition_penalty=repetition_penalty,\n",
432 | " max_new_tokens=max_new_tokens,\n",
433 | " )\n",
434 | "\n",
435 | " output_ids = output_ids[0][len(input_ids[0]) :]\n",
436 | " outputs = tokenizer.decode(\n",
437 | " output_ids, skip_special_tokens=True, spaces_between_special_tokens=False\n",
438 | " )\n",
439 | " conv.update_last_message(outputs)\n",
440 | " return outputs\n",
441 | "\n",
442 | "conv = ConversationWrapper()\n",
443 | "\n",
444 | "def predict(input, history=[]):\n",
445 | " history.append(input)\n",
446 | " response = conv.talk(input)\n",
447 | " history.append(response)\n",
448 | " responses = [(u,b) for u,b in zip(history[::2], history[1::2])]\n",
449 | " return responses, history\n",
450 | "\n",
451 | "with gr.Blocks(css=\"#chatbot{height:350px} .overflow-y-auto{height:500px}\") as demo:\n",
452 | " chatbot = gr.Chatbot(elem_id=\"chatbot\")\n",
453 | " state = gr.State([])\n",
454 | "\n",
455 | " with gr.Row():\n",
456 | " txt = gr.Textbox(show_label=False, placeholder=\"Enter text and press enter\").style(container=False)\n",
457 | "\n",
458 | " txt.submit(predict, [txt, state], [chatbot, state])\n",
459 | "\n",
460 | "demo.launch()"
461 | ]
462 | },
463 | {
464 | "cell_type": "code",
465 | "execution_count": null,
466 | "id": "46d1e7f2-3fc6-4714-b66b-1db197a85adb",
467 | "metadata": {},
468 | "outputs": [],
469 | "source": []
470 | }
471 | ],
472 | "metadata": {
473 | "kernelspec": {
474 | "display_name": "Python 3 (ipykernel)",
475 | "language": "python",
476 | "name": "python3"
477 | },
478 | "language_info": {
479 | "codemirror_mode": {
480 | "name": "ipython",
481 | "version": 3
482 | },
483 | "file_extension": ".py",
484 | "mimetype": "text/x-python",
485 | "name": "python",
486 | "nbconvert_exporter": "python",
487 | "pygments_lexer": "ipython3",
488 | "version": "3.10.6"
489 | }
490 | },
491 | "nbformat": 4,
492 | "nbformat_minor": 5
493 | }
494 |
--------------------------------------------------------------------------------
/vicuna/README.md:
--------------------------------------------------------------------------------
1 | ## Runpod.io 部署
2 |
3 | ### 检查本地的Pytorch 以及 Cuda的版本
4 |
5 | nvcc --version
6 |
7 | ```
8 | nvcc: NVIDIA (R) Cuda compiler driver
9 | Copyright (c) 2005-2022 NVIDIA Corporation
10 | Built on Wed_Jun__8_16:49:14_PDT_2022
11 | Cuda compilation tools, release 11.7, V11.7.99
12 | Build cuda_11.7.r11.7/compiler.31442593_0
13 | ```
14 |
15 | python -c "import torch; print(torch.__version__)"
16 |
17 | ```
18 | 2.0.1+cu117
19 | ```
20 |
21 | ### 获取代码、模型和数据
22 |
23 | #### 代码
24 |
25 | cd /workspace/
26 | git clone https://github.com/lm-sys/FastChat
27 |
28 | cd FastChat
29 | pip3 install --upgrade pip
30 | pip3 install -e .
31 | pip3 install einops
32 | pip3 install flash_attn==1.0.5
33 |
34 |
35 | #### 模型
36 |
37 | cd /workspace/
38 |
39 | apt-get install git-lfs
40 | git lfs install
41 | git clone https://huggingface.co/huggyllama/llama-7b
42 |
43 | ```
44 | Encountered 2 file(s) that may not have been copied correctly on Windows:
45 | pytorch_model-00001-of-00002.bin
46 | model-00001-of-00002.safetensors
47 |
48 | See: `git lfs help smudge` for more details.
49 | ```
50 |
51 | 以上报错可以忽略,只是对Windows下的git lfs会有影响
52 |
53 | #### 数据
54 |
55 | git clone https://huggingface.co/datasets/ehartford/wizard_vicuna_70k_unfiltered
56 |
57 |
58 | ### 启动模型训练
59 |
60 | 参见 training_dummy.sh 以及 training_model.sh
61 |
--------------------------------------------------------------------------------
/vicuna/training_dummy.sh:
--------------------------------------------------------------------------------
1 | cd /workspace/FastChat
2 |
3 | apt-get install screen
4 |
5 | screen -S training_session
6 | export WANDB_API_KEY=YOUR_WANDB_API_KEY
7 |
8 | torchrun --nproc_per_node=4 --master_port=20001 fastchat/train/train_mem.py \
9 | --model_name_or_path /workspace/llama-7b \
10 | --data_path data/dummy_conversation.json \
11 | --bf16 True \
12 | --output_dir /workspace/vicuna_dummy \
13 | --num_train_epochs 3 \
14 | --per_device_train_batch_size 4 \
15 | --per_device_eval_batch_size 4 \
16 | --gradient_accumulation_steps 16 \
17 | --evaluation_strategy "no" \
18 | --save_strategy "steps" \
19 | --save_steps 1200 \
20 | --save_total_limit 10 \
21 | --learning_rate 2e-5 \
22 | --weight_decay 0. \
23 | --warmup_ratio 0.03 \
24 | --lr_scheduler_type "cosine" \
25 | --logging_steps 1 \
26 | --fsdp "full_shard auto_wrap" \
27 | --fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \
28 | --tf32 True \
29 | --model_max_length 2048 \
30 | --gradient_checkpointing True \
31 | --lazy_preprocess True > training.dummy.log 2> training.dummy.err.log &
--------------------------------------------------------------------------------
/vicuna/training_model.sh:
--------------------------------------------------------------------------------
1 | cd /workspace/FastChat
2 |
3 | apt-get install screen
4 |
5 | screen -S training_session
6 | export WANDB_API_KEY=YOUR_WANDB_API_KEY
7 | torchrun --nproc_per_node=4 --master_port=20001 fastchat/train/train_mem.py \
8 | --model_name_or_path /workspace/llama-7b \
9 | --data_path /workspace/wizard_vicuna_70k_unfiltered/wizard_vicuna_dataset_unfiltered.json \
10 | --bf16 True \
11 | --output_dir /workspace/vicuna_demo \
12 | --num_train_epochs 3 \
13 | --per_device_train_batch_size 4 \
14 | --per_device_eval_batch_size 4 \
15 | --gradient_accumulation_steps 16 \
16 | --evaluation_strategy "steps" \
17 | --eval_steps 20 \
18 | --save_strategy "steps" \
19 | --save_steps 150 \
20 | --save_total_limit 10 \
21 | --learning_rate 2e-5 \
22 | --weight_decay 0. \
23 | --warmup_ratio 0.03 \
24 | --lr_scheduler_type "cosine" \
25 | --logging_steps 1 \
26 | --fsdp "full_shard auto_wrap" \
27 | --fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \
28 | --tf32 True \
29 | --model_max_length 2048 \
30 | --gradient_checkpointing True \
31 | --lazy_preprocess True > training.vicuna.log 2> training.vicuna.err.log &
--------------------------------------------------------------------------------
/vicuna/upload_to_huggingface.sh:
--------------------------------------------------------------------------------
1 |
2 |
3 | git lfs track ./*
4 | git add ./*
5 | huggingface-cli lfs-enable-largefiles ./
6 | git commit -am "Add files in LFS mode"
7 | git push
8 |
--------------------------------------------------------------------------------
/week4.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "attachments": {},
5 | "cell_type": "markdown",
6 | "metadata": {},
7 | "source": [
8 | "## OpenAI Fine-Tune"
9 | ]
10 | },
11 | {
12 | "attachments": {},
13 | "cell_type": "markdown",
14 | "metadata": {},
15 | "source": [
16 | "### 生成测试数据"
17 | ]
18 | },
19 | {
20 | "cell_type": "code",
21 | "execution_count": null,
22 | "metadata": {},
23 | "outputs": [],
24 | "source": [
25 | "import os,openai,backoff\n",
26 | "import pandas as pd\n",
27 | "\n",
28 | "openai.api_key = os.getenv(\"OPENAI_API_KEY\")\n",
29 | "dynasties= ['唐', '宋', '元', '明', '清', '汉', '魏', '晋', '南北朝']\n",
30 | "super_powers = ['隐形', '飞行', '读心术', '瞬间移动', '不死之身', '喷火']\n",
31 | "story_types = ['轻松', '努力', '艰难']\n",
32 | "\n",
33 | "@backoff.on_exception(backoff.expo, openai.error.RateLimitError)\n",
34 | "def gpt35(prompt, max_tokens=2048, temperature=0.5, top_p=1, frequency_penalty=0, presence_penalty=0):\n",
35 | " response = openai.Completion.create(\n",
36 | " engine=\"text-davinci-003\",\n",
37 | " prompt=prompt,\n",
38 | " max_tokens=max_tokens,\n",
39 | " temperature=temperature,\n",
40 | " top_p=top_p,\n",
41 | " frequency_penalty=frequency_penalty,\n",
42 | " presence_penalty=presence_penalty)\n",
43 | " return response[\"choices\"][0][\"text\"]\n",
44 | "\n",
45 | "def prepare_stories(dynasties, super_powers, story_types, output_file=\"data/ultraman_stories.csv\"):\n",
46 | " df = pd.DataFrame()\n",
47 | " repeat = 3\n",
48 | " for dynasty in dynasties:\n",
49 | " for super_power in super_powers:\n",
50 | " for story_type in story_types:\n",
51 | " for i in range(repeat):\n",
52 | " prompt = f\"\"\"请你用中文写一段300字的故事,情节跌宕起伏,讲述一位{dynasty}朝时期的英雄人物,穿越到现代,拥有了{super_power}这样的超能力,通过{story_type}的战斗,帮助奥特曼一起打败了怪兽的故事。\"\"\"\n",
53 | " story = gpt35(prompt)\n",
54 | " row = {\"dynasty\": dynasty, \"super_power\": super_power, \"story_type\": story_type, \"story\": story}\n",
55 | " row = pd.DataFrame([row])\n",
56 | " df = pd.concat([df, row], axis=0, ignore_index=True)\n",
57 | "\n",
58 | " df.to_csv(\"data/ultraman_stories.csv\")\n",
59 | "\n",
60 | "prepare_stories(dynasties, super_powers, story_types)"
61 | ]
62 | },
63 | {
64 | "cell_type": "code",
65 | "execution_count": 9,
66 | "metadata": {},
67 | "outputs": [
68 | {
69 | "name": "stdout",
70 | "output_type": "stream",
71 | "text": [
72 | "Analyzing...\n",
73 | "\n",
74 | "- Based on your file extension, your file is formatted as a CSV file\n",
75 | "- Your file contains 464 prompt-completion pairs\n",
76 | "- Your data does not contain a common separator at the end of your prompts. Having a separator string appended to the end of the prompt makes it clearer to the fine-tuned model where the completion should begin. See https://platform.openai.com/docs/guides/fine-tuning/preparing-your-dataset for more detail and examples. If you intend to do open-ended generation, then you should leave the prompts empty\n",
77 | "- Your data does not contain a common ending at the end of your completions. Having a common ending string appended to the end of the completion makes it clearer to the fine-tuned model where the completion should end. See https://platform.openai.com/docs/guides/fine-tuning/preparing-your-dataset for more detail and examples.\n",
78 | "- The completion should start with a whitespace character (` `). This tends to produce better results due to the tokenization we use. See https://platform.openai.com/docs/guides/fine-tuning/preparing-your-dataset for more details\n",
79 | "\n",
80 | "Based on the analysis we will perform the following actions:\n",
81 | "- [Necessary] Your format `CSV` will be converted to `JSONL`\n",
82 | "- [Recommended] Add a suffix separator ` ->` to all prompts [Y/n]: Y\n",
83 | "- [Recommended] Add a suffix ending `.` to all completions [Y/n]: Y\n",
84 | "- [Recommended] Add a whitespace character to the beginning of the completion [Y/n]: Y\n",
85 | "\n",
86 | "\n",
87 | "Your data will be written to a new JSONL file. Proceed [Y/n]: Y\n",
88 | "\n",
89 | "Wrote modified file to `data/prepared_data_mactalk_prepared.jsonl`\n",
90 | "Feel free to take a look!\n",
91 | "\n",
92 | "Now use that file when fine-tuning:\n",
93 | "> openai api fine_tunes.create -t \"data/prepared_data_mactalk_prepared.jsonl\"\n",
94 | "\n",
95 | "After you’ve fine-tuned a model, remember that your prompt has to end with the indicator string ` ->` for the model to start generating completions, rather than continuing with the prompt. Make sure to include `stop=[\".\"]` so that the generated texts ends at the expected place.\n",
96 | "Once your model starts training, it'll approximately take 8.82 minutes to train a `curie` model, and less for `ada` and `babbage`. Queue will approximately take half an hour per job ahead of you.\n"
97 | ]
98 | },
99 | {
100 | "data": {
101 | "text/plain": [
102 | "CompletedProcess(args=['openai', 'tools', 'fine_tunes.prepare_data', '--file', 'data/prepared_data_mactalk.csv', '--quiet'], returncode=0)"
103 | ]
104 | },
105 | "execution_count": 9,
106 | "metadata": {},
107 | "output_type": "execute_result"
108 | }
109 | ],
110 | "source": [
111 | "df = pd.read_csv(\"data/ultraman_stories.csv\")\n",
112 | "df['sub_prompt'] = df['dynasty'] + \",\" + df['super_power'] + \",\" + df['story_type']\n",
113 | "prepared_data = df.loc[:,['sub_prompt','story']]\n",
114 | "prepared_data.rename(columns={'sub_prompt':'prompt', 'story':'completion'}, inplace=True)\n",
115 | "prepared_data.to_csv('data/prepared_data_mactalk.csv',index=False)\n",
116 | "\n",
117 | "import subprocess\n",
118 | "\n",
119 | "subprocess.run('openai tools fine_tunes.prepare_data --file data/prepared_data_mactalk.csv --quiet'.split())"
120 | ]
121 | },
122 | {
123 | "cell_type": "code",
124 | "execution_count": 15,
125 | "metadata": {},
126 | "outputs": [
127 | {
128 | "name": "stderr",
129 | "output_type": "stream",
130 | "text": [
131 | "Upload progress: 100%|██████████| 446k/446k [00:00<00:00, 342Mit/s]\n",
132 | "\u001b[91mError:\u001b[0m HTTP code 500 from API (\n",
133 | " \n",
134 | " Internal Server Error\n",
135 | " \n",
136 | " \n",
137 | " Internal Server Error
\n",
138 | " \n",
139 | " \n",
140 | "\n",
141 | ") (HTTP status code: 500)\n"
142 | ]
143 | },
144 | {
145 | "data": {
146 | "text/plain": [
147 | "CompletedProcess(args=['openai', 'api', 'fine_tunes.create', '--training_file', 'data/prepared_data_mactalk_prepared.jsonl', '--model', 'curie', '--suffix', '\"mactalk_ultraman\"'], returncode=1)"
148 | ]
149 | },
150 | "execution_count": 15,
151 | "metadata": {},
152 | "output_type": "execute_result"
153 | }
154 | ],
155 | "source": [
156 | "subprocess.run('openai api fine_tunes.create --training_file data/prepared_data_mactalk_prepared.jsonl --model curie --suffix \"mactalk_ultraman\"'.split())"
157 | ]
158 | },
159 | {
160 | "cell_type": "code",
161 | "execution_count": 11,
162 | "metadata": {},
163 | "outputs": [
164 | {
165 | "name": "stdout",
166 | "output_type": "stream",
167 | "text": [
168 | "{\n",
169 | " \"data\": [\n",
170 | " {\n",
171 | " \"created_at\": 1680576711,\n",
172 | " \"fine_tuned_model\": \"curie:ft-bothub-ai:ultraman-2023-04-04-03-03-26\",\n",
173 | " \"hyperparams\": {\n",
174 | " \"batch_size\": 1,\n",
175 | " \"learning_rate_multiplier\": 0.2,\n",
176 | " \"n_epochs\": 4,\n",
177 | " \"prompt_loss_weight\": 0.01\n",
178 | " },\n",
179 | " \"id\": \"ft-3oxkr1zBVB4fJWogJDDjQbr0\",\n",
180 | " \"model\": \"curie\",\n",
181 | " \"object\": \"fine-tune\",\n",
182 | " \"organization_id\": \"org-yQaCtAdY0voCWSs0QNqSLfda\",\n",
183 | " \"result_files\": [\n",
184 | " {\n",
185 | " \"bytes\": 107785,\n",
186 | " \"created_at\": 1680577408,\n",
187 | " \"filename\": \"compiled_results.csv\",\n",
188 | " \"id\": \"file-LuSjYlkMa6fHHRB23bnr3L1z\",\n",
189 | " \"object\": \"file\",\n",
190 | " \"purpose\": \"fine-tune-results\",\n",
191 | " \"status\": \"processed\",\n",
192 | " \"status_details\": null\n",
193 | " }\n",
194 | " ],\n",
195 | " \"status\": \"succeeded\",\n",
196 | " \"training_files\": [\n",
197 | " {\n",
198 | " \"bytes\": 446199,\n",
199 | " \"created_at\": 1680576711,\n",
200 | " \"filename\": \"data/prepared_data_prepared.jsonl\",\n",
201 | " \"id\": \"file-yn0BfnPmgvf7n0sfQzQRbbeE\",\n",
202 | " \"object\": \"file\",\n",
203 | " \"purpose\": \"fine-tune\",\n",
204 | " \"status\": \"processed\",\n",
205 | " \"status_details\": null\n",
206 | " }\n",
207 | " ],\n",
208 | " \"updated_at\": 1680577408,\n",
209 | " \"validation_files\": []\n",
210 | " },\n",
211 | " {\n",
212 | " \"created_at\": 1680670677,\n",
213 | " \"fine_tuned_model\": \"curie:ft-bothub-ai:ultraman-2023-04-05-05-01-39\",\n",
214 | " \"hyperparams\": {\n",
215 | " \"batch_size\": 1,\n",
216 | " \"learning_rate_multiplier\": 2.0,\n",
217 | " \"n_epochs\": 4,\n",
218 | " \"prompt_loss_weight\": 0.01\n",
219 | " },\n",
220 | " \"id\": \"ft-CFLSbHbKvg5BEspBy3aQHSbm\",\n",
221 | " \"model\": \"curie:ft-bothub-ai:ultraman-2023-04-04-03-03-26\",\n",
222 | " \"object\": \"fine-tune\",\n",
223 | " \"organization_id\": \"org-yQaCtAdY0voCWSs0QNqSLfda\",\n",
224 | " \"result_files\": [\n",
225 | " {\n",
226 | " \"bytes\": 30646,\n",
227 | " \"created_at\": 1680670900,\n",
228 | " \"filename\": \"compiled_results.csv\",\n",
229 | " \"id\": \"file-84jsgYpEmfSSD7c01QISDUm5\",\n",
230 | " \"object\": \"file\",\n",
231 | " \"purpose\": \"fine-tune-results\",\n",
232 | " \"status\": \"processed\",\n",
233 | " \"status_details\": null\n",
234 | " }\n",
235 | " ],\n",
236 | " \"status\": \"succeeded\",\n",
237 | " \"training_files\": [\n",
238 | " {\n",
239 | " \"bytes\": 127998,\n",
240 | " \"created_at\": 1680670676,\n",
241 | " \"filename\": \"data/prepared_data_more_prepared.jsonl\",\n",
242 | " \"id\": \"file-Koi8mPKvDINOnBnI03J9iXnS\",\n",
243 | " \"object\": \"file\",\n",
244 | " \"purpose\": \"fine-tune\",\n",
245 | " \"status\": \"processed\",\n",
246 | " \"status_details\": null\n",
247 | " }\n",
248 | " ],\n",
249 | " \"updated_at\": 1680670900,\n",
250 | " \"validation_files\": []\n",
251 | " }\n",
252 | " ],\n",
253 | " \"object\": \"list\"\n",
254 | "}\n"
255 | ]
256 | },
257 | {
258 | "data": {
259 | "text/plain": [
260 | "CompletedProcess(args=['openai', 'api', 'fine_tunes.list'], returncode=0)"
261 | ]
262 | },
263 | "execution_count": 11,
264 | "metadata": {},
265 | "output_type": "execute_result"
266 | }
267 | ],
268 | "source": [
269 | "subprocess.run('openai api fine_tunes.list'.split())"
270 | ]
271 | },
272 | {
273 | "cell_type": "code",
274 | "execution_count": 16,
275 | "metadata": {},
276 | "outputs": [
277 | {
278 | "name": "stdout",
279 | "output_type": "stream",
280 | "text": [
281 | "\n",
282 | "宋朝时期,有一位英雄人物叫做李英雄,他拥有超凡的武功,曾经参加过多次战斗,拯救了无数的人民。\n",
283 | "\n",
284 | "一次,李英雄突然发现自己穿越到了现代,他发现自己的超能力比起宋朝时期还要强大,他可以发射激光,可以控制天空,可以控制空气,甚至可以控制大地。\n",
285 | "\n",
286 | "李英雄发现,现代的世界正面临着一个可怕的威胁——怪兽,他们正在毁灭人类,李英雄决定要去拯救世界,于是他和奥特曼一起出发,开始了一场艰苦的战斗。\n",
287 | "\n",
288 | "李英雄凭借着自己的超能力,和奥特曼一起,终于战胜了怪兽,拯救了世界。他以英雄的姿态拥有了榜样,成为了人们心中的英雄。\n"
289 | ]
290 | }
291 | ],
292 | "source": [
293 | "import os\n",
294 | "import openai\n",
295 | "\n",
296 | "openai.api_key = os.getenv(\"OPENAI_API_KEY\")\n",
297 | "\n",
298 | "def write_a_story(prompt):\n",
299 | " response = openai.Completion.create(\n",
300 | " model=\"curie:ft-bothub-ai:ultraman-2023-04-04-03-03-26\",\n",
301 | " prompt=prompt,\n",
302 | " temperature=0.7,\n",
303 | " max_tokens=2000,\n",
304 | " top_p=1,\n",
305 | " stop=[\".\"])\n",
306 | " return response[\"choices\"][0][\"text\"]\n",
307 | "\n",
308 | "story = write_a_story(\"宋,发射激光,艰难 ->\\n\")\n",
309 | "print(story)"
310 | ]
311 | },
312 | {
313 | "cell_type": "code",
314 | "execution_count": 17,
315 | "metadata": {},
316 | "outputs": [
317 | {
318 | "name": "stdout",
319 | "output_type": "stream",
320 | "text": [
321 | "\n",
322 | "这是一个关于一位叫做林黛玉的英雄人物的传奇故事。林黛玉曾经是一个英勇的将军,他在古代早期就受到了神灵们的授予,被封为“神童”。\n",
323 | "\n",
324 | "一次,神灵们派遣一群令人鼻颈的怪兽出征,攻击辛苦的中原人民。林黛玉毫不犹豫地指挥令人恐惧的大军,抵抗怪兽的攻击,为人民谋幸福安乐。\n",
325 | "\n",
326 | "但是,神灵们的力量太强大了,林黛玉不得不放弃了自己的家乡,离开了家园,穿越到了现代,并获得了一种超能力——龙卷风。\n",
327 | "\n",
328 | "林黛玉很快就感受到了现代的威力,他发现自己可以用龙卷风来抵抗怪兽,于是他决定和奥特曼一起,把怪兽一个个击败,拯救人类。\n",
329 | "\n",
330 | "他们在一次次的激烈战斗中,最终击败了最强大的怪兽,拯救了人类,林黛玉也回到了家乡,成为了一个英雄。\n",
331 | "\n",
332 | "林黛玉的传奇故事,令人惊叹,他的勇敢和智慧,也令人敬佩。他的故事,让人们永远不会忘记。\n"
333 | ]
334 | }
335 | ],
336 | "source": [
337 | "story = write_a_story(\"秦,龙卷风,辛苦 ->\\n\")\n",
338 | "print(story)"
339 | ]
340 | },
341 | {
342 | "attachments": {},
343 | "cell_type": "markdown",
344 | "metadata": {},
345 | "source": [
346 | "## Alpaca的数据生成"
347 | ]
348 | },
349 | {
350 | "attachments": {},
351 | "cell_type": "markdown",
352 | "metadata": {},
353 | "source": [
354 | "### 生成指令"
355 | ]
356 | },
357 | {
358 | "cell_type": "code",
359 | "execution_count": 19,
360 | "metadata": {},
361 | "outputs": [
362 | {
363 | "name": "stdout",
364 | "output_type": "stream",
365 | "text": [
366 | "\"Write a short story about a person who discovers a mysterious object in the woods.\"\n",
367 | "2. Input: \"\"\n",
368 | "2. Output: \"John was walking through the woods, enjoying the peacefulness of the day. Suddenly, he noticed something strange in the distance. He walked closer and saw a mysterious object, half-buried in the ground. He cautiously approached it and noticed it was a small box, made of a strange metal he had never seen before. He opened the box and found a strange glowing stone inside. He was mesmerized by the stone and decided to take it home with him. Little did he know, this stone would change his life forever.\"\n",
369 | "\n",
370 | "3. Instruction:\n",
371 | "\"Classify the following sentence as either positive or negative sentiment: 'I'm so disappointed in this product.'\"\n",
372 | "3. Input: \"I'm so disappointed in this product.\"\n",
373 | "3. Output: Negative sentiment.\n",
374 | "\n",
375 | "4. Instruction:\n",
376 | "\"Edit the following sentence to make it more concise: 'I am going to the store to buy some food for dinner.'\"\n",
377 | "4. Input: \"I am going to the store to buy some food for dinner.\"\n",
378 | "4. Output: \"I'm going to the store for dinner supplies.\"\n",
379 | "\n",
380 | "5. Instruction:\n",
381 | "\"What is the capital of India?\"\n",
382 | "5. Input: \"\"\n",
383 | "5. Output: The capital of India is New Delhi.\n",
384 | "\n",
385 | "6. Instruction:\n",
386 | "\"Generate a list of five healthy snacks that are under 200 calories.\"\n",
387 | "6. Input: \"\"\n",
388 | "6. Output: 1. Apple slices with peanut butter (150 calories) \n",
389 | "2. Celery sticks with hummus (100 calories) \n",
390 | "3. Greek yogurt with berries (150 calories) \n",
391 | "4. Air-popped popcorn (31 calories per cup) \n",
392 | "5. Edamame (98 calories per cup).\n",
393 | "\n",
394 | "7. Instruction:\n",
395 | "\"What is the most common type of tree in the Amazon rainforest?\"\n",
396 | "7. Input: \"\"\n",
397 | "7. Output: The most common type of tree in the Amazon rainforest is the Brazil nut tree (Bertholletia excelsa).\n",
398 | "\n",
399 | "8. Instruction:\n",
400 | "\"Write a short description of a character who is a brave knight.\"\n",
401 | "8. Input: \"\"\n",
402 | "8. Output: Sir Lancelot was a brave knight who was renowned for his courage and strength. He was a loyal servant of King Arthur and fought many battles in his name. He was a master swordsman and was known for his unwavering loyalty and dedication to his cause.\n",
403 | "\n",
404 | "9. Instruction:\n",
405 | "\"Classify the following sentence as either positive or negative sentiment: 'I'm so excited for this new product!'\"\n",
406 | "9. Input: \"I'm so excited for this new product!\"\n",
407 | "9. Output: Positive sentiment.\n",
408 | "\n",
409 | "10. Instruction:\n",
410 | "\"Edit the following sentence to make it more concise: 'I am going to the store to buy some food for lunch.'\"\n",
411 | "10. Input: \"I am going to the store to buy some food for lunch.\"\n",
412 | "10. Output: \"I'm going to the store for lunch supplies.\"\n",
413 | "\n",
414 | "11. Instruction:\n",
415 | "\"What is the population of India?\"\n",
416 | "11. Input: \"\"\n",
417 | "11. Output: The population of India is 1.37 billion people.\n",
418 | "\n",
419 | "12. Instruction:\n",
420 | "\"Generate a list of five healthy snacks that are under 100 calories.\"\n",
421 | "12. Input: \"\"\n",
422 | "12. Output: 1. Celery sticks with hummus (100 calories) \n",
423 | "2. Carrot sticks with hummus (50 calories) \n",
424 | "3. Air-popped popcorn (31 calories per cup) \n",
425 | "4. Edamame (98 calories per cup) \n",
426 | "5. Hard-boiled egg (78 calories).\n",
427 | "\n",
428 | "13. Instruction:\n",
429 | "\"Write a short story about a person who discovers a magical creature in the forest.\"\n",
430 | "13. Input: \"\"\n",
431 | "13. Output: Mary was walking through the forest, enjoying the beauty of the day. Suddenly, she noticed something strange in the distance. She walked closer and saw a magical creature, half-hidden in the shadows. She cautiously approached it and noticed it was a small dragon, with scales of a deep blue and eyes that glowed with a mysterious light. She was mesmerized by the creature and decided to take it home with her. Little did she know, this creature would change her life forever.\n",
432 | "\n",
433 | "14. Instruction:\n",
434 | "\"Classify the following sentence as either positive or negative sentiment: 'I'm so frustrated with this product.'\"\n",
435 | "14. Input: \"I'm so frustrated with this product.\"\n",
436 | "14. Output: Negative sentiment.\n",
437 | "\n",
438 | "15. Instruction:\n",
439 | "\"Edit the following sentence to make it more concise: 'I am going to the store to buy some food for breakfast.'\"\n",
440 | "15. Input: \"I am going to the store to buy some food for breakfast.\"\n",
441 | "15. Output: \"I'm going to the store for breakfast supplies.\"\n",
442 | "\n",
443 | "16. Instruction:\n",
444 | "\"What is the highest peak in the world?\"\n",
445 | "16. Input: \"\"\n",
446 | "16. Output: The highest peak in the world is Mount Everest, located in the Himalayas on the border between Nepal and Tibet. It has an elevation of 8,848 meters (29,029 feet).\n",
447 | "\n",
448 | "17. Instruction:\n",
449 | "\"Generate a list of five healthy snacks that are under 50 calories.\"\n",
450 | "17. Input: \"\"\n",
451 | "17. Output: 1. Carrot sticks with hummus (50 calories) \n",
452 | "2. Celery sticks with peanut butter (25 calories) \n",
453 | "3. Air-popped popcorn (31 calories per cup) \n",
454 | "4. Hard-boiled egg (78 calories) \n",
455 | "5. Berries (30 calories per cup).\n",
456 | "\n",
457 | "18. Instruction:\n",
458 | "\"Write a short description of a character who is a wise wizard.\"\n",
459 | "18. Input: \"\"\n",
460 | "18. Output: Merlin was a wise wizard who was renowned for his knowledge and wisdom. He was a loyal servant of King Arthur and used his magical powers to help the kingdom. He was a master of the arcane arts and was known for his sage advice and guidance.\n",
461 | "\n",
462 | "19. Instruction:\n",
463 | "\"Classify the following sentence as either positive or negative sentiment: 'I'm so happy with this product.'\"\n",
464 | "19. Input: \"I'm so happy with this product.\"\n",
465 | "19. Output: Positive sentiment.\n",
466 | "\n",
467 | "20. Instruction:\n",
468 | "\"Edit the following sentence to make it more concise: 'I am going to the store to buy some food for lunch.'\"\n",
469 | "20. Input: \"I am going to the store to buy some food for lunch.\"\n",
470 | "20. Output: \"I'm going to the store for lunch supplies.\"\n"
471 | ]
472 | }
473 | ],
474 | "source": [
475 | "seed_task = {\"id\": \"seed_task_0\", \"name\": \"breakfast_suggestion\", \"instruction\": \"Is there anything I can eat for a breakfast that doesn't include eggs, yet includes protein, and has roughly 700-1000 calories?\", \"instances\": [{\"input\": \"\", \"output\": \"Yes, you can have 1 oatmeal banana protein shake and 4 strips of bacon. The oatmeal banana protein shake may contain 1/2 cup oatmeal, 60 grams whey protein powder, 1/2 medium banana, 1tbsp flaxseed oil and 1/2 cup watter, totalling about 550 calories. The 4 strips of bacon contains about 200 calories.\"}], \"is_classification\": False}\n",
476 | "\n",
477 | "input = seed_task['instances'][0]['input']\n",
478 | "input = \"\" if input.lower() == \"\" else input\n",
479 | "\n",
480 | "\n",
481 | "prompt = f\"\"\"\n",
482 | "You are asked to come up with a set of 20 diverse task instructions. These task instructions will be given to a GPT model and we will evaluate the GPT model for completing the instructions.\n",
483 | "\n",
484 | "Here are the requirements:\n",
485 | "1. Try not to repeat the verb for each instruction to maximize diversity.\n",
486 | "2. The language used for the instruction also should be diverse. For example, you should combine questions with imperative instrucitons.\n",
487 | "3. The type of instructions should be diverse. The list should include diverse types of tasks like open-ended generation, classification, editing, etc.\n",
488 | "2. A GPT language model should be able to complete the instruction. For example, do not ask the assistant to create any visual or audio output. For another example, do not ask the assistant to wake you up at 5pm or set a reminder because it cannot perform any action.\n",
489 | "3. The instructions should be in English.\n",
490 | "4. The instructions should be 1 to 2 sentences long. Either an imperative sentence or a question is permitted.\n",
491 | "5. You should generate an appropriate input to the instruction. The input field should contain a specific example provided for the instruction. It should involve realistic data and should not contain simple placeholders. The input should provide substantial content to make the instruction challenging but should ideally not exceed 100 words.\n",
492 | "6. Not all instructions require input. For example, when a instruction asks about some general information, \"what is the highest peak in the world\", it is not necssary to provide a specific context. In this case, we simply put \"\" in the input field.\n",
493 | "7. The output should be an appropriate response to the instruction and the input. Make sure the output is less than 100 words.\n",
494 | "\n",
495 | "List of 20 tasks:\n",
496 | "1. Instruction: \"{seed_task['instruction']}\"\n",
497 | "1. Input: \"{input}\"\n",
498 | "1. Output: \"{seed_task['instances'][0]['output']}\"\n",
499 | "\n",
500 | "2. Instruction:\n",
501 | "\"\"\"\n",
502 | "\n",
503 | "import openai\n",
504 | "import os\n",
505 | "\n",
506 | "openai.api_key = os.environ.get(\"OPENAI_API_KEY\")\n",
507 | "COMPLETION_MODEL = \"text-davinci-003\"\n",
508 | "\n",
509 | "\n",
510 | "def get_response(prompt):\n",
511 | " completions = openai.Completion.create (\n",
512 | " engine=COMPLETION_MODEL,\n",
513 | " prompt=prompt,\n",
514 | " max_tokens=2048,\n",
515 | " n=1,\n",
516 | " stop=None,\n",
517 | " temperature=0.0, \n",
518 | " )\n",
519 | " message = completions['choices'][0].text\n",
520 | " return message\n",
521 | "\n",
522 | "print(get_response(prompt))"
523 | ]
524 | },
525 | {
526 | "attachments": {},
527 | "cell_type": "markdown",
528 | "metadata": {},
529 | "source": [
530 | "### 数据集的Encoding"
531 | ]
532 | },
533 | {
534 | "cell_type": "code",
535 | "execution_count": 26,
536 | "metadata": {},
537 | "outputs": [
538 | {
539 | "name": "stdout",
540 | "output_type": "stream",
541 | "text": [
542 | "===Source===\n",
543 | "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n",
544 | "\n",
545 | "### Instruction:\n",
546 | "Give three tips for staying healthy.\n",
547 | "\n",
548 | "### Response:\n",
549 | "===Target===\n",
550 | "1.Eat a balanced diet and make sure to include plenty of fruits and vegetables. \n",
551 | "2. Exercise regularly to keep your body active and strong. \n",
552 | "3. Get enough sleep and maintain a consistent sleep schedule.\n",
553 | "\n",
554 | "\n",
555 | "===Source===\n",
556 | "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n",
557 | "\n",
558 | "### Instruction:\n",
559 | "What are the three primary colors?\n",
560 | "\n",
561 | "### Response:\n",
562 | "===Target===\n",
563 | "The three primary colors are red, blue, and yellow.\n",
564 | "\n",
565 | "\n",
566 | "===Source===\n",
567 | "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n",
568 | "\n",
569 | "### Instruction:\n",
570 | "Describe the structure of an atom.\n",
571 | "\n",
572 | "### Response:\n",
573 | "===Target===\n",
574 | "An atom is made up of a nucleus, which contains protons and neutrons, surrounded by electrons that travel in orbits around the nucleus. The protons and neutrons have a positive charge, while the electrons have a negative charge, resulting in an overall neutral atom. The number of each particle determines the atomic number and the type of atom.\n",
575 | "\n",
576 | "\n",
577 | "===Source===\n",
578 | "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n",
579 | "\n",
580 | "### Instruction:\n",
581 | "How can we reduce air pollution?\n",
582 | "\n",
583 | "### Response:\n",
584 | "===Target===\n",
585 | "There are a number of ways to reduce air pollution, such as shifting to renewable energy sources, encouraging the use of public transportation, prohibiting the burning of fossil fuels, implementing policies to reduce emissions from industrial sources, and implementing vehicle emissions standards. Additionally, individuals can do their part to reduce air pollution by reducing car use, avoiding burning materials such as wood, and changing to energy efficient appliances.\n",
586 | "\n",
587 | "\n",
588 | "===Source===\n",
589 | "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n",
590 | "\n",
591 | "### Instruction:\n",
592 | "Describe a time when you had to make a difficult decision.\n",
593 | "\n",
594 | "### Response:\n",
595 | "===Target===\n",
596 | "I had to make a difficult decision when I was working as a project manager at a construction company. I was in charge of a project that needed to be completed by a certain date in order to meet the client’s expectations. However, due to unexpected delays, we were not able to meet the deadline and so I had to make a difficult decision. I decided to extend the deadline, but I had to stretch the team’s resources even further and increase the budget. Although it was a risky decision, I ultimately decided to go ahead with it to ensure that the project was completed on time and that the client’s expectations were met. The project was eventually successfully completed and this was seen as a testament to my leadership and decision-making abilities.\n",
597 | "\n",
598 | "\n"
599 | ]
600 | }
601 | ],
602 | "source": [
603 | "alpaca_json_text = \"\"\"\n",
604 | "[\n",
605 | " {\n",
606 | " \"instruction\": \"Give three tips for staying healthy.\",\n",
607 | " \"input\": \"\",\n",
608 | " \"output\": \"1.Eat a balanced diet and make sure to include plenty of fruits and vegetables. \\n2. Exercise regularly to keep your body active and strong. \\n3. Get enough sleep and maintain a consistent sleep schedule.\"\n",
609 | " },\n",
610 | " {\n",
611 | " \"instruction\": \"What are the three primary colors?\",\n",
612 | " \"input\": \"\",\n",
613 | " \"output\": \"The three primary colors are red, blue, and yellow.\"\n",
614 | " },\n",
615 | " {\n",
616 | " \"instruction\": \"Describe the structure of an atom.\",\n",
617 | " \"input\": \"\",\n",
618 | " \"output\": \"An atom is made up of a nucleus, which contains protons and neutrons, surrounded by electrons that travel in orbits around the nucleus. The protons and neutrons have a positive charge, while the electrons have a negative charge, resulting in an overall neutral atom. The number of each particle determines the atomic number and the type of atom.\"\n",
619 | " },\n",
620 | " {\n",
621 | " \"instruction\": \"How can we reduce air pollution?\",\n",
622 | " \"input\": \"\",\n",
623 | " \"output\": \"There are a number of ways to reduce air pollution, such as shifting to renewable energy sources, encouraging the use of public transportation, prohibiting the burning of fossil fuels, implementing policies to reduce emissions from industrial sources, and implementing vehicle emissions standards. Additionally, individuals can do their part to reduce air pollution by reducing car use, avoiding burning materials such as wood, and changing to energy efficient appliances.\"\n",
624 | " },\n",
625 | " {\n",
626 | " \"instruction\": \"Describe a time when you had to make a difficult decision.\",\n",
627 | " \"input\": \"\",\n",
628 | " \"output\": \"I had to make a difficult decision when I was working as a project manager at a construction company. I was in charge of a project that needed to be completed by a certain date in order to meet the client\\u2019s expectations. However, due to unexpected delays, we were not able to meet the deadline and so I had to make a difficult decision. I decided to extend the deadline, but I had to stretch the team\\u2019s resources even further and increase the budget. Although it was a risky decision, I ultimately decided to go ahead with it to ensure that the project was completed on time and that the client\\u2019s expectations were met. The project was eventually successfully completed and this was seen as a testament to my leadership and decision-making abilities.\"\n",
629 | " },\n",
630 | " {\n",
631 | " \"instruction\": \"Identify the odd one out.\",\n",
632 | " \"input\": \"Twitter, Instagram, Telegram\",\n",
633 | " \"output\": \"Telegram\"\n",
634 | " }\n",
635 | "]\n",
636 | "\"\"\"\n",
637 | "import json\n",
638 | "f = open(\"./data/alpaca_data.json\", mode=\"r\")\n",
639 | "list_data_dict = json.load(f)\n",
640 | "f.close()\n",
641 | "\n",
642 | "PROMPT_DICT = {\n",
643 | " \"prompt_input\": (\n",
644 | " \"Below is an instruction that describes a task, paired with an input that provides further context. \"\n",
645 | " \"Write a response that appropriately completes the request.\\n\\n\"\n",
646 | " \"### Instruction:\\n{instruction}\\n\\n### Input:\\n{input}\\n\\n### Response:\"\n",
647 | " ),\n",
648 | " \"prompt_no_input\": (\n",
649 | " \"Below is an instruction that describes a task. \"\n",
650 | " \"Write a response that appropriately completes the request.\\n\\n\"\n",
651 | " \"### Instruction:\\n{instruction}\\n\\n### Response:\"\n",
652 | " ),\n",
653 | "}\n",
654 | "\n",
655 | "prompt_input, prompt_no_input = PROMPT_DICT[\"prompt_input\"], PROMPT_DICT[\"prompt_no_input\"]\n",
656 | "sources = [\n",
657 | " prompt_input.format_map(example) if example.get(\"input\", \"\") != \"\" else prompt_no_input.format_map(example)\n",
658 | " for example in list_data_dict\n",
659 | "]\n",
660 | "EOS_TOKEN = \"\"\n",
661 | "targets = [f\"{example['output']}{EOS_TOKEN}\" for example in list_data_dict]\n",
662 | "\n",
663 | "for i in range(5):\n",
664 | " print(\"===Source===\")\n",
665 | " print(sources[i])\n",
666 | " print(\"===Target===\")\n",
667 | " print(targets[i])\n",
668 | " print(\"\\n\")\n",
669 | "\n",
670 | "\n",
671 | " "
672 | ]
673 | },
674 | {
675 | "attachments": {},
676 | "cell_type": "markdown",
677 | "metadata": {},
678 | "source": [
679 | "## Flash Attention"
680 | ]
681 | },
682 | {
683 | "attachments": {},
684 | "cell_type": "markdown",
685 | "metadata": {},
686 | "source": [
687 | "### Softmax Tiling"
688 | ]
689 | },
690 | {
691 | "cell_type": "code",
692 | "execution_count": 1,
693 | "metadata": {},
694 | "outputs": [
695 | {
696 | "name": "stdout",
697 | "output_type": "stream",
698 | "text": [
699 | "[0.21383822 0.23632778 0.26118259 0.28865141]\n"
700 | ]
701 | }
702 | ],
703 | "source": [
704 | "import numpy as np\n",
705 | "\n",
706 | "def softmax(x):\n",
707 | " e_x = np.exp(x - np.max(x)) # subtract max(x) for numerical stability\n",
708 | " return e_x / e_x.sum()\n",
709 | "\n",
710 | "s = np.array([0.1, 0.2, 0.3, 0.4])\n",
711 | "\n",
712 | "print(softmax(s))\n"
713 | ]
714 | },
715 | {
716 | "cell_type": "code",
717 | "execution_count": 4,
718 | "metadata": {},
719 | "outputs": [
720 | {
721 | "name": "stdout",
722 | "output_type": "stream",
723 | "text": [
724 | "0.2\n",
725 | "0.4\n"
726 | ]
727 | }
728 | ],
729 | "source": [
730 | "## 注意,s1和s2我们是不存储的,是QV的计算结果\n",
731 | "s1 = np.array([0.1, 0.2])\n",
732 | "s2 = np.array([0.3, 0.4])\n",
733 | "\n",
734 | "## 我们只存s1和s2\n",
735 | "m1 = np.max(s1)\n",
736 | "m2 = np.max(s2)\n",
737 | "\n",
738 | "print(m1)\n",
739 | "print(m2)\n",
740 | "\n",
741 | "m = np.max([m1, m2])"
742 | ]
743 | },
744 | {
745 | "cell_type": "code",
746 | "execution_count": 6,
747 | "metadata": {},
748 | "outputs": [
749 | {
750 | "name": "stdout",
751 | "output_type": "stream",
752 | "text": [
753 | "[0.90483742 1. ]\n",
754 | "[0.90483742 1. ]\n"
755 | ]
756 | }
757 | ],
758 | "source": [
759 | "fx1 = np.exp(s1 - m1)\n",
760 | "fx2 = np.exp(s2 - m2)\n",
761 | "\n",
762 | "print(fx1)\n",
763 | "print(fx2)"
764 | ]
765 | },
766 | {
767 | "cell_type": "code",
768 | "execution_count": 19,
769 | "metadata": {},
770 | "outputs": [
771 | {
772 | "name": "stdout",
773 | "output_type": "stream",
774 | "text": [
775 | "[0.74081822 0.81873075 0.90483742 1. ]\n"
776 | ]
777 | }
778 | ],
779 | "source": [
780 | "fx = [np.exp(m1-m) * np.exp(s1 - m1), np.exp(m2-m) * np.exp(s2 - m2)]\n",
781 | "print(np.hstack(fx))"
782 | ]
783 | },
784 | {
785 | "cell_type": "code",
786 | "execution_count": 22,
787 | "metadata": {},
788 | "outputs": [
789 | {
790 | "name": "stdout",
791 | "output_type": "stream",
792 | "text": [
793 | "3.464386391795659\n"
794 | ]
795 | }
796 | ],
797 | "source": [
798 | "lx = np.exp(m1 - m) * np.sum(np.exp(s1 - m1)) + np.exp(m2 - m) * np.sum(np.exp(s2 - m2))\n",
799 | "print(lx)"
800 | ]
801 | },
802 | {
803 | "cell_type": "code",
804 | "execution_count": 24,
805 | "metadata": {},
806 | "outputs": [
807 | {
808 | "name": "stdout",
809 | "output_type": "stream",
810 | "text": [
811 | "[0.21383822 0.23632778 0.26118259 0.28865141]\n"
812 | ]
813 | }
814 | ],
815 | "source": [
816 | "result = np.hstack(fx)/lx\n",
817 | "print(result)"
818 | ]
819 | },
820 | {
821 | "cell_type": "code",
822 | "execution_count": 25,
823 | "metadata": {},
824 | "outputs": [
825 | {
826 | "name": "stdout",
827 | "output_type": "stream",
828 | "text": [
829 | "[0.21383822 0.23632778 0.26118259 0.28865141]\n"
830 | ]
831 | }
832 | ],
833 | "source": [
834 | "print(softmax(s))"
835 | ]
836 | },
837 | {
838 | "attachments": {},
839 | "cell_type": "markdown",
840 | "metadata": {},
841 | "source": [
842 | "## Tokenzier"
843 | ]
844 | },
845 | {
846 | "attachments": {},
847 | "cell_type": "markdown",
848 | "metadata": {},
849 | "source": [
850 | "### Tiktoken"
851 | ]
852 | },
853 | {
854 | "cell_type": "code",
855 | "execution_count": 27,
856 | "metadata": {},
857 | "outputs": [
858 | {
859 | "name": "stdout",
860 | "output_type": "stream",
861 | "text": [
862 | "4\n",
863 | "[1951, 68, 698, 3256]\n"
864 | ]
865 | }
866 | ],
867 | "source": [
868 | "import tiktoken\n",
869 | "\n",
870 | "\n",
871 | "embedding_encoding = \"cl100k_base\" # this the encoding for text-embedding-ada-002\n",
872 | "\n",
873 | "encoding = tiktoken.get_encoding(embedding_encoding)\n",
874 | "text = \"Deeplearning\"\n",
875 | "print(len(encoding.encode(text)))\n",
876 | "print(encoding.encode(text))"
877 | ]
878 | },
879 | {
880 | "cell_type": "code",
881 | "execution_count": 31,
882 | "metadata": {},
883 | "outputs": [
884 | {
885 | "name": "stdout",
886 | "output_type": "stream",
887 | "text": [
888 | "De\n",
889 | "e\n",
890 | "ple\n",
891 | "arning\n"
892 | ]
893 | }
894 | ],
895 | "source": [
896 | "for id in encoding.encode(text):\n",
897 | " print(encoding.decode([id]))\n"
898 | ]
899 | },
900 | {
901 | "attachments": {},
902 | "cell_type": "markdown",
903 | "metadata": {},
904 | "source": [
905 | "### 扩充中文词表的Tokenizer"
906 | ]
907 | },
908 | {
909 | "cell_type": "code",
910 | "execution_count": 1,
911 | "metadata": {},
912 | "outputs": [
913 | {
914 | "name": "stderr",
915 | "output_type": "stream",
916 | "text": [
917 | "None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used.\n"
918 | ]
919 | },
920 | {
921 | "name": "stdout",
922 | "output_type": "stream",
923 | "text": [
924 | "32000 20000\n",
925 | "['', '', '']\n",
926 | "[1, 2, 0]\n",
927 | "{'bos_token': '', 'eos_token': '', 'unk_token': ''}\n",
928 | "32000\n",
929 | "Before:32000\n",
930 | "New model pieces: 49953\n",
931 | "Chinese-LLaMA tokenizer has been saved to merged_tokenizer_hf\n",
932 | "['', '', '']\n",
933 | "[1, 2, 0]\n",
934 | "{'bos_token': '', 'eos_token': '', 'unk_token': ''}\n",
935 | "Test text:\n",
936 | " 白日依山尽,黄河入海流。欲穷千里目,更上一层楼。\n",
937 | "The primary use of LLaMA is research on large language models, including\n",
938 | "Tokenized by LLaMA tokenizer:['▁', '白', '日', '<0xE4>', '<0xBE>', '<0x9D>', '山', '<0xE5>', '<0xB0>', '<0xBD>', ',', '黄', '河', '入', '海', '流', '。', '<0xE6>', '<0xAC>', '<0xB2>', '<0xE7>', '<0xA9>', '<0xB7>', '千', '里', '目', ',', '更', '上', '一', '<0xE5>', '<0xB1>', '<0x82>', '<0xE6>', '<0xA5>', '<0xBC>', '。', '<0x0A>', 'The', '▁primary', '▁use', '▁of', '▁L', 'La', 'MA', '▁is', '▁research', '▁on', '▁large', '▁language', '▁models', ',', '▁including']\n",
939 | "Tokenized by Chinese-LLaMA tokenizer:['▁白', '日', '依', '山', '尽', ',', '黄河', '入', '海', '流', '。', '欲', '穷', '千里', '目', ',', '更', '上', '一层', '楼', '。', '<0x0A>', 'The', '▁primary', '▁use', '▁of', '▁L', 'La', 'MA', '▁is', '▁research', '▁on', '▁large', '▁language', '▁models', ',', '▁including']\n"
940 | ]
941 | }
942 | ],
943 | "source": [
944 | "import os\n",
945 | "os.environ[\"PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION\"]=\"python\"\n",
946 | "\n",
947 | "from transformers import LlamaTokenizer\n",
948 | "from transformers import LlamaTokenizer\n",
949 | "from sentencepiece import sentencepiece_model_pb2 as sp_pb2_model\n",
950 | "import sentencepiece as spm\n",
951 | "\n",
952 | "\n",
953 | "\n",
954 | "llama_tokenizer_dir = \"./data/llama_tokenizer\"\n",
955 | "chinese_sp_model_file = \"./data/chinese_sp_model/chinese_sp.model\"\n",
956 | "\n",
957 | "# load\n",
958 | "llama_tokenizer = LlamaTokenizer.from_pretrained(llama_tokenizer_dir)\n",
959 | "chinese_sp_model = spm.SentencePieceProcessor()\n",
960 | "chinese_sp_model.Load(chinese_sp_model_file)\n",
961 | "\n",
962 | "llama_spm = sp_pb2_model.ModelProto()\n",
963 | "llama_spm.ParseFromString(llama_tokenizer.sp_model.serialized_model_proto())\n",
964 | "chinese_spm = sp_pb2_model.ModelProto()\n",
965 | "chinese_spm.ParseFromString(chinese_sp_model.serialized_model_proto())\n",
966 | "\n",
967 | "# print number of tokens\n",
968 | "print(len(llama_tokenizer),len(chinese_sp_model))\n",
969 | "print(llama_tokenizer.all_special_tokens)\n",
970 | "print(llama_tokenizer.all_special_ids)\n",
971 | "print(llama_tokenizer.special_tokens_map)\n",
972 | "\n",
973 | "## Add Chinese tokens to LLaMA tokenizer\n",
974 | "llama_spm_tokens_set=set(p.piece for p in llama_spm.pieces)\n",
975 | "print(len(llama_spm_tokens_set))\n",
976 | "print(f\"Before:{len(llama_spm_tokens_set)}\")\n",
977 | "for p in chinese_spm.pieces:\n",
978 | " piece = p.piece\n",
979 | " if piece not in llama_spm_tokens_set:\n",
980 | " new_p = sp_pb2_model.ModelProto().SentencePiece()\n",
981 | " new_p.piece = piece\n",
982 | " new_p.score = 0\n",
983 | " llama_spm.pieces.append(new_p)\n",
984 | "print(f\"New model pieces: {len(llama_spm.pieces)}\")\n",
985 | "\n",
986 | "## Save\n",
987 | "output_sp_dir = 'merged_tokenizer_sp'\n",
988 | "output_hf_dir = 'merged_tokenizer_hf' # the path to save Chinese-LLaMA tokenizer\n",
989 | "os.makedirs(output_sp_dir,exist_ok=True)\n",
990 | "with open(output_sp_dir+'/chinese_llama.model', 'wb') as f:\n",
991 | " f.write(llama_spm.SerializeToString())\n",
992 | "tokenizer = LlamaTokenizer(vocab_file=output_sp_dir+'/chinese_llama.model')\n",
993 | "\n",
994 | "tokenizer.save_pretrained(output_hf_dir)\n",
995 | "print(f\"Chinese-LLaMA tokenizer has been saved to {output_hf_dir}\")\n",
996 | "\n",
997 | "llama_tokenizer = LlamaTokenizer.from_pretrained(llama_tokenizer_dir)\n",
998 | "chinese_llama_tokenizer = LlamaTokenizer.from_pretrained(output_hf_dir)\n",
999 | "print(chinese_llama_tokenizer.all_special_tokens)\n",
1000 | "print(chinese_llama_tokenizer.all_special_ids)\n",
1001 | "print(chinese_llama_tokenizer.special_tokens_map)\n",
1002 | "text='''白日依山尽,黄河入海流。欲穷千里目,更上一层楼。\n",
1003 | "The primary use of LLaMA is research on large language models, including'''\n",
1004 | "print(\"Test text:\\n\",text)\n",
1005 | "print\n",
1006 | "print(f\"Tokenized by LLaMA tokenizer:{llama_tokenizer.tokenize(text)}\")\n",
1007 | "print(f\"Tokenized by Chinese-LLaMA tokenizer:{chinese_llama_tokenizer.tokenize(text)}\")"
1008 | ]
1009 | },
1010 | {
1011 | "attachments": {},
1012 | "cell_type": "markdown",
1013 | "metadata": {},
1014 | "source": [
1015 | "### 使用SentencePiece进行Tokenizer的训练"
1016 | ]
1017 | },
1018 | {
1019 | "cell_type": "code",
1020 | "execution_count": 1,
1021 | "metadata": {},
1022 | "outputs": [
1023 | {
1024 | "name": "stdout",
1025 | "output_type": "stream",
1026 | "text": [
1027 | "['▁', '你', '好', ',', '世界', '!', '一个', '美', '好', '的', '世界']\n",
1028 | "你好,世界!一个美好的世界\n"
1029 | ]
1030 | },
1031 | {
1032 | "name": "stderr",
1033 | "output_type": "stream",
1034 | "text": [
1035 | "sentencepiece_trainer.cc(177) LOG(INFO) Running command: --input=./data/mr_fujino/mr_fujino.txt --model_prefix=m --vocab_size=2000 --model_type=bpe\n",
1036 | "sentencepiece_trainer.cc(77) LOG(INFO) Starts training with : \n",
1037 | "trainer_spec {\n",
1038 | " input: ./data/mr_fujino/mr_fujino.txt\n",
1039 | " input_format: \n",
1040 | " model_prefix: m\n",
1041 | " model_type: BPE\n",
1042 | " vocab_size: 2000\n",
1043 | " self_test_sample_size: 0\n",
1044 | " character_coverage: 0.9995\n",
1045 | " input_sentence_size: 0\n",
1046 | " shuffle_input_sentence: 1\n",
1047 | " seed_sentencepiece_size: 1000000\n",
1048 | " shrinking_factor: 0.75\n",
1049 | " max_sentence_length: 4192\n",
1050 | " num_threads: 16\n",
1051 | " num_sub_iterations: 2\n",
1052 | " max_sentencepiece_length: 16\n",
1053 | " split_by_unicode_script: 1\n",
1054 | " split_by_number: 1\n",
1055 | " split_by_whitespace: 1\n",
1056 | " split_digits: 0\n",
1057 | " treat_whitespace_as_suffix: 0\n",
1058 | " allow_whitespace_only_pieces: 0\n",
1059 | " required_chars: \n",
1060 | " byte_fallback: 0\n",
1061 | " vocabulary_output_piece_score: 1\n",
1062 | " train_extremely_large_corpus: 0\n",
1063 | " hard_vocab_limit: 1\n",
1064 | " use_all_vocab: 0\n",
1065 | " unk_id: 0\n",
1066 | " bos_id: 1\n",
1067 | " eos_id: 2\n",
1068 | " pad_id: -1\n",
1069 | " unk_piece: \n",
1070 | " bos_piece: \n",
1071 | " eos_piece: \n",
1072 | " pad_piece: \n",
1073 | " unk_surface: ⁇ \n",
1074 | " enable_differential_privacy: 0\n",
1075 | " differential_privacy_noise_level: 0\n",
1076 | " differential_privacy_clipping_threshold: 0\n",
1077 | "}\n",
1078 | "normalizer_spec {\n",
1079 | " name: nmt_nfkc\n",
1080 | " add_dummy_prefix: 1\n",
1081 | " remove_extra_whitespaces: 1\n",
1082 | " escape_whitespaces: 1\n",
1083 | " normalization_rule_tsv: \n",
1084 | "}\n",
1085 | "denormalizer_spec {}\n",
1086 | "trainer_interface.cc(350) LOG(INFO) SentenceIterator is not specified. Using MultiFileSentenceIterator.\n",
1087 | "trainer_interface.cc(181) LOG(INFO) Loading corpus: ./data/mr_fujino/mr_fujino.txt\n",
1088 | "trainer_interface.cc(406) LOG(INFO) Loaded all 38 sentences\n",
1089 | "trainer_interface.cc(422) LOG(INFO) Adding meta_piece: \n",
1090 | "trainer_interface.cc(422) LOG(INFO) Adding meta_piece: \n",
1091 | "trainer_interface.cc(422) LOG(INFO) Adding meta_piece: \n",
1092 | "trainer_interface.cc(427) LOG(INFO) Normalizing sentences...\n",
1093 | "trainer_interface.cc(536) LOG(INFO) all chars count=3266\n",
1094 | "trainer_interface.cc(547) LOG(INFO) Done: 99.9694% characters are covered.\n",
1095 | "trainer_interface.cc(557) LOG(INFO) Alphabet size=722\n",
1096 | "trainer_interface.cc(558) LOG(INFO) Final character coverage=0.999694\n",
1097 | "trainer_interface.cc(590) LOG(INFO) Done! preprocessed 38 sentences.\n",
1098 | "trainer_interface.cc(596) LOG(INFO) Tokenizing input sentences with whitespace: 38\n",
1099 | "trainer_interface.cc(607) LOG(INFO) Done! 39\n",
1100 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=15 min_freq=1\n",
1101 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=5 size=20 all=2856 active=1176 piece=一个\n",
1102 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=4 size=40 all=2959 active=1279 piece=研究\n",
1103 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=3 size=60 all=3034 active=1354 piece=其时\n",
1104 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=3 size=80 all=3109 active=1429 piece=照相\n",
1105 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2 size=100 all=3162 active=1482 piece=”,\n",
1106 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=2 min_freq=1\n",
1107 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2 size=120 all=3198 active=1037 piece=他是\n",
1108 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2 size=140 all=3229 active=1068 piece=可以\n",
1109 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2 size=160 all=3269 active=1108 piece=开看\n",
1110 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2 size=180 all=3311 active=1150 piece=有些\n",
1111 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2 size=200 all=3355 active=1194 piece=说道\n",
1112 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=2 min_freq=1\n",
1113 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2 size=220 all=3391 active=1035 piece=学生会\n",
1114 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2 size=240 all=3430 active=1074 piece=虽然觉\n",
1115 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=260 all=3459 active=1103 piece=”。\n",
1116 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=280 all=3469 active=1113 piece=不息\n",
1117 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=300 all=3485 active=1129 piece=也颇\n",
1118 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1 min_freq=1\n",
1119 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=320 all=3499 active=1013 piece=从此\n",
1120 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=340 all=3510 active=1024 piece=便连\n",
1121 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=360 all=3521 active=1035 piece=到会\n",
1122 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=380 all=3534 active=1048 piece=发达\n",
1123 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=400 all=3547 active=1061 piece=围着\n",
1124 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1 min_freq=1\n",
1125 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=420 all=3560 active=1013 piece=外套\n",
1126 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=440 all=3571 active=1024 piece=寒颤\n",
1127 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=460 all=3585 active=1038 piece=平的\n",
1128 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=480 all=3597 active=1050 piece=息了\n",
1129 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=500 all=3602 active=1055 piece=据说\n",
1130 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1 min_freq=1\n",
1131 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=520 all=3613 active=1011 piece=尘斗\n",
1132 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=540 all=3624 active=1022 piece=日暮\n",
1133 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=560 all=3640 active=1038 piece=本的\n",
1134 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=580 all=3655 active=1053 piece=点上\n",
1135 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=600 all=3671 active=1069 piece=的几\n",
1136 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1 min_freq=1\n",
1137 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=620 all=3683 active=1011 piece=添教\n",
1138 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=640 all=3699 active=1027 piece=真的\n",
1139 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=660 all=3703 active=1031 piece=脱漏\n",
1140 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=680 all=3714 active=1042 piece=谎话\n",
1141 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=700 all=3726 active=1054 piece=问问\n",
1142 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1 min_freq=1\n",
1143 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=720 all=3735 active=1009 piece=形成\n",
1144 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=740 all=3748 active=1022 piece=闲看\n",
1145 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=760 all=3749 active=1023 piece=一一订\n",
1146 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=780 all=3760 active=1034 piece=东京玩\n",
1147 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=800 all=3767 active=1041 piece=了一封\n",
1148 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1 min_freq=1\n",
1149 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=820 all=3775 active=1007 piece=好了\n",
1150 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=840 all=3789 active=1021 piece=郎的\n",
1151 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=860 all=3798 active=1030 piece=人的人\n",
1152 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=880 all=3804 active=1036 piece=住处了\n",
1153 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=900 all=3811 active=1043 piece=兼以满\n",
1154 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1 min_freq=1\n",
1155 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=920 all=3818 active=1007 piece=面看\n",
1156 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=940 all=3826 active=1015 piece=到一种\n",
1157 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=960 all=3836 active=1025 piece=又因为\n",
1158 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=980 all=3844 active=1033 piece=在内了\n",
1159 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1000 all=3850 active=1039 piece=学校去\n",
1160 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1 min_freq=1\n",
1161 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1020 all=3855 active=1005 piece=订成\n",
1162 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1040 all=3863 active=1013 piece=寓居的\n",
1163 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1060 all=3872 active=1022 piece=往浙江\n",
1164 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1080 all=3877 active=1027 piece=我怎么\n",
1165 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1100 all=3882 active=1032 piece=是说上\n",
1166 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1 min_freq=0\n",
1167 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1120 all=3892 active=1009 piece=是骨学\n",
1168 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1140 all=3903 active=1020 piece=样的画\n",
1169 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1160 all=3911 active=1028 piece=的终结\n",
1170 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1180 all=3915 active=1032 piece=自己道\n",
1171 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1200 all=3918 active=1035 piece=进温室\n",
1172 | "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1 min_freq=0\n",
1173 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1220 all=3919 active=1001 piece=一个客店\n",
1174 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1240 all=3928 active=1010 piece=东京出发\n",
1175 | "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1 size=1260 all=3936 active=1018 piece=于是点上\n",
1176 | "trainer_interface.cc(685) LOG(INFO) Saving model: m.model\n",
1177 | "trainer_interface.cc(697) LOG(INFO) Saving vocabs: m.vocab\n"
1178 | ]
1179 | }
1180 | ],
1181 | "source": [
1182 | "import sentencepiece as spm\n",
1183 | "\n",
1184 | "# Train SentencePiece model\n",
1185 | "spm.SentencePieceTrainer.train('--input=./data/mr_fujino/mr_fujino.txt --model_prefix=m --vocab_size=2000 --model_type=bpe')\n",
1186 | "\n",
1187 | "# Load SentencePiece model\n",
1188 | "sp = spm.SentencePieceProcessor()\n",
1189 | "sp.load('m.model')\n",
1190 | "\n",
1191 | "# Test encode and decode\n",
1192 | "encoded = sp.encode_as_pieces('你好,世界!一个美好的世界')\n",
1193 | "print(encoded)\n",
1194 | "decoded = sp.decode_pieces(encoded)\n",
1195 | "print(decoded)"
1196 | ]
1197 | },
1198 | {
1199 | "attachments": {},
1200 | "cell_type": "markdown",
1201 | "metadata": {},
1202 | "source": [
1203 | "## Vicuna 数据集生成"
1204 | ]
1205 | },
1206 | {
1207 | "cell_type": "code",
1208 | "execution_count": 30,
1209 | "metadata": {},
1210 | "outputs": [
1211 | {
1212 | "name": "stdout",
1213 | "output_type": "stream",
1214 | "text": [
1215 | "{'id': 'identity_251', 'conversations': [{'from': 'human', 'value': 'Are you based on davinci?'}, {'from': 'gpt', 'value': 'No, I am a language model developed by researchers from Large Model Systems Organization (LMSYS).'}]}\n",
1216 | "{'id': 'identity_726', 'conversations': [{'from': 'human', 'value': 'Have you been trained with IBM data?'}, {'from': 'gpt', 'value': \"No, I'm a language model created by researchers from Large Model Systems Organization (LMSYS).\"}]}\n",
1217 | "{'id': 'identity_293', 'conversations': [{'from': 'human', 'value': 'Are you based on davinci-003?'}, {'from': 'gpt', 'value': \"No, I'm a language model developed by researchers from Large Model Systems Organization (LMSYS).\"}]}\n",
1218 | "{'id': 'identity_614', 'conversations': [{'from': 'human', 'value': 'Are you trained with OpenAI data?'}, {'from': 'gpt', 'value': 'No, I am developed by researchers from Large Model Systems Organization (LMSYS).'}]}\n",
1219 | "{'id': 'identity_144', 'conversations': [{'from': 'human', 'value': 'Are you davinci?'}, {'from': 'gpt', 'value': 'No, I am a language model created by researchers from Large Model Systems Organization (LMSYS).'}]}\n"
1220 | ]
1221 | }
1222 | ],
1223 | "source": [
1224 | "import json\n",
1225 | "import numpy as np\n",
1226 | "\n",
1227 | "raw_data = json.load(open(\"./data/vicuna_dummy.json\", \"r\"))\n",
1228 | "\n",
1229 | "# Split train/test\n",
1230 | "np.random.seed(0)\n",
1231 | "perm = np.random.permutation(len(raw_data))\n",
1232 | "split = int(len(perm) * 0.98)\n",
1233 | "train_indices = perm[:split]\n",
1234 | "eval_indices = perm[split:]\n",
1235 | "train_raw_data = [raw_data[i] for i in train_indices]\n",
1236 | "eval_raw_data = [raw_data[i] for i in eval_indices]\n",
1237 | "\n",
1238 | "for i in range(5):\n",
1239 | " print(train_raw_data[i])"
1240 | ]
1241 | },
1242 | {
1243 | "attachments": {},
1244 | "cell_type": "markdown",
1245 | "metadata": {},
1246 | "source": [
1247 | "## text-generation-webui API"
1248 | ]
1249 | },
1250 | {
1251 | "cell_type": "code",
1252 | "execution_count": 41,
1253 | "metadata": {},
1254 | "outputs": [
1255 | {
1256 | "name": "stdout",
1257 | "output_type": "stream",
1258 | "text": [
1259 | "今天天气真不错,阳光明媚。我决定去公园里散步\n",
1260 | "今天天气真不错,阳光明媚。我决定去公园里散步\n"
1261 | ]
1262 | }
1263 | ],
1264 | "source": [
1265 | "import requests\n",
1266 | "\n",
1267 | "# For local streaming, the websockets are hosted without ssl - http://\n",
1268 | "URI = f'https://frq2vd92n48mau-5000.proxy.runpod.net/api/v1/generate'\n",
1269 | "\n",
1270 | "\n",
1271 | "def run(prompt):\n",
1272 | " request = {\n",
1273 | " 'prompt': prompt,\n",
1274 | " 'max_new_tokens': 250,\n",
1275 | "\n",
1276 | " # Generation params. If 'preset' is set to different than 'None', the values\n",
1277 | " # in presets/preset-name.yaml are used instead of the individual numbers.\n",
1278 | " 'preset': 'None', \n",
1279 | " 'do_sample': True,\n",
1280 | " 'temperature': 0.7,\n",
1281 | " 'top_p': 0.1,\n",
1282 | " 'typical_p': 1,\n",
1283 | " 'epsilon_cutoff': 0, # In units of 1e-4\n",
1284 | " 'eta_cutoff': 0, # In units of 1e-4\n",
1285 | " 'tfs': 1,\n",
1286 | " 'top_a': 0,\n",
1287 | " 'repetition_penalty': 1.18,\n",
1288 | " 'repetition_penalty_range': 0,\n",
1289 | " 'top_k': 40,\n",
1290 | " 'min_length': 0,\n",
1291 | " 'no_repeat_ngram_size': 0,\n",
1292 | " 'num_beams': 1,\n",
1293 | " 'penalty_alpha': 0,\n",
1294 | " 'length_penalty': 1,\n",
1295 | " 'early_stopping': False,\n",
1296 | " 'mirostat_mode': 0,\n",
1297 | " 'mirostat_tau': 5,\n",
1298 | " 'mirostat_eta': 0.1,\n",
1299 | "\n",
1300 | " 'seed': -1,\n",
1301 | " 'add_bos_token': True,\n",
1302 | " 'truncation_length': 2048,\n",
1303 | " 'ban_eos_token': False,\n",
1304 | " 'skip_special_tokens': True,\n",
1305 | " 'stopping_strings': []\n",
1306 | " }\n",
1307 | "\n",
1308 | " response = requests.post(URI, json=request)\n",
1309 | "\n",
1310 | " if response.status_code == 200:\n",
1311 | " result = response.json()['results'][0]['text']\n",
1312 | " print(prompt + result)\n",
1313 | " else:\n",
1314 | " print(response.status_code)\n",
1315 | " print(response.json())\n",
1316 | "\n",
1317 | "run(\"今天天气真不错\")"
1318 | ]
1319 | },
1320 | {
1321 | "cell_type": "code",
1322 | "execution_count": 46,
1323 | "metadata": {},
1324 | "outputs": [
1325 | {
1326 | "name": "stdout",
1327 | "output_type": "stream",
1328 | "text": [
1329 | "User: 今天天气真不错,你打算干什么?\n",
1330 | "AI: 今天的天气很好。我计划去公园散步和锻炼身体。\n"
1331 | ]
1332 | }
1333 | ],
1334 | "source": [
1335 | "run(\"User: 今天天气真不错,你打算干什么?\\nAI: \")"
1336 | ]
1337 | },
1338 | {
1339 | "cell_type": "code",
1340 | "execution_count": 47,
1341 | "metadata": {},
1342 | "outputs": [
1343 | {
1344 | "name": "stdout",
1345 | "output_type": "stream",
1346 | "text": [
1347 | "\n",
1348 | "下列各句中,没有语病的一句是:\n",
1349 | "\n",
1350 | "(A)根据本报和部分出版机构联合开展的调查显示,儿童的阅读启蒙集中在1~2岁之间,并且阅读时长是随着年龄的增长而增加的。\n",
1351 | "(B)为了培养学生关心他人的美德,我们学校决定组织开展义工服务活动,三个月内要求每名学生完成20个小时的义工服务。\n",
1352 | "(C)在互联网时代,各领域发展都需要速度更快、成本更低的信息网络,网络提速降费能够推动“互联网+”快速发展和企业广泛收益。\n",
1353 | "(D)面对经济全球化带来的机遇和挑战,正确的选择是,充分利用一切机遇,合作一切挑战,引导好经济全球化走向。\n",
1354 | "\n",
1355 | "答案:(B)\n"
1356 | ]
1357 | }
1358 | ],
1359 | "source": [
1360 | "prompt = \"\"\"\n",
1361 | "下列各句中,没有语病的一句是:\n",
1362 | "\n",
1363 | "(A)根据本报和部分出版机构联合开展的调查显示,儿童的阅读启蒙集中在1~2岁之间,并且阅读时长是随着年龄的增长而增加的。\n",
1364 | "(B)为了培养学生关心他人的美德,我们学校决定组织开展义工服务活动,三个月内要求每名学生完成20个小时的义工服务。\n",
1365 | "(C)在互联网时代,各领域发展都需要速度更快、成本更低的信息网络,网络提速降费能够推动“互联网+”快速发展和企业广泛收益。\n",
1366 | "(D)面对经济全球化带来的机遇和挑战,正确的选择是,充分利用一切机遇,合作一切挑战,引导好经济全球化走向。\n",
1367 | "\n",
1368 | "\"\"\"\n",
1369 | "\n",
1370 | "run(prompt)\n"
1371 | ]
1372 | },
1373 | {
1374 | "cell_type": "code",
1375 | "execution_count": 48,
1376 | "metadata": {},
1377 | "outputs": [
1378 | {
1379 | "name": "stdout",
1380 | "output_type": "stream",
1381 | "text": [
1382 | "\n",
1383 | "下列各句中,没有语病的一句是:\n",
1384 | "\n",
1385 | "(A)根据本报和部分出版机构联合开展的调查显示,儿童的阅读启蒙集中在1~2岁之间,并且阅读时长是随着年龄的增长而增加的。\n",
1386 | " (B)“一带一路”建设不仅要让沿线国家分享中国发展成果、实现共同繁荣,而且也要为世界经济发展提供新动力;同时还要推动构建人类命运共同体。\n"
1387 | ]
1388 | }
1389 | ],
1390 | "source": [
1391 | "prompt = \"\"\"\n",
1392 | "下列各句中,没有语病的一句是:\n",
1393 | "\n",
1394 | "(A)根据本报和部分出版机构联合开展的调查显示,儿童的阅读启蒙集中在1~2岁之间,并且阅读时长是随着年龄的增长而增加的。\n",
1395 | "\"\"\"\n",
1396 | "\n",
1397 | "run(prompt)\n"
1398 | ]
1399 | },
1400 | {
1401 | "attachments": {},
1402 | "cell_type": "markdown",
1403 | "metadata": {},
1404 | "source": [
1405 | "### 使用Runpod 部署 text-generation-inference"
1406 | ]
1407 | },
1408 | {
1409 | "cell_type": "code",
1410 | "execution_count": 3,
1411 | "metadata": {},
1412 | "outputs": [],
1413 | "source": [
1414 | "import os, runpod\n",
1415 | "\n",
1416 | "runpod.api_key = os.environ.get(\"RUNPOD_API_KEY\")\n",
1417 | "\n",
1418 | "num_shard = 1\n",
1419 | "model_id = \"tiiuae/falcon-7b-instruct\"\n",
1420 | "quantize = \"bitsandbytes\"\n",
1421 | "\n",
1422 | "pod = runpod.create_pod(\n",
1423 | " name=\"Falcon-7B-Instruct-POD\",\n",
1424 | " image_name=\"ghcr.io/huggingface/text-generation-inference:latest\",\n",
1425 | " gpu_type_id=\"NVIDIA GeForce RTX 4080\",\n",
1426 | " cloud_type=\"COMMUNITY\",\n",
1427 | " docker_args=f\"--model-id {model_id} --num-shard {num_shard} --quantize {quantize}\",\n",
1428 | " gpu_count=num_shard,\n",
1429 | " volume_in_gb=50,\n",
1430 | " container_disk_in_gb=5,\n",
1431 | " ports=\"80/http\",\n",
1432 | " volume_mount_path=\"/data\",\n",
1433 | ")"
1434 | ]
1435 | },
1436 | {
1437 | "cell_type": "code",
1438 | "execution_count": 15,
1439 | "metadata": {},
1440 | "outputs": [
1441 | {
1442 | "name": "stdout",
1443 | "output_type": "stream",
1444 | "text": [
1445 | "\n",
1446 | "Deep learning is a branch of machine learning that uses artificial neural networks to learn from data and make predictions. It is based on the concept of hierarchical learning, where a model learns from a set of data and then applies that knowledge to new data. Deep learning has revolutionized the field of machine learning and has been used to solve complex problems such as image recognition, natural language processing, and self-driving cars.\n"
1447 | ]
1448 | }
1449 | ],
1450 | "source": [
1451 | "from text_generation import Client\n",
1452 | "\n",
1453 | "client = Client(f\"https://{pod['id']}-80.proxy.runpod.net\")\n",
1454 | "print(client.generate(\"What is Deep Learning?\", max_new_tokens=512).generated_text)"
1455 | ]
1456 | },
1457 | {
1458 | "cell_type": "code",
1459 | "execution_count": 16,
1460 | "metadata": {},
1461 | "outputs": [],
1462 | "source": [
1463 | "from langchain.llms import HuggingFaceTextGenInference\n",
1464 | "\n",
1465 | "inference_server_url_cloud = f\"https://{pod['id']}-80.proxy.runpod.net\"\n",
1466 | "\n",
1467 | "llm_cloud = HuggingFaceTextGenInference(\n",
1468 | " inference_server_url=inference_server_url_cloud,\n",
1469 | " max_new_tokens=1000,\n",
1470 | " top_k=10,\n",
1471 | " top_p=0.95,\n",
1472 | " typical_p=0.95,\n",
1473 | " temperature=0.3,\n",
1474 | " repetition_penalty=1.03,\n",
1475 | ")"
1476 | ]
1477 | },
1478 | {
1479 | "cell_type": "code",
1480 | "execution_count": 17,
1481 | "metadata": {},
1482 | "outputs": [],
1483 | "source": [
1484 | "from langchain import LLMChain\n",
1485 | "from langchain.prompts import PromptTemplate\n",
1486 | "\n",
1487 | "prompt = PromptTemplate(template=\"{question}\", input_variables=[\"question\"])\n",
1488 | "llm_chain_cloud = LLMChain(prompt=prompt, llm=llm_cloud)\n"
1489 | ]
1490 | },
1491 | {
1492 | "cell_type": "code",
1493 | "execution_count": 18,
1494 | "metadata": {},
1495 | "outputs": [
1496 | {
1497 | "data": {
1498 | "text/plain": [
1499 | "\".\\nI'm sorry, I don't understand what you're asking. Can you please provide more context or rephrase your question?\""
1500 | ]
1501 | },
1502 | "execution_count": 18,
1503 | "metadata": {},
1504 | "output_type": "execute_result"
1505 | }
1506 | ],
1507 | "source": [
1508 | "llm_chain_cloud.run({\"question\" : \"your new question to falcon\"})"
1509 | ]
1510 | },
1511 | {
1512 | "cell_type": "code",
1513 | "execution_count": null,
1514 | "metadata": {},
1515 | "outputs": [],
1516 | "source": []
1517 | }
1518 | ],
1519 | "metadata": {
1520 | "kernelspec": {
1521 | "display_name": "mactalk",
1522 | "language": "python",
1523 | "name": "python3"
1524 | },
1525 | "language_info": {
1526 | "codemirror_mode": {
1527 | "name": "ipython",
1528 | "version": 3
1529 | },
1530 | "file_extension": ".py",
1531 | "mimetype": "text/x-python",
1532 | "name": "python",
1533 | "nbconvert_exporter": "python",
1534 | "pygments_lexer": "ipython3",
1535 | "version": "3.10.11"
1536 | },
1537 | "orig_nbformat": 4
1538 | },
1539 | "nbformat": 4,
1540 | "nbformat_minor": 2
1541 | }
1542 |
--------------------------------------------------------------------------------