├── .DS_Store
├── .gitmodules
├── LICENSE
├── README.md
├── assets
├── chat-demo.png
├── first_fig.webp
├── robot.png
├── user.png
├── user_new.png
└── zbj.png
├── dataset
├── zbj.jsonl
├── 西游记原文17回后.txt
└── 西游记白话文.txt
├── gradio_demo.py
├── my_config
├── zbj_internlm2_chat_7b_qlora_oasst1_e4.py
└── zbj_llama3_1_8b_qlora_oasst1_e4.py
├── openxlab
├── app.py
├── app_mini.py
├── start.py
└── start_mini.py
├── requirements.txt
├── tools
├── .Rhistory
├── README.md
├── get_data.py
└── questions
│ └── questions.txt
└── web_demo.py
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimmyMa99/BaJie-Chat/548b998619b4019bce240986e6999247b7df7ba9/.DS_Store
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "xtuner"]
2 | path = xtuner
3 | url = git@github.com:JimmyMa99/xtuner.git
4 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # BaJie-Chat
2 |
3 |
4 |
5 |

6 |
7 |
8 |
9 |
10 |
11 | ### 项目简介
12 |
13 | 八戒-Chat是一个基于《西游记》剧本中猪八戒的台词和语句,以及使用InternLM进行QLoRA微调得到的模仿猪八戒语气的聊天语言模型。用户可以通过模型与八戒-Chat进行对话。
14 |
15 | ### 设备要求
16 |
17 | - CPU:Intel Core i5 或以上
18 | - GPU:(1/4) NVIDIA A100 或以上
19 | - 内存:32GB 或以上
20 | - 存储:至少50GB可用空间
21 |
22 | ### 最佳实践
23 |
24 |
25 | ⚙️部署BaJie-Chat到Linux环境中
26 |
27 | ```bash
28 | # git clone 本 repo 以及其submodules
29 | git clone --recurse-submodules https://github.com/JimmyMa99/BaJie-Chat.git
30 |
31 | # 进入源码目录
32 | cd xtuner
33 |
34 | # 从源码安装 XTuner
35 | pip install -e '.[all]'
36 | ```
37 |
38 | ```bash
39 | apt install git git-lfs -y
40 | git lfs install
41 | git clone https://www.modelscope.cn/Shanghai_AI_Laboratory/internlm2-7b.git
42 | ```
43 |
44 | ```bash
45 | xtuner train my_config/zbj_internlm2_chat_7b_qlora_oasst1_e4.py --deepspeed deepspeed_zero2
46 | ```
47 |
48 | ```bash
49 | xtuner convert pth_to_hf my_config/zbj_internlm2_chat_7b_qlora_oasst1_e4.py work_dirs/zbj_internlm2_chat_7b_qlora_oasst1_e4/{your checkpoint} process_data/hf_models/zbj
50 | xtuner convert merge {your model path} process_data/hf_models/zbj process_data/merged_models/zbj
51 | ```
52 |
53 | - 使用 streamlit 进行对话:修改 `web_demo.py` 中的模型路径
54 | ```diff
55 | - model = (AutoModelForCausalLM.from_pretrained('path/to/your/model',
56 | - trust_remote_code=True).to(
57 | - torch.bfloat16).cuda())
58 | - tokenizer = AutoTokenizer.from_pretrained('path/to/your/tokenizer',
59 | - trust_remote_code=True)
60 | + model = (AutoModelForCausalLM.from_pretrained('process_data/merged_models/zbj',
61 | + trust_remote_code=True).to(
62 | + torch.bfloat16).cuda())
63 | + tokenizer = AutoTokenizer.from_pretrained('process_data/merged_models/zbj',
64 | + trust_remote_code=True)
65 | ```
66 |
67 | ```bash
68 | pip install streamlit
69 | pip install transformers>=4.34
70 | streamlit run ./web_demo.py
71 | ```
72 |
73 |
74 | ### 效果展示
75 |
76 | #### 预览
77 |
78 | 
79 |
80 | #### OpenXLab 链接
81 |
82 | 🎲[在 OpenXLab 上尝试 -- InternLM2](https://openxlab.org.cn/apps/detail/JimmyMa99/BaJie-Chat)
83 |
84 | 🎲[在 OpenXLab 上尝试 -- Llama3.1](https://openxlab.org.cn/apps/detail/JimmyMa99/BaJie-Chat-llama3_1-8b)
85 |
86 | ### 数据处理
87 |
88 | 本项目采用《西游记》剧本中关于猪八戒的台词和语句作为训练数据,同时使用了InternLM进行QLoRA微调以生成更加贴合猪八戒风格的语言。
89 |
90 | 详细数据处理流程请参考以下链接:
91 |
92 | - [数据处理流程文档](https://github.com/JimmyMa99/BaJie-Chat/blob/main/tools/README.md)
93 |
94 | ### 相关拓展
95 |
96 | - [XTuner GitHub 链接](https://github.com/InternLM/xtuner)
97 | - [InternLM GitHub 链接](https://github.com/InternLM/InternLM/tree/main)
98 | - [SanZang-Chat GitHub 链接](https://github.com/JimmyMa99/SanZang-Chat)
99 |
100 | ### News
101 |
102 | [2024.7.24]:八戒-Chat-Lama3.1-8b 权重公开至[ModelScope](https://www.modelscope.cn/models/JimmyMa99/BaJie-Chat-llama3_1-8b) 部署至 [OpenXLab](https://openxlab.org.cn/apps/detail/JimmyMa99/BaJie-Chat-llama3_1-8b)
103 |
104 | [2024.2.14]:八戒-Chat 权重公开至[ModelScope](https://www.modelscope.cn/models/JimmyMa99/BaJie-Chat/summary) 部署至 [OpenXLab](https://openxlab.org.cn/apps/detail/JimmyMa99/BaJie-Chat)
105 |
106 | [2024.2.16]:八戒-Chat 添加文言文和白话文数据,重新训练并部署
107 |
108 | ### Todo
109 |
110 | - [x] qlora微调猪八戒
111 | - [x] 增添文言文和白话文数据,优化原著对话数据
112 | - [x] 全量微调猪八戒
113 | - [x] 接入lmdeploy实现openai api
114 |
115 | ### 特别鸣谢
116 |
117 | 特别感谢上海人工智能实验室的支持!
118 |
119 |
120 |
121 | 🔍 探索八戒-Chat(Internlm-chat-7b)
122 |
123 | [](https://www.modelscope.cn/models/JimmyMa99/BaJie-Chat/summary)
124 |
125 | 🔍 探索八戒-Chat(Llama3_1-8b)
126 |
127 | [](https://www.modelscope.cn/models/JimmyMa99/BaJie-Chat-llama3_1-8b/summary)
128 |
129 |
130 |
131 | 更多拓展
132 |
133 | [三藏-Chat](https://github.com/JimmyMa99/SanZang-Chat)
134 |
135 | [悟空-Chat](https://github.com/JimmyMa99/WuKong-Chat)
136 |
137 | [八戒-Chat](https://github.com/JimmyMa99/BaJie-Chat)
138 |
139 | [悟净-Chat](https://github.com/JimmyMa99/WuJing-Chat)
140 |
141 |
142 | [XTuner](https://github.com/InternLM/xtuner)
143 |
144 | [InternLM](https://github.com/InternLM/InternLM/tree/main)
145 |
--------------------------------------------------------------------------------
/assets/chat-demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimmyMa99/BaJie-Chat/548b998619b4019bce240986e6999247b7df7ba9/assets/chat-demo.png
--------------------------------------------------------------------------------
/assets/first_fig.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimmyMa99/BaJie-Chat/548b998619b4019bce240986e6999247b7df7ba9/assets/first_fig.webp
--------------------------------------------------------------------------------
/assets/robot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimmyMa99/BaJie-Chat/548b998619b4019bce240986e6999247b7df7ba9/assets/robot.png
--------------------------------------------------------------------------------
/assets/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimmyMa99/BaJie-Chat/548b998619b4019bce240986e6999247b7df7ba9/assets/user.png
--------------------------------------------------------------------------------
/assets/user_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimmyMa99/BaJie-Chat/548b998619b4019bce240986e6999247b7df7ba9/assets/user_new.png
--------------------------------------------------------------------------------
/assets/zbj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimmyMa99/BaJie-Chat/548b998619b4019bce240986e6999247b7df7ba9/assets/zbj.png
--------------------------------------------------------------------------------
/dataset/西游记白话文.txt:
--------------------------------------------------------------------------------
1 | 《西游记白话文》
2 |
3 |
4 | 第1回 惊天地美猴王出世
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 |
44 | 孙悟空既不怕,又不生气,心里反而十分高兴。当天晚上,悟空假装睡着了,可是一到半夜,就悄悄起来,从前门出去,等到三更,绕到后门口,看见门半开半闭,高兴地不得了,心想∶“哈哈,我没有猜错师父的意思。”
45 |
46 | 孙悟空走了进去,看见祖师面朝里睡着,就跪在床前说∶“师父,我跪在这里等着您呢!”祖师听见声音就起来了,盘着腿坐好后,严厉地问孙悟空来做什么,悟空说∶“师父白天当着大家的面不是答应我,让我三更时从后门进来,教我长生不老的法术吗?”
47 |
48 | 菩提祖师听到这话心里很高兴。心想∶“这个猴子果然是天地生成的,不然,怎么能猜透我的暗谜。”于是,让孙悟空跪在床前,教给他长生不老的法术。孙悟空洗耳恭听,用心理解,牢牢记住口诀,并叩头拜谢了祖师的恩情。
49 |
50 | 很快三年又过去了,祖师又教了孙悟空七十二般变化的法术和驾筋斗云的本领,学会了这个本领,一个筋斗便能翻出十万八千里路程。孙悟空是个猴子,本来就喜欢蹦蹦跳跳的,所以学起筋斗云来很容易。
51 |
52 | 有一个夏天,孙悟空和师兄们在洞门前玩耍,大家要孙悟空变个东西看看,孙悟空心里感到很高兴,得意地念起咒语,摇身一变变成了一棵大树。
53 |
54 | 师兄们见了,鼓着掌称赞他。
55 |
56 | 大家的吵闹声,让菩提祖师听到了,他拄着拐杖出来,问∶“是谁在吵闹?你们这样大吵大叫的,哪里像个出家修行的人呢?”大家都赶紧停住了笑,孙悟空也恢复了原样,给师父解释,请求原谅。
57 |
58 | 菩提祖师看见孙悟空刚刚学会了一些本领就卖弄起来,十分生气。祖师叫其他人离开,把悟空狠狠地教训了一顿,并且要把孙悟空赶走。孙悟空着急了,哀求祖师不要赶他走,祖师却不肯留下他,并要他立下誓言∶任何时候都不能说孙悟空是菩提祖师的徒弟。
59 |
60 | 第2回 闹龙宫刁石猴借宝
61 |
62 | 孙悟空见没办法留下来,就拜别了菩提祖师,又和各位师兄告别,然后念了口诀,驾着筋斗云,不到一个时辰,就回到了花果山水帘洞,看到花果山上一片荒凉破败的景象,很是凄惨。
63 |
64 | 原来孙悟空走了以后,有一个混世魔王独占了水帘洞,并且抢走了许多猴子猴孙。孙悟空听到这些以后,气得咬牙跺脚。他问清了混世魔王的住处,决定找混世魔王报仇,便驾着筋斗云,朝北方飞去。
65 |
66 | 不一会儿,孙悟空就来到混世魔王的水脏洞前,对门前的小妖喊到∶“你家那个狗屁魔王,多次欺负我们猴子。我今天来,要和那魔王比比高低!
67 |
68 | ”小妖跑进洞里,报告魔王。魔王急忙穿上铁甲,提着大刀,在小妖们的簇拥下走出洞门。
69 |
70 | 孙悟空赤手空拳,夺过了混世魔王的大刀,把他劈成了两半。然后,拔下一把毫毛咬碎喷了出去,毫毛变成许多小猴子,直杀进洞里,把所有的妖精全杀死,然后救出被抢走的小猴子,放了一把火烧了水脏洞。
71 |
72 | 孙悟空收回了毫毛,让小猴子们闭上眼睛,作起法术来,一阵狂风刮过,他们驾着狂风回到了花果山。从此,孙悟空便叫小猴们做了些竹枪和木刀,用夺来的大刀教他们武艺。没过多久,孙悟空觉得竹枪木刀不能打仗,两个猴告诉他,傲来国里肯定有好的兵器。
73 |
74 | 孙悟空驾云来到傲来国上空,念起咒语,立即天空刮起狂风,砂石乱飞,把满城的军民吓得不敢出来。他趁机跑进兵器库拔了把毫毛一吹,变成上千个小猴,乱搬乱抢,悟空见差不多了,把风向一变回了花果山。
75 |
76 | 从此以后,花果山水帘洞的名气就更大了,所有的妖怪头子,即七十二洞的洞主都来拜见孙悟空。可是,悟空却有一件事不顺心,嫌那口大刀太轻,不好用。有个通背老猿猴告诉悟空,水帘洞桥下,可直通东海龙宫,叫他去找龙王要一件得心应手的兵器。
77 |
78 | 悟空立刻来到东海龙宫,给老龙王敖广讲明了来这儿的目的。龙王不好推辞,叫虾兵们抬出一杆三千六百斤重的九股叉,悟空接过来玩了一阵,嫌它太轻。龙王又命令蟹将们抬出一柄七千二百斤重的方天画戟,悟空一见,仍然嫌它太轻。
79 |
80 | 龙王说∶“再也没有比这更重的兵器了。”悟空不信,和龙王吵了起来,龙婆给龙王说∶“大禹治水时,测定海水深浅的神珍铁最近总是放光,就把这给他,管他能不能用,打发他走算了。”龙王听后告诉悟空∶“这宝物太重了,你自己去取吧!”
81 |
82 | 孙悟空跟龙王来到海底,龙王用手一指说∶“放光的就是。”悟空见神珍铁金光四射,就走过去用手一摸,原来是根铁柱子,斗一样粗,二丈多长。孙悟空使劲用手搬了搬说∶“太长太长了,要是再短些,再细一些就好了。”
83 |
84 | 孙悟空话还没有说完,那个宝贝就短了几尺,也细了一圈。孙悟空看了看说∶“再细些就更好了。”那个宝贝真的又细了许多,悟空拿过来,见上面写着∶“如意金箍棒、重一万三千五百斤”顺手玩了一会儿,觉得十分好用。
85 |
86 | 回到水晶宫,孙悟空又要龙王送一身衣服相配。龙王实在没有,但又害怕悟空乱打乱闹,只好敲响应急的金钟,叫来南、北、西三海龙王敖钦、敖顺和敖闰,兄弟三人凑了一副黄金甲、一顶凤翅紫金冠、一双藕丝步云鞋,送给悟空。
87 |
88 | 回到花果山,悟空才发现那根金箍棒竟可以变成绣花针一样大小,藏到耳朵中。一天,他宴请所有的妖王吃饭,喝醉了,在桥边的松树下睡觉,迷迷糊糊地见两个人手里拿着写有“孙悟空”的批文,走到他身边也不说话,把他用绳索套上,拉起来就走。
89 |
90 | 悟空糊里糊涂跟他们来到一座城门外,看见城楼上有一块牌子,牌子上写着“幽冥界”三个大字,知道这里是阎王住的地方,转身就要走,两个勾魂鬼死死拉住他,非要让他进去。孙悟空一看火了,从耳朵中掏出了金箍棒,把两个勾魂鬼打成了肉酱。
91 |
92 | 他甩掉套在身上的绳套,挥着金箍棒直打到城里,又一直打到森罗殿前,十位冥王见悟空长得的十分凶恶,吓得不知道该怎么办。悟空说∶“你们既然坐在王位上,就应该有点灵气,为什么不知道我来?俺老孙已经修成仙道,能长生不老。快拿生死簿来!”十位冥王赶快叫判官拿出生死本来查。
93 |
94 | 悟空登上森罗殿,一直查到魂字一千三百五十号,才找到了自己的名字,顺手拿起笔把所有猴子的名字通通勾掉,说∶“这下好极了,好极了,今后再也不归你们管了。”说完又一路打出了幽冥界。十位冥王赶忙到翠云宫去见地藏王菩萨,商量如何向玉皇大帝报告。
95 |
96 | 第3回 齐天大圣大闹天宫
97 |
98 | 冥司阎王和龙王先后都来找玉皇大帝,状告孙悟空大闹龙宫和地府。玉皇大帝正要派天兵、天将到人间去收伏孙悟空。这时,太白金星走了出来,给玉帝出了个主意,说不如随便给他一个官职,把他困在天上,玉帝同意了,命文曲星写了一封诏书,叫太白金星请悟空上天。
99 |
100 | 太白金星遵命来到花果山,宣读圣旨。孙悟空听了十分高兴,就命令猴子们看家,自己跟着太白金星驾着云来到灵霄殿上。太白金星向玉帝行了礼,说∶“悟空来了。”玉帝问∶“谁是悟空?”悟空听了,既不行礼,也不跪拜,随便答应了一声∶“我就是。”其他神仙见悟空没有礼貌都非常生气。
101 |
102 | 玉帝对悟空没有办法,听了武曲星君的建议让悟空给玉帝看马。这个官职在天上是最小的,过了半个月悟空才知道。一气之下,便拿出金箍棒,杀出南天门,回到花果山,自封“齐天大圣”。又做了一面大旗,插在花果山上。
103 |
104 | 玉帝听说孙悟空又回到花果山,马上命令托塔李天王和三太子哪吒,带兵去捉拿悟空。没想到先锋官巨灵神和悟空没打几个回合,宣花斧就成了两截。哪吒一见气得头发都竖了起来,大喊一声,变成三头六臂,拿着六件兵器和悟空打了起来。
105 |
106 | 悟空也不示弱,摇身一变,也变成三头六臂,拿着三根金箍棒跟哪吒打了好长时间,仍不分胜负。悟空偷偷拔下一根毫毛变成自己,跟哪吒打,真身却绕到哪吒身后,举起棒子就打。哪吒躲闪不及,被打中左臂,痛得也顾不上还手,转身就跑。
107 |
108 | 玉帝听了这些十分生气,准备多派些兵将,再去和孙悟空打。这时太白金星又出了个主意说∶“不如封孙悟空一个有名无权的齐天大圣,什么事也不让他管,只把他留在天上,免得再派人去打,伤了兵将。”玉帝听了觉得有理,于是派太白金星去讲和。
109 |
110 | 悟空听说后,十分高兴,跟太白金星又一次来到天宫。玉帝马上让人在蟠桃园右侧为孙悟空修了一座齐天大圣府。孙悟空到底是个猴子,只知道名声好听,也不问有没有实权,整天和天神们以兄弟相称,在府内吃喝玩乐,今天东游游,明天西转转,自由自在。
111 |
112 | 时间长了,玉帝怕悟空闲着没事添麻烦,就让他去管蟠桃园。这桃园前、中、后各有桃树一千二百棵。前面的树三千年结果成熟,吃了可以成仙;中间的树六千年结果成熟,吃了能长生不老;后面的树九千年结果成熟,吃了以后可以跟日月同辉,天地齐寿。
113 |
114 | 一天,他见园中的桃子大部分都熟了,就想尝个新鲜,便偷偷地跑进园子去,脱了衣服,爬上大树,挑熟透的大桃吃了个饱。从此以后,每隔两三天,他就设法偷吃一次桃。每年一次的蟠桃会到了,一天,七位仙女奉王母娘娘之命进园摘桃。
115 |
116 | 恰巧这时孙悟空把桃吃饱了,感到有点困,就变成二寸来长的小人,在大树梢上,找个凉快的地方睡着了。七位仙女见园中的熟桃不多,便四处寻找,找了好长的一段时间,最后在一棵大树梢上发现有个熟透的桃,就把树梢扯下来。
117 |
118 | 没想到悟空正好睡在这棵树上,被惊醒了,变回原来的样子。他拿出金箍棒叫了声∶“谁敢偷桃?”吓得七位仙女一齐跪下,说明了来这的原因。
119 |
120 | 悟空问蟠桃会请了什么人,当他知道没有自己时,十分生气。
121 |
122 | 他用定身法把七位仙女定住,然后驾着云来到瑶池。这时赶来赴宴的众仙还没有到,只有佣人在摆设宴席,于是悟空拔了根毫毛,变成瞌睡虫,放到佣人脸上。这些人立刻呼呼大睡,他跳到桌上,端起美酒,开怀痛饮。
123 |
124 | 他吃饱喝足后才走出瑶池,迷迷糊糊地走到太上老君的兜率宫里,刚好宫里没有人就把五个葫芦里的金丹全部倒出来吃了,吃完这才想到闯了大祸,可能保不住性命。于是又回到瑶池,偷了几罐好酒,回花果山去了。
125 |
126 | 玉帝听到报告,大发脾气,命令李天王和哪吒太子率领十万天兵天将,布下十八层天罗地网,一定要捉拿悟空回来。但是天兵天将都不是悟空的对手,一个个都败下来。于是观音菩萨就建议让灌江口的显圣二郎神到花果山来捉拿孙悟空。
127 |
128 | 二郎神奉命,带领梅山六兄弟,点了些精兵良将,杀向花果山。他请李天王举着照妖镜站在空中,对着悟空照,自己到水帘洞前挑战。悟空出洞迎战,与二郎神打得难分难解。梅山六兄弟见悟空这时顾不上他们,就乘机杀进了水帘洞。
129 |
130 | 悟空见自己的老窝被破坏了,心里一慌,变成麻雀想跑,二郎神摇身变成了捉麻雀的鹰,抖抖翅膀就去啄麻雀;悟空急忙又变成一只大鹚鸟,冲向天空,二郎神急忙变成了一只大海鹤,钻进云里去扑;悟空一见嗖地一声飞到水里,变成一条鱼。
131 |
132 | 二郎神从照妖镜里看见了悟空,就变成鱼鹰,在水面上等着,悟空见了,急忙变条水蛇,窜到岸边,接着又变成花鸨,立在芦苇上。二郎神见他变的太低贱,也不去理他,变回原来的样子,取出弹弓,朝着花鸨就打,把悟空打得站立不稳。
133 |
134 | 悟空趁机滚下山坡,变成一座土地庙,二郎神追过来,见有个旗杆立在庙的后面,就知道是悟空变的,拿起兵器就朝门砸过去,悟空见被看出来了,往上一跳,变回原样就跑,二郎神驾着云追了过去。两个人一边走一边打,又来到花果山跟前。
135 |
136 | 各路的天兵神将一拥而上,把悟空团团围住,在南天门观战的太上老君趁机把金钢琢朝悟空扔过去,悟空被打中头部,摔了一跤。二郎神的哮天犬跑上去,咬住了悟空,其他天神则扑上去把悟空按住,用铁链穿住琵琶骨捆了回去。
137 |
138 | 孙悟空被绑在斩妖台上,但不论用刀砍斧剁,还是用雷打火烧,都不能伤他一根毫毛。太上老君启奏玉帝,把悟空放到八卦炉里熔炼,玉帝准奏。
139 |
140 | 于是,悟空被带到兜率宫,众神仙把他推进八卦炉里,烧火的童子用扇子使劲扇火。
141 |
142 | 悟空在炉中跳来跳去,偶然中跳到巽宫的位置,这里只有烟没有火,熏得很厉害,就弯下身子蹲在里面。四十九天过去了,太上老君下令打开炉门,悟空忽然听到炉顶有响声,抬头看见一道光,用力一跳,跳出炼丹炉,踢倒炉子,转身就跑。
143 |
144 | 孙悟空不但没有被熔化,反而炼就了一双火眼金睛。他从耳朵中掏出金箍棒,迎风一晃,变成碗口那么粗。悟空抡起如意棒,一路指东打西,直打到灵霄殿上,大声叫喊着∶“皇帝轮流做,玉帝老头,你快搬出去,把天宫让给我,要不,就给你点厉害看看!”
145 |
146 | 幸好有三十六员雷将,二十八座星宿赶来保护,玉帝才能脱身。玉帝立即派人去西天请如来佛祖。如来一听,带着阿傩、伽叶两位尊者,来到灵霄殿外,命令停止打斗,叫悟空出来,看看他有什么本事。悟空怒气冲冲地看着如来,根本就不把如来放在眼里。
147 |
148 | 如来佛祖伸开手掌说∶“如果你有本领一筋斗翻出我的手掌,我就劝玉帝到西方去,把位子让给你。”悟空一听不知道是计,心里还挺高兴,就把金箍棒放在耳朵里,轻轻一跳,站在如来佛的手心中,喊到∶“我去了!”
149 |
150 | 一个筋斗,无影无踪。
151 |
152 | 悟空驾着云飞一样地往前赶,忽然见前面有五根肉红色的柱子,想这肯定是天边了,柱子一定是撑天用的,这才停下来。他害怕回去见如来没有凭证,就拔下一根毫毛,变成一支笔,在中间的一根柱子上写下“齐天大圣到此一游”八个大字。
153 |
154 | 写完收了毫毛,又跑到第一个柱子下撒了一泡猴尿,然后又驾起筋斗云,回到如来佛祖手掌里说∶“如果你说话算数,就快叫玉帝让位子吧!”如来佛却说孙悟空根本没有离开他的掌心。悟空不服,要如来去看看他在天边留下的证据。
155 |
156 | 如来佛不去,他让悟空看看他右手的中指,再闻闻大拇指根。悟空睁大火眼金睛,只见佛祖右手中指上有他写的那八个大字,大拇指丫里还有些猴尿的臊气。悟空吃惊地说∶“我不信,我一点也不信,我把字写在撑天的柱子上,怎么却在你手上?等我去看看再说。”
157 |
158 | 悟空转身想跑,如来佛眼疾手快,反手一扑,把悟空推出西天门外,又把手的五指分别化作金、木、水、火、土五座联山,给这座联山起名叫“五行山”,将悟空牢牢压在山下。天上的各位神仙和阿傩、伽叶一个个合掌称好。
159 |
160 | 玉帝见如来佛祖镇压了孙悟空,心里十分高兴,立即传令设下“安天大会”感谢佛祖。不一会,各路神仙都被请来了,玉帝又命令打开太玄宫、洞阳玉馆,请如来佛坐在七宝灵台上,各路神仙纷纷送来贺礼,如来佛命阿傩、伽叶将礼物一一收下。
161 |
162 | 就在众位神仙饮酒听歌的时候,巡查官回来报告∶“那个妖猴把头伸出来了!”佛祖一听,就从袖子里取出一张帖子,上面写着∶“、嘛、呢、叭、、”,叫阿傩、伽叶拿去贴在五行山顶的一块方石头上,那座山的缝立刻合住,孙悟空再也没有办法出来了。
163 |
164 | 如来佛祖回西天时,路过五行山,又发了慈悲心,叫来山神,让他和五方揭谛住在这座山上,监押悟空,并对他们说∶“如果他饿了,就给他吃些铁丸子,渴了,就把溶化的铜水给他喝。五百年以后,他刑期满了,自然会有人来救他。”
165 |
166 | 第4回 五行山从师取真经
167 |
168 | 五百年以后,观音菩萨奉了如来佛的法旨,带着锦袈裟等五件宝贝,跟惠岸行者一块儿来到东土大唐,寻找去西天求取三藏真经的人。师徒二人在半空中驾着云,来到大唐京城长安的上空。这时已是贞观十三年。
169 |
170 | 这一天,正是唐太宗李世民命令高僧陈玄奘在化生寺设坛宣讲佛法的日子。陈玄奘是如来佛二弟子金蝉子转世的,观音暗中选定他为取经人,自己与惠岸行者变成了游方和尚,捧着袈裟等宝贝到皇宫门外,要求拜见唐太宗,给他献宝。
171 |
172 | 唐太宗一向喜欢佛经,立即叫他们上殿,问那些宝贝一共要多少钱。观音说∶“如来佛祖那儿有三藏真经,你如果派陈玄奘去西天求取真经,这些宝贝就送给你了。”说完,跟惠岸行者变成原来的样子,驾起云走了。太宗一见是观音菩萨,连忙带领满朝文武官员向天朝拜。
173 |
174 | 唐太宗十分高兴,和陈玄奘结成了兄弟,要他去西天取经,将护身袈裟等宝物送给了他,并将他的名字改为“唐三藏”。过了几天,三藏要出发了,唐太宗便率领文武百官一路送到长安城外,和三藏依依惜别。
175 |
176 | 唐三藏别名唐僧。他和两个仆人赶了两天路,来到法门寺,寺里的和尚赶忙出来迎接。晚上,和尚们坐在一起议论去西天取经的路途艰险,唐僧用手指着心口说∶“只要有坚定的信念,那么任何危险都算不了什么!”和尚们连声称赞。
177 |
178 | 第二天,唐僧主仆含泪辞别了和尚,又骑着马继续向西走去。不几天,就来到了大唐的边界河州,镇边总兵和本地的和尚道士把唐僧主仆接到福原寺休息。
179 |
180 | 第二天天还没亮,唐僧就把两个仆人叫了起来,三人借着月光赶路。走了十几里就开始上山了,道路起伏不平,杂草丛生,十分难走。他们只好一边拔草一边走。忽然一脚踏空,三人和马还一起摔进了深坑。主仆三人正在惊慌之时,忽然听见“抓起来!抓起来!”的叫喊声。
181 |
182 | 随着一阵狂风,出现了一群妖怪,抓住了主仆三人。唐僧偷偷看了看,上面坐着一个长相凶恶的魔王,那魔王一声令下,妖怪们把唐僧主仆绑了起来。这时一个小妖来报∶“熊山君和特处士到!”
183 |
184 | 魔王赶忙出去迎接,那两人称魔王为寅将军。寅将军打算用唐僧等人招待他的客人。熊山君说∶“今天,就选吃两个算了。”于是,寅将军把唐僧的两个仆人剖腹挖心,活活地吃掉了。唐僧差点被吓昏过去。
185 |
186 | 天快亮了,妖怪们都躲了起来。唐僧吓傻了,昏昏沉沉地睡着。忽然一个柱拐杖的老人慢慢向他走来,把手一挥,捆绑唐僧的绳子都断了,又向他吹一口气,唐僧醒了过来,连忙躬身施礼感谢老人,老人说∶“这个地方叫双叉岭,是个危险的地方。”
187 |
188 | 老人让唐僧拿上包袱,牵着马,把他领到大路上来。唐僧连忙拴好马,准备感谢,抬头一看,老人已乘着一只红顶白鹤飞走了,从空中掉下一张纸条,唐僧接过一看,才知老人就是太白金星,于是赶忙向空中不停地施礼。
189 |
190 | 唐僧骑着马,沿着山路往前走,走了半天,也不见一个人。他又渴又饿,想找点水喝。忽然看见前面有两只凶恶的老虎,张开了血盆大嘴,又往四周看看,发现身后是吐着红信的毒蛇,左边是有毒的虫子,右边又是些从未见过的野兽。唐僧被困在中间,急得不知如何是好,只好听天由命了。
191 |
192 | 就在这危急关头,野兽忽然都逃跑了。唐僧惊奇地四处观看,只见一个手拿钢叉,腰挂弓箭的大汉从山坡上走了过来。唐僧连忙跪下,合掌高叫∶“大王救命!”那大汉挽起唐僧说∶“我哪里是什么大王,只不过是一个猎户,叫刘伯钦。”
193 |
194 | 刘伯钦请唐僧到家中作客,唐僧非常高兴,牵着马,来到了刘伯钦的家。第二天,唐僧要上路了,刘伯钦按照母亲的意思,带了几个人,拿着捕猎的工具,要送一送唐僧。走了半天,他们来到一座大山前。
195 |
196 | 他们走到半山腰,刘伯钦等人站住说∶“长老,前面就要到两界山了,山东边归大唐管,山西边是鞑靼的疆域,我们是不能过去的,您自己走吧,一路上可要多多小心啊!”唐僧只好和他们道别,忽听山脚下有人大喊∶“师父快过来,师父快过来!”
197 |
198 | 唐僧吓得胆战心惊。刘伯钦赶忙说∶“长老莫怕,听老人说,当年王莽造反的时候,这座山从天而降,山下还压着一个饿不死,冻不坏的神猴,刚才肯定是那个神猴在叫喊,长老不妨过去看看。”
199 |
200 | 这神猴正是当年被如来压在山下的孙悟空,他一见唐僧就喊道∶“师父快救我出去,我保护你到西天取经。几天前观音菩萨来劝过我,让我给您当徒弟。”唐僧听了非常高兴,可是又很发愁,没有办法把孙悟空救出来。
201 |
202 | 孙悟空说只要把山顶上如来佛的金字压帖拿掉就行了。唐僧拿掉了金字压帖后,按照悟空的要求和刘伯钦等人退到十里之外的地方等着。忽然一声天崩地裂般的巨响,五行山裂成两半,顿时飞沙走石,满天灰尘,让人睁不开眼睛。
203 |
204 | 等到唐僧睁开眼睛时,悟空已经跪在地上,给他叩头。唐僧见他赤身裸体,就从包袱里拿出一双鞋和一条裤子让他穿上。刘伯钦见唐僧收了徒弟,非常高兴,告别了唐僧师徒回家去了。悟空立刻收拾行李,和师父一道出发。
205 |
206 | 没过多久,师徒二人出了大唐边界。忽然从草丛中跳出一只大老虎。孙悟空赶忙放下行李,从耳朵中取出金箍棒,高兴地说∶“老孙已经五百多年没有用过这宝贝了,今天用它弄件衣服穿穿!”说完抡起金箍棒对着老虎狠命一击,老虎当场就死了。
207 |
208 | 唐僧见了,惊得连嘴都合不住。悟空拔了根毫毛,变成一把尖刀,剥了虎皮,做了条皮裙围在腰间,然后,恭恭敬敬地扶唐僧上马,师徒继续赶路。忽然一声口哨声,跳出六个强盗,要抢他们的马和行李。
209 |
210 | 悟空放下行李,笑着说∶“我原来也是做山大王的,把你们抢的金银珠宝分我一半吧!”强盗们一听,气得头发都竖了起来,拿着刀枪就往悟空头上砍,可是乒乒乓乓砍了七、八十下,也没伤着悟空半根毫毛。
211 |
212 | 悟空见他们打累了,高喊一声∶“该俺老孙玩玩了!”他取出金箍棒一个个打,六个强盗就变成了肉酱。唐僧见了很不高兴地说∶“他们虽然是强盗,但也不至于都要打死,你这样残忍,怎能去西天取经呢?阿弥陀佛。”
213 |
214 | 孙悟空最受不了别人的气,他听师父这样一说,压不住心中的怒火,高声说到∶“既然师父这样说,那我就不去西天取经了,你自己去吧!老孙我可要回花果山了!”说完纵身一跳,驾上筋斗云,往东飞去了,等到唐僧抬起头,已经看不见孙悟空了。
215 |
216 | 唐僧没有办法,只好把行李放在马背上,一手拄着锡杖,一手牵着马,慢慢地往西走去,不久,就见对面来了位老妇人,手里捧着一件衣服和一顶花帽。唐僧赶忙牵住马,双手合掌,让路给老妇人过。
217 |
218 | 那老妇人走到唐僧跟前说道∶“你从哪里来呀,怎么一个人在山中走呢?”唐僧就把悟空不听话的事告诉了老妇人,老妇人听后微微一笑,说∶“我送你一件衣服和一顶花帽,给你那不听话的徒弟穿上吧!”
219 |
220 | 唐僧苦笑着说∶“唉,徒弟已经走了!要这些还有什么用呢?”老妇人笑着说∶“别急,徒弟我会帮你找回来的。我这儿呀,还有一篇咒语,叫做紧箍咒,你要牢牢记在心里,你让你的徒弟穿上这衣服,戴上帽子,他如果再不听话,你就念咒,他就不敢不听了!”
221 |
222 | 唐僧学会了紧箍咒,低头拜谢老妇人。这时老妇人已经变成一道金光,向东飞去。唐僧抬头一看,原来是观音菩萨,赶忙跪下叩头,然后把衣帽收到包袱里,坐在路边,加紧背诵紧箍咒,直到背得滚瓜烂熟。
223 |
224 | 观音菩萨驾着祥云,没走多远,碰上了从东边走过来的孙悟空。原来悟空离开唐僧之后,在东海龙王那儿吃了顿饭,在龙王的苦苦劝告之下,已回心转意。观音菩萨让他赶快回到唐僧身边,悟空二话不说,告别观音菩萨去追赶唐僧了。
225 |
226 | 见到唐僧,悟空把去龙王那儿吃饭的事情说了一遍,又问∶“师父,你也饿了吧!我去化些斋饭来。”唐僧摇摇头说∶“不用了,包袱里还有些干粮,你给师父拿来吧!”悟空打开包袱,发现观音菩萨给的衣帽十分漂亮,便向唐僧讨取。
227 |
228 | 唐僧点头答应了。悟空高兴得抓耳挠腮,忙穿上了衣服,戴上了帽子。
229 |
230 | 唐僧要试试紧箍咒灵不灵,就小声念了起来,悟空马上痛得满地打滚,拼命去扯那帽子,可帽子却像长在肉里一样,取也取不下来,扯也扯不烂。
231 |
232 | 悟空发现头痛是因为师父在念咒,嘴里喊着“师父别念了!别念了!”
233 |
234 | 暗地里取出金箍棒,想把唐僧一棒打死。唐僧见了,紧箍咒越念越快,悟空的头越来越疼,没有办法,只好跪地求饶∶“师父,是我错了,徒儿知道错了,不要再念咒了吧!”
235 |
236 | 唐僧见他已经知错,就住了口。悟空的头马上就不痛了,他想这咒语一定是观音菩萨教的,就吵着要去南海找观音菩萨算帐。唐僧说∶“她既然能教我这紧箍咒,肯定也会念咒!”悟空猛吸了一口气,不再胡来,发誓以后一定听师父的话,保护唐僧西天取经。
237 |
238 | 第5回 应愁涧白龙马收缰
239 |
240 | 师徒俩继续向西行。一天,他们来到蛇盘山鹰愁涧,突然从涧中钻出一条白龙来,张着爪子向唐僧冲了过来,悟空慌忙背起唐僧,驾云就跑。那龙追不上悟空,就张开大嘴把白马给吞吃了,然后又钻进深涧了。
241 |
242 | 悟空把师父安顿在一个安全地方。转身回到涧边去牵马拿行李,发现马不见了,想着一定是被白龙吃了,就在涧边破口大骂∶“烂泥鳅,把我的马吐出来!”白龙听见有人骂他,气得眼睛都红了,跳出水面,张牙舞爪地向悟空扑来。
243 |
244 | 那龙根本不是悟空的对手,几个回合就累得浑身是汗,转身就逃到水里。悟空又骂了一阵,不见白龙出来,便使了个翻江倒海的本领,把这个清澈的涧水弄得泥沙翻滚,浑浊不清。
245 |
246 | 那龙在水里待不住了,就硬着头皮跳出来,和悟空打了起来,双方战了几十个回合,白龙实在打不过,摇身变成一条水蛇,钻进了草丛。悟空赶忙追过去,可是连蛇的影子都找不到,气得他把牙咬得乱响。
247 |
248 | 于是,悟空念咒语,把山神和土地都叫了出来,问他们白龙从哪里来的。山神和土地小心翼翼地说∶“这白龙是观音菩萨放在这儿等候你们,和你们一起取经的。”悟空一听,气得要找观音菩萨讲道理。
249 |
250 | 观音菩萨料事如神,驾云来到鹰愁涧,告诉悟空∶“这白龙原是西海龙王的儿子,犯了死罪,是我讲了个人情,让他给唐僧当马骑的。如果没这匹龙马,你们就去不了西天。”悟空急着说∶“他藏在水里不出来,怎么办?
251 |
252 | ”
253 |
254 | 观音菩萨面带微笑,朝涧中喊了一声,那白龙立刻变成一个英俊的公子,来到菩萨跟前。菩萨说∶“小白龙,你师父已经来了!”边说边解下白龙脖上的夜明珠,用柳条蘸些甘露向他身上一挥,吹了口仙气,喊声“变”,白龙就变成了一匹白马。
255 |
256 | 观音菩萨叫悟空牵着白马去见唐僧,自己回南海落伽山去了。悟空牵着马,兴高采烈地来到唐僧跟前。唐僧一边用手摸着马头,一边说∶“好马,好马,你是在哪儿找的马?”悟空把经过说了一遍,唐僧连忙向南磕头,感谢观音菩萨。
257 |
258 | 第6回 观音院斗宝失袈裟
259 |
260 | 唐僧骑上白龙马,走起路来就轻松了许多。一天傍晚,师徒二人来到山谷里的一座观音院。门口的和尚一听是大唐来的高僧,要到西天去取经,连忙施礼,恭恭敬敬地请他们进院子休息。
261 |
262 | 唐僧师徒刚刚坐好,两名小和尚搀扶着一个驼背的和尚,慢慢地走了进来。唐僧连忙起身,双手合掌,施礼相迎。老和尚一边还礼,一边叫人端茶来。不一会儿,两个小童端着精美的茶具进来了。
263 |
264 | 唐僧喝了一口茶,夸了几句这茶具。老和尚很高兴,然后卖弄地讲起了茶经,接着又问唐僧有什么东土大唐带来的宝贝,拿出来看一看。悟空见老和尚这般卖弄,心中早有一百个不服气了,不等师父说话,便抢着说∶“师父,把你的袈裟让他们见识见识!”
265 |
266 | 老和尚一听袈裟,更是得意,大笑起来,让人拿出十二只箱子,将里面的袈裟全部抖了出来,竟有上百件,而且每一件都很漂亮。悟空见了,也不言语,拿出了唐僧的袈裟抖开,顿时满屋金光四射,让人睁不开眼睛。
267 |
268 | 老和尚看呆了,一条毒计爬上心头,找了个借口,请求唐僧把袈裟借给他仔细看上一晚,明早奉还。唐僧还未开口,悟空抢先说∶“就借给他看一晚吧!不会有事的!”唐僧想要阻止已经来不及了,只好很不情愿地把袈裟借给老和尚。
269 |
270 | 晚上,老和尚偷偷让小和尚搬来许多木柴,想把唐僧师徒烧死。悟空听到院子里很吵,觉得奇怪,害怕师父被惊醒,就变成一个小蜜蜂,飞到院中,看到眼前的情景,觉得很可笑,眼珠一转,想出了一条妙计。
271 |
272 | 悟空驾起筋斗云,来到南天门,守门的天兵天将见是大闹天宫的齐天大圣来了,吓得乱成一团。悟空高叫∶“别怕!别怕!我不是来打架的,是来找广目天王借避火罩,去救师父的!”广目天王只好将宝贝借给悟空。
273 |
274 | 悟空拿着避火罩回到观音院,把师父的禅房罩住,然后悠闲地坐在屋顶,看和尚们放火。刹那间,大火熊熊燃烧。悟空想,这些和尚也太狠了,就吹了一口气,立刻刮起一阵狂风,火借风势,整个观音院顿时变成了一片火海。
275 |
276 | 这场大火引来了一个妖怪。原来这座观音院的南面有座黑风山,山中黑风洞里住着一个黑风怪。他远远地看见寺庙起火,就想着趁火打劫偷点东西,于是驾云飘进方丈房中,看见桌上的包袱放出金光,打开一看,竟是件价值连城的袈裟。
277 |
278 | 黑风怪偷了那件袈裟,驾云回到洞中。悟空只管坐在屋顶吹火,却没注意到黑风怪。天快亮时,悟空见火已经快灭了,才收起避火罩,还给了广目天王。回到禅房,见师父还在熟睡,就轻轻地叫醒了师父。
279 |
280 | 唐僧打开房门,见院中四处都是乌黑烧焦的木头,好端端的观音院已经不存在了,感到非常吃惊,悟空就把昨晚发生的事说了一遍。唐僧心中想着袈裟,就和悟空一块去找,寺里的和尚看见他们,还以为是冤魂来了,吓得连连跪地求饶。
281 |
282 | 那驼背老和尚看见寺院被烧,又不见了袈裟,正生气,又听唐僧没有烧死,来取袈裟了,吓得不知怎么办才好。最后一狠心,一头往墙上撞去,顿时血流如注,当场就死了。唐僧知道后,埋怨悟空说“唉!徒儿,你何苦要和别人斗气比阔呢?现在可怎么办呀!”
283 |
284 | 悟空手拿金箍棒,追问那些和尚袈裟在哪里,和尚都说不知道。悟空想了又想问道∶“这附近可有妖怪?”和尚都说黑风山上有个黑风怪。悟空板着脸说∶“好好侍候我师父,如有不周,小心脑袋!”说着一棒打断了一堵墙。
285 |
286 | 悟空一个筋斗来到黑风山,按落云头,往林中走去。忽听坡前有人在说笑,悟空侧身躲在岩石后面,偷偷望去,见地上坐着三个妖魔,为首的一个黑脸大汉说∶“昨天晚上有缘得到了一件佛衣,特地请二位来,开个佛衣盛会!”
287 |
288 | 悟空听得一清二楚,一边骂着∶“偷东西的坏家伙!”一边跳上前去,“呼”的就是一捧。黑脸大汉就是黑风怪,变成一股风逃走了;还有个道士也跑了,只有那个白衣秀才没来得及逃走,被悟空一棒打死,现出原形,原来是条大白花蛇。
289 |
290 | 悟空紧跟那股风来到一座山峰上,远远地看见对面山崖上有一座洞府,门前有一石碑,上面写着∶“黑风山黑风洞”几个大字。悟空来到洞前,用棒子敲着门,高声叫到∶“坏家伙,还我袈裟来!”小妖怪看到悟空气势汹汹,连忙跑进去报告黑风怪。
291 |
292 | 黑风怪刚才在山坡逃走是因为没带武器,现在是在他的地盘上,他可不怕。他穿上乌金甲,提着黑缨枪,出洞和悟空打了起来。打到中午,黑风怪说要吃饭,饭后再打。悟空也不说话,只是打,黑风怪只得再变成一股清风逃回洞中。
293 |
294 | 不管悟空在洞外骂得有多难听,黑风怪就是不出来。悟空急得没有办法,只得先回观音院去看师父了。回到院中,随便吃了些东西,又驾云来到黑风山,看见一个小妖拿着一个装请柬的木匣急急忙忙向前走,就一棒把它打死了。
295 |
296 | 悟空打开木匣一看,里面装的竟是黑风怪邀请观音院那老和尚的请柬,这才明白,老和尚早就和妖怪有来往,悟空眼珠一转,心生一条妙计,马上变成了老和尚的模样,摇摇摆摆地走到洞口,小妖一见是熟人,连忙开门相迎。
297 |
298 | 黑风怪没有看出什么破绽,扶着老和尚走进中厅,还没说几句话,在外面巡逻的小妖进来报告说送信的小妖已经被打死了。黑风怪立刻就明白了是怎么回事,拿出枪来狠狠刺向悟空,悟空侧身躲开,嘿嘿笑了几声,露出了本来面目,和妖怪打了起来。
299 |
300 | 两人你一枪,我一棒,打得难分难解,一直到太阳落山。那妖怪说∶“现在天快要黑了,明天再和你打!”悟空知道这家伙又要逃跑,哪肯放过,当头一棒打去,那妖怪化作一股清风,溜回洞中去了。
301 |
302 | 悟空没有办法,只好回到观音院。唐僧看到袈裟还没有夺回来,心中非常着急。晚上怎么也睡不着。第二天天刚亮,悟空对唐僧说∶“师父请放心,老孙今天要是夺不回袈裟,就不回来见你!”原来他已决定找观音菩萨想办法。
303 |
304 | 悟空驾云来到南海落伽山,见到观音菩萨,上前深深鞠了一躬,说明来意。观音菩萨听后叹了口气说∶“你这猴子,不该当众卖弄宝衣,更不该放火烧了寺院弄成现在这个样子。”说完,嘱咐了童子几句,和悟空驾着云,飞往黑风山。
305 |
306 | 他们很快来到黑风山,远远看见那天在山坡前的道士端着玉盘走了过来。悟空上前一棒打死了道士,现出了原形,原来是只大灰狼。悟空捡起盘子,看见里面有两粒仙丹,原来他是去参加佛衣盛会的。
307 |
308 | 悟空灵机一动,想出一条妙计,他让观音菩萨变成那道士,自己则变成一颗仙丹,只不过比原来的大一些。观音菩萨把他放在盘中,向洞中走去,按悟空说的计策,要让黑风怪吃下那颗仙丹。
309 |
310 | 观音菩萨来到洞中,把仙丹送到黑风怪手中,说∶“小道献上一颗仙丹,祝大王健康长寿!”黑风怪十分高兴,接过仙丹刚送到嘴边,没想到仙丹自动滑了下去。
311 |
312 | 悟空一到黑风怪的肚子里,就恢复了原形,在里面打起了猴拳,黑风怪痛得在地上直打滚。观音菩萨也恢复了原形,命令他交出佛衣,黑风怪痛得受不了了,让小妖拿来袈裟。观音菩萨接过佛衣,拿出一个小金圈儿,套在黑风怪头上。
313 |
314 | 观音这才让悟空出来。悟空刚从黑风怪的鼻孔里跳出来,黑风怪就摆出一副凶相,拿着黑缨枪向观音刺去。观音浮在空中,念动咒语,黑风怪马上头痛了起来,只好跪在地上,求观音饶命,并说自己愿意出家。
315 |
316 | 观音菩萨把佛衣交给悟空,带着黑风怪回南海去了。悟空见黑风洞中的小妖早已逃离,就放了一把火把洞烧了,然后驾云赶回观音院。唐僧和寺里的和尚们看见悟空取回了袈裟,都很高兴。第二天,唐僧师徒离开了观音院,又向西出发
317 |
318 | 第7回 高老庄唐僧收八戒
319 |
320 | 这一天天快黑了,他们来到一个叫做高老庄的村子。碰巧,庄主高太公正在到处寻找能捉妖怪的法师。悟空一听非常高兴地说∶“不用找了,我就是专门捉妖怪的。”
321 |
322 | 原来,高太公有三个女儿,前两个女儿已经出嫁,到了三女儿,就想找个上门女婿来支撑门户。三年前来了个又黑又壮的青年,自称是福陵山人,姓猪,想到高家当女婿。三女儿对他还算满意,高太公就让他们成了家。
323 |
324 | 开始这个女婿很勤快,耕田下地,收割粮食,样样都行。没想到过了一阵,他突然变成一个猪头猪脑的妖怪,一顿饭要吃三五斗米,来去都腾云驾雾。这半年来,竟然把三女儿锁在后院,不让人进去。
325 |
326 | 悟空听了高太公的话,拍拍胸脯说∶“这个妖怪我捉定了,今天晚上就让他写退婚书,永远不再碰你女儿。”高太公问他要几个帮手,悟空说∶“一个也不要,只要把我师父照顾好就行了。”高太公连忙照办。
327 |
328 | 安顿好了师父,悟空让高太公带路来到后院。他打掉铁锁,走进院中一间黑洞洞的屋子。高太公和女儿见面,忍不住抱在一起痛哭起来。三女儿告诉他们∶“那妖怪知道我爹要请法师捉拿他,每天天一亮就走,晚上才回来。”
329 |
330 | 悟空让高太公父女离开,自己变成三女儿的模样。没过多久,院外一阵狂风刮来,那妖怪出现在半空中。悟空连忙向床上一靠,装出有病的样子,那妖怪摸进房中,口中喊着∶“姐姐,姐姐,你在哪儿呀?”
331 |
332 | 悟空故意叹口气说∶“我听爹今天在外面骂你,还说请了法师来抓你!
333 |
334 | ”那妖怪说∶“不怕,不怕,咱们上床睡吧!”悟空说∶“我爹请的可是那五百年前大闹天宫的齐天大圣,你不害怕吗?”那妖怪倒吸了口凉气说∶“咱们做不成夫妻了。”
335 |
336 | 猪精打开门就往外跑,悟空从后面一把扯住他的后领子,把脸一抹,现出原形大叫道∶“泼怪,你看我是谁?”那妖怪一见是悟空,吓得手脚发麻,“呼”地一下化成一阵狂风跑了。
337 |
338 | 悟空跟着这股妖风一路追到高山上,只见那股妖风钻进了一个洞里。悟空刚落下云头,那妖怪已现形从洞中出来了,手里拿着一柄九齿钉耙骂道∶“你这个弼马温!当年大闹天宫,不知连累了我们多少人。今天又来欺负我,让你尝尝我的厉害,看耙!”
339 |
340 | 悟空举起棒架住了钉耙,问∶“怎么,你认识俺老孙!”那妖怪说出了自己的来历∶原来他是天上的天蓬元师,在王母娘娘的蟠桃会上喝得酩酊大醉,闯进了广寒宫,见嫦娥长得十分美丽,就上去调戏嫦娥。
341 |
342 | 玉皇大帝知道这件事后,要根据天条将他处死。多亏太白金星求情,才保住了性命,但要重打二千铜锤,并打入凡间投胎。没想到他急于投胎转世,竟错投了猪胎,落得如此模样。这时他和悟空打了一会儿,就觉得抵挡不住,拔腿就往洞中逃。
343 |
344 | 悟空站在洞口骂,那妖怪也不出来。悟空一见,气得乱蹦乱跳,拿起金箍棒打碎了洞门,那妖怪听见洞门被打碎的声音,只好跳出来骂道∶“我在高老庄招亲,跟你有什么关系,你欺人太甚,我这把钉耙绝不饶你!”
345 |
346 | 悟空想跟他玩玩,就站着不动,不管那妖怪怎么打,悟空的头皮连红都不红。那妖怪使劲一打,溅得火星乱飞,这下可把他吓坏了,说∶“好头!
347 |
348 | 好头!你原来不是在花果山水帘洞,怎么跑到这儿来了,是不是我丈人到那儿把你请来的?”
349 |
350 | 悟空说∶“不是,是我自己改邪归正了,保护唐僧西天取经路过这……
351 |
352 | ”妖怪一听“取经”二字,“啪”地一声一丢钉耙,拱了拱手说∶“麻烦你引见一下,我受观音菩萨劝导,她叫我在这里等你们,我愿意跟唐僧西天取经,也好将功折罪。”
353 |
354 | 两个人放火烧了云栈洞,悟空将妖怪的双手反绑上,押回高老庄。那妖怪“扑通”一声跪在唐僧面前,把观音菩萨劝他行善的事说了一遍。唐僧十分高兴,叫悟空给他松绑,又请高太公抬出香炉烛台,拜谢了观音,还给他取了个法号叫猪悟能,别名猪八戒。
355 |
356 | 高太公又给猪八戒准备了一套僧衣、僧鞋、僧帽等穿上。临走的时候,八戒一再叮嘱说∶“丈人啊!你好好照看我老婆,如果取不成经,我还是要还俗的。你不要把我的老婆再许给别人呀!”悟空听了笑骂他胡说八道,八戒却说∶“我这是给自己留条后路呢!”
357 |
358 | 第8回 黄风洞唐三藏有难
359 |
360 | 从此以后,唐僧又多了一个徒弟。师徒三人不怕千辛万苦,日夜赶路向西前进。这天来到一座很险峻的山下,忽然刮来一阵旋风。悟空让过了风头,一把抓住风尾闻了闻,有一股腥臭气,说∶“闻这风的味儿,说明附近不是有猛虎就是有妖怪。”
361 |
362 | 话还没说完,山坡下就跳出一只斑斓猛虎,把唐僧吓得从白马上滚了下来。八戒一见,扔下行李,拿起钉耙劈头就打。忽然那只猛虎站了起来,伸出爪子往前胸一抓,把虎皮剥下来,高声叫道∶“我是黄风大王的先锋,你们是哪里的和尚?”
363 |
364 | 八戒刚说明来历,那妖精一转身从乱石中取出两口赤铜刀,朝着八戒就砍,两个在坡前打了起来。悟空一见,拿着金箍棒上前就打。那妖精见不是对手,就地一滚,又变成猛虎跑了。悟空和八戒哪里肯罢休,连忙紧追而去。
365 |
366 | 那妖精见脱不了身,就使了个金蝉脱壳之计,用爪子剥下虎皮,盖在一块卧虎石上,自己变成一股狂风给溜了。到了路口,见唐僧一个人端坐在路口,就一把抓起唐僧,驾着狂风跑了。
367 |
368 | 那妖精把唐僧抓到洞中,洋洋得意地给洞主说他抓了唐僧。老妖怪一听,大吃一惊。原来他知道孙悟空的厉害,心里十分害怕,就叫小妖们把唐僧拉到后园子里,绑在定风柱上,先不要吃,等过上三、五天,如果唐僧的徒弟不来捣乱的话,那时再吃也不迟。
369 |
370 | 再说悟空和八戒见那只老虎趴在块石头上,棒耙一齐打了下去,虎皮碎了,石头裂了,悟空大叫道∶“不好,中计了!”两人急忙回到路口去找师父,哪里还有师父的影子,八戒急得大哭,悟空说∶“先不要哭,我们应该先找回师父!”
371 |
372 | 师兄弟两个追进山中,穿山越岭,忽然看见一块岩石下有座山门,上书六个大字“黄风岭黄风洞”。悟空让八戒看着马和行李,自己到洞口叫阵。
373 |
374 | 小妖们忙跑进去向老妖报告。
375 |
376 | 老妖怪的先锋自告奋勇,点齐五十名精壮部下,打着战鼓摇着战旗,提着两口赤铜刀,跳出洞门,与悟空打了起来。几个回合下来,那妖怪就腰酸腿痛,转身想跑,悟空连忙拦住去路,先锋一见回不成山洞了,只好转身向山坡上跑。
377 |
378 | 八戒正好在山坡上放马,见妖精被悟空追得往这边跑,就放开马,举起钉耙用力打去,一下把妖怪的脑壳打得稀巴烂,现出了原形——是一只老虎。悟空见了很高兴,一手提金箍棒,一手拖着死老虎,又来到洞口,要引那老妖出来。
379 |
380 | 老妖听说悟空拖着先锋官的尸体前来骂阵,气得不得了,立即穿戴整齐,拿一杆三股钢叉,率领所有的小妖出洞应战。悟空见了老妖便直扑过去,两个人在黄风洞口,你一叉,我一棒,打得难解难分。
381 |
382 | 悟空求胜心切,便从身上拔下一把毫毛,吹了口仙气,这些毫毛立刻变成了一百多个悟空,每人手拿一根金箍棒,把老妖团团围住。老妖哪里遇见过这场面,心中十分惧怕,朝地上吹了口气,顿时天上刮起一阵狂风,把那一百多个悟空吹得像风车一样在空中乱转。
383 |
384 | 悟空急忙把毫毛收回身上,自己举着金箍棒去跟老妖斗。老妖知道难胜悟空,于是猛地朝悟空脸上吹了口气,悟空顿时觉得眼睛似乎被无数个针尖猛扎,疼得睁不开眼睛,立刻败下阵来。老妖乘机收兵回去了。这时天也晴了,悟空对八戒说双眼酸痛,泪流不止。
385 |
386 | 师兄弟两个见天也晚了,决定找个地方歇歇脚,明日再找老妖算帐。于是他们牵着马走出山坳,见南山坡下有一院子,就走进去敲门,请求借宿,没想到一个老大爷带着几个年轻农夫,手中拿着棍棒冲了出来。
387 |
388 | 悟空想是误会了,急忙说明来意。那老大爷听后连忙赔礼,又叫人收拾床铺准备饭菜。悟空眼睛泪流不止,老人家拿出一个玛瑙石做的小罐子,说是有个仙人传给他的一种药叫三花九子膏,专治一切风眼。老大爷给悟空眼睛点了一些,让他不要睁开。
389 |
390 | 悟空干脆躺下就睡,直睡到第二天早晨才醒,他使劲眨了眨眼,不痛了。更奇怪的是,师兄弟俩竟躺在草地上。往四周望一望,见树上有张条子,取下来一看,才知道昨天晚上的院子,老大爷都是护法伽蓝变的。两人商量后决定,仍由八戒看马,悟空前去捉妖。
391 |
392 | 悟空来到黄风洞前,变成一只花脚蚊虫,从门缝飞了进去,见老妖正在大厅和小妖们收拾兵器,准备再次交战。悟空飞到后院,见师父被绑在定风柱上,就飞到唐僧头上,轻声地安慰了一番,让他不用担心害怕。
393 |
394 | 悟空又飞回大厅,正好碰见一个小妖来报∶“大王,只有一个长嘴大耳朵的和尚坐在树林里,那个毛脸和尚不见了,说不定是搬兵去了。”老妖说∶“怕什么,除了灵吉菩萨什么人我都不怕!”悟空听了,心中一阵欢喜。
395 |
396 | 他飞出黄风洞,现出原形后来到林中,把刚才听到的都给八戒说了一遍。可是到哪儿去找灵吉菩萨呢?两人正在商量,忽见大路旁走出一位老公公,悟空连忙施礼,问道∶“请问老人家,您可知道灵吉菩萨的住处?”
397 |
398 | 老公公说∶“灵吉菩萨住在正南方的小须弥山中。”,说着手向南指,悟空顺着手指向南望去,那老公公早已化成一股清风不见了,留下一张条子,原来是太白金星暗中相助。悟空让八戒藏在树林深处等他,自己则去找灵吉菩萨。
399 |
400 | 悟空一个筋斗直往南行,不一会儿就看见一座彩云围绕的高山,山谷里有座幽静的禅院,不时传出庄严的钟声,空气中弥漫着香气,就按住云头,走到门前,看见一个道士,急忙上前施礼,打听到这里就是灵吉菩萨讲经的地方。
401 |
402 | 灵吉菩萨听到通报后,立即出来迎接悟空,悟空说明了来意,菩萨说∶“我奉如来佛祖的法旨,在这里镇压黄风怪,原来我抓住他,但没有杀他,放到山中不许他再伤害生灵,没想到他仍恶性不改,竟然伤害你师父,我一定要助你一臂之力。”
403 |
404 | 灵吉菩萨拿出定风丹,又取了飞龙宝杖,与悟空驾云来到黄风山上。他让悟空到山门前去挑战,引诱黄风怪出来。悟空下了祥云,挥舞着金箍棒打破了洞门,那老妖非常生气,举叉便向悟空胸口刺来。
405 |
406 | 悟空举棒招架着,没打多久,那老妖张嘴又想呼风,半空中的灵吉菩萨扔下飞龙宝杖,变成一条八爪金龙,伸出两个爪子,一把抓住那老妖,提着头摔在石崖边上,妖怪现出原形,原来是一只黄毛貂鼠。
407 |
408 | 悟空举棒就想打,灵吉菩萨拦住说∶“慢着,他本是灵山脚下的老鼠,因为偷吃了琉璃灯里的清油,怕金刚捉他才跑到这里成精作怪。他既现了原形,就让我把他抓去见如来,看陷害唐僧该怎样处置他。悟空,你看这样可好?”
409 |
410 | 悟空谢了灵吉菩萨,灵吉菩萨带着黄毛貂鼠向西去了。悟空在林中找到八戒,两个把洞中的大小妖怪全都打死,救出唐僧,又在洞里找到些素食,做些饭侍候师父吃了,这才走到洞外,一把火烧了黄风洞,又继续上路西行。
411 |
412 | 第9回 流沙河沙和尚拜师
413 |
414 | 唐僧师徒三人过了黄风岭,一路上特别小心。天亮赶路,天黑就休息,这样过了一年。这天来到了一条一望无际,汹涌澎拜的大河边。悟空跳到空中一看,估计这条河少说了有八百里宽,不但看不到渡船,连个人影都没有。
415 |
416 | 突然八戒叫道∶“师兄,快到这儿来!”原来岸边有一块石碑,走近一看,碑上刻着“流沙河”三个大字,碑背面四行小字“八百流沙界,三千弱水深,鹅毛飘不起,芦花定底沉”。唐僧倒吸一口冷气说∶“这可怎么办?
417 |
418 | ”突然,一声巨响,河中钻出一个妖怪来。
419 |
420 | 那妖怪朝唐僧扑了过来。悟空慌忙护着师父,八戒挥着钉耙,与妖怪在河边打了起来,半天仍不分胜负。悟空纵身一跃,举起棒子朝妖怪打去。那妖怪挥杖一挡,震得双臂发麻,虎口迸裂。
421 |
422 | 那妖怪慌忙跳到河里,钻入水底。悟空要去追赶,被唐僧叫住,师徒二人商量着如何过河。悟空说∶“这妖孽一定是住在这河中,想必有过河的办法,只要降服了他,就能过河!”八戒连忙说∶“俺老猪原是天河里的天蓬元帅,还是让我这懂水性的去收拾他吧!”
423 |
424 | 八戒念了个“避水咒”,脱了衣服拿着耙子钻进水府。妖怪举杖便打。
425 |
426 | 两个从水底打到水面,又从水面打到水底,整整两个时辰仍不分胜负。悟空插不上手,急得在旁边挤眉弄眼地作手势,要八戒把妖怪引到岸上来。
427 |
428 | 八戒正打在兴头上,哪能看懂悟空的意思。悟空急了,忍不住一个筋斗跳到云头,变成一只饿鹰扑落下来。那妖怪忽然听到头上有风声,抬头见悟空对着自己冲下来,就收起宝杖,一下扎进水里,再也不出来。
429 |
430 | 悟空没有办法,只好回来,对师父说∶“那妖怪非常狡猾,钻到水里后怎么也不出来。现在我去找观音菩萨想想办法。”悟空一个筋斗来到南海落伽山紫竹林中,找到观音说明情况,观音说∶“那妖怪原是天上的卷帘大将下凡,被我劝化,答应保唐僧西天取经的。”
431 |
432 | 观音菩萨派木叉行者带着一个红葫芦,和悟空来到流沙河。木叉行者驾云来到河面上,高声喊到∶“悟净!悟净!取经的人就在这儿,快点出来跟师父去吧!”
433 |
434 | 那妖怪听到呼唤,连忙钻出水面,木叉行者说∶“前来见你的师父和师兄们!”那妖怪整整衣服,拜见了师父,唐僧很高兴又收了个徒弟,给他剃了头,取名沙和尚。
435 |
436 | 沙和尚取下脖子上挂的九个骷髅,用绳子一串,又把观音菩萨的红葫芦拴在当中,放到河里,立刻变成一只小船。唐僧在八戒和悟净的搀扶下上了船,向西岸驶去。悟空牵着白龙马,在船后紧紧跟随。
437 |
438 | 到了岸上,木叉行者收起了红葫芦,那些骷髅立刻化成九股阴风一会儿就不见了。唐僧拜谢了木叉行者,又向南边谢了观音菩萨,然后才跨上白马,带着三个徒弟又向西赶路。
439 |
440 | 第10回 试禅心八介撞天婚
441 |
442 | 没走多久,天渐渐黑了,在不远处一片小树林中,隐隐可以看见一栋豪华的门楼。唐僧高兴地说∶“今夜可有住宿的地方了。”唐僧师徒刚走到门口,刚好屋里走出一位中年妇女,唐僧忙施礼,说明来意,那妇人一听便请唐僧师徒进屋休息。
443 |
444 | 那妇人把唐僧师徒领到大厅,吩咐佣人准备斋饭,自己和唐僧话起家常来∶“我家家财万贯,良田千顷。唉!五一可是丈夫前年死了,只有三个女儿与我相伴,看你们师徒四人都是正人君子,不如给我家当上门女婿,师父看怎么样?”
445 |
446 | 唐僧的脸红到了耳根,只装作没听见,也不回话。八戒听见有这么多家产,又有绝色美女,便动了心,悄悄凑到师父跟前,要他答应。唐僧狠狠地瞪了八戒一眼,又训斥一番,八戒撅着嘴站到一边去了。
447 |
448 | 妇人见唐僧不答应,很不高兴。唐僧见了就推脱给悟空,悟空又推给八戒,八戒虽然心里愿意,但嘴上也假装推辞。那妇人见他们你推我,我推你,都不肯答应,一生气走到屏风后面,把门关上走了。
449 |
450 | 唐僧师徒被冷落,坐在大厅没吃没喝,也没人理他们。八戒埋怨说∶“师父,为什么你不先骗骗她,等吃饱喝足后再想别的办法?”说完,走出大厅,说去放马。悟空知道八戒心里另有想法,就变成一只红蜻蜓,跟在八戒身后。
451 |
452 | 八戒牵着马无处可去,就顺着围墙转到后门口。这时那妇人带着三个女儿正在小院中观赏菊花。八戒偷眼一看,那三个女儿确实美如天仙,不由地想入非非,陪着笑脸小心翼翼地走了过去。
453 |
454 | 三个女儿看见有生人来了,一个个害羞得躲到屋里。八戒走到那妇人跟前,恭恭敬敬地鞠个躬,又亲亲热热地喊了声∶“娘,我放马来了。”求那妇人把女儿嫁给他。妇人问∶“你师父会答应吗?”八戒说∶“他又不是我爹,管不了那么多!”
455 |
456 | 悟空听得清清楚楚,赶忙飞回前厅,恢复了原来的模样,把八戒和那妇人的谈话,给师父学了一遍。刚说完,八戒牵着马回来了,悟空故意逗他∶“到哪里去放马了?”八戒含含糊糊地说∶“这里的草长得不好。”
457 |
458 | 正在这时,旁边的门开了,那妇人带着三个女儿,身上穿着漂亮的衣服,迈着小步,走了进来,向唐僧师徒问好。唐僧合掌低头念阿弥陀佛,孙悟空仰起脸不理她们,沙僧转过身不敢多看一眼,只有八戒目不转睛地死盯着人家。
459 |
460 | 拜见后,那妇人就让女儿们回到内房,这才问唐僧∶“长老哪位徒弟愿意娶我女儿呀?”唐僧、悟空、沙僧都一齐看八戒,八戒还装出一副不情愿的样子。悟空上前一把抓住八戒的手,放到那妇人的手里,说∶“你们不是早就商量好了吗?去拜天地吧!”
461 |
462 | 八戒还在装模作样,嘴里虽说不愿意,人却已经离开了前厅,跟着那妇人左拐右拐,来到了后房。八戒急得马上就要拜天地。那妇人却把一个盖头盖在八戒的头上,让三女儿在他身边来回地走,说他抓住哪个女儿,就把哪个女儿嫁给他。
463 |
464 | 八戒顶着盖头,听见身边有人走来走去,可是伸手去抓,每次不是抱住柱子,就是碰了墙壁,急得满屋乱跑,可是越急越是一个也抓不住,最后累得气喘嘘嘘,实在跑不动了,一屁股坐在地上。
465 |
466 | 可是八戒并不死心,向那妇人提出干脆把三个女儿都嫁给他。妇人不同意,又从房中拿出一件挂满珍珠的汗衫,说∶“我的女儿每人都织了一件,哪个女儿的你能穿上,就把哪个女儿嫁给你。”
467 |
468 | 八戒听了心里十分高兴,就三下五除二地脱了黑布上衣,把挂满珍珠的汗衫,穿在身上。可是还没等他系上腰带,就“扑”地一声,摔倒在地上,那件汗衫眨眼的功夫竟变成了几根绳子,把八戒捆得紧紧得,不管他怎么使劲,也挣脱不了。
469 |
470 | 再说唐僧、悟空和沙僧,八戒被带走以后,那妇人立刻派人送来很多好吃的,吃完以后,他们就在前厅睡觉。一觉醒来,东方已经发白。唐僧急着赶路,睁开眼一看,原来住的那些华丽的房子都不见了,他们三人竟然睡在野地里。
471 |
472 | 唐僧吓得赶忙叫醒悟空和沙僧。悟空回头看了看,发现对面一棵老柏树上,挂着一张纸条,正随风微微地飘动。他走过去扯下纸条,拿给师父看,这才明白昨天晚上的那四位女子,是由黎山老母、观音、普贤和文殊四位菩萨变的,来试试他们取经的决心。
473 |
474 | 这时,树林中传来了八戒的叫声∶“师父,快来救我,我下次再也不敢了!”唐僧、悟空、沙僧顺着声音找过去,只见猪八戒被紧紧捆着,吊在树上大喊大叫。悟空走过去逗他∶“新郎官怎么不在新房中,跑到树上打秋千耍杂技?”
475 |
476 | 沙僧见了,不忍心八戒受罪,把他放了下来。八戒知道自己错了,低着头,请师父原谅,并且表示接受教训,要跟师父去取经。于是唐僧带着三个徒弟,对着空中谢过菩萨,然后跨上白马,高高兴兴地向西天走去。
477 |
478 | 第11回 五庄观偷吃人参果
479 |
480 | 唐僧师徒四人忙着赶路,吃不好、睡不好,走了几天,来到一个景色迷人的万寿山五庄观,见天色不早,就想在五庄观里住上一晚。五庄观里的两个童子听说他们是来自东土大唐要到西天取经的,连忙说∶“我家师父到元始天尊那里讲经去了,让我们在这里等您,请快快进屋。”
481 |
482 | 原来,这童子的师父是镇元子,在五百年前的兰盆会上认识了唐僧前世金蝉子。临走时曾告诉两个童子要好好对待唐僧,并交待童子用观里的两颗宝贝人参果招待他。两个童子安排好唐僧师徒后,就忙着到果园内去摘人参果。
483 |
484 | 两人摘了人参果,趁着唐僧的徒弟不在,偷偷拿来给唐僧吃。唐僧看见人参果就好像刚出生的婴儿一样,吓得浑身发抖,使劲摇手不敢吃。两个童子越是解释说∶“这是仙果,不是人!”唐僧仍是不信,让他们赶快端走。
485 |
486 | 两个童子没有办法,只好端着人参果,回到房里。因为那人参果不能久放,否则吃下也不能长寿,于是两童子一人一个,分着吃了。说来也巧,这间房子正好和厨房挨着,两童子分吃人参果的事,八戒听得明明白白,看得清清楚楚,馋得直流口水,恨不得立刻吃一个。
487 |
488 | 一会儿,悟空放马回来,八戒连忙把刚才的事情告诉了师兄。悟空早就听说过人参果,只是没有吃过,于是就按照八戒说的,用了一个隐身的法术,偷偷溜进道房,拿走了二童子摘果用的金击子,跑到后园去摘人参果。
489 |
490 | 这人参果树有一千多尺高,非常茂盛,朝南的枝头上,露出了一颗人参果。悟空轻轻一跳,跳上树枝,用金击子一敲,那果子就掉下来,悟空紧跟着跳下来,可是却找不到那果子。悟空把果园里的土地神抓来,问他为什么把人参果偷走。
491 |
492 | 土地神告诉孙悟空,这宝贝树三千年开一次花,过三千年才结一次果,再过三千年才成熟,而且只结三十个果子,这果子很奇怪,碰到金属就从枝头落下,遇到土就钻进土里,打它时要用绸子接。悟空送走土地神后,一手拿金击子敲,一手扯着自己的衣服接了三个果子。
493 |
494 | 悟空回到厨房后,让八戒把沙僧叫来,三个人每人分一个。猪八戒性急,一口把果子吞下去,什么味道也没有尝出来,就想让悟空再去偷几个。悟空告诉他这人参果是一万年才结三十个果子,能吃到一个,就应该满足了,说完就把金击子放回了原处。
495 |
496 | 猪八戒心里不高兴,嘴里不停地说,要是能再吃一个该有多好,不巧被两童子听见了,慌忙跑到园子里去数,发现少了四个果子,想一定是被唐僧师徒四人偷吃了,就怒气冲冲地来找唐僧讲理,说∶“你这些和尚,叫你吃,你不吃,为什么偏偏偷着吃?”
497 |
498 | 刚开始,悟空师兄三人怎么也不承认偷吃了人参果,后来,经唐僧的一番开导,觉得确实是自己不对,就承认偷吃了三个。两个童子却说是四个,还骂了许多难听的话。悟空火了,拔了一根毫毛变成一个假悟空站在那挨骂,自己跳上云头向后园飞去。
499 |
500 | 悟空一进果园,就拿出金箍棒一阵乱打,又使出自己的神力,把树连根拔出,摔在地上,仙果从树上掉下来,又碰到了土就全部钻到土里去了。
501 |
502 | 悟空回到房中,收回毫毛,让两个童子随便骂,也不还口。两个童子见唐僧他们一句话也不说,就想,是不是树太高,叶子太密,自己数不清,又回到果园仔细看看。一到果园,见那情景,吓得他们半死,趴在地上,放声大哭∶“师父回来,可怎么说呀!”
503 |
504 | 两个童子商量,先把唐僧留住,师父回来也好说一些,于是回到房中,假说果子一个也没有少,是自己刚才数错了,请唐僧他们原谅。接着,他们给唐僧师徒们准备了很多饭菜,趁他们吃饭时,关上门,又用一把大铜锁,把门锁上。
505 |
506 | 孙悟空早就有了主意,等到夜深人静的时候,用开锁法术,将一道道紧锁的大门都打开,拔毫毛变成两个瞌睡虫,扔在童子脸上,两童子便呼噜地睡着了。唐僧师徒四人这才趁着黑夜逃出来,向西天赶路去了。
507 |
508 | 天亮时镇元子回到五庄观,发现两个童子被人施了法术,躺在那里睡大觉,连忙运用神功把他们叫醒。二童子一见师父回来了,便急忙跪下,请师父原谅他们,并把唐僧师徒偷吃仙果,毁坏仙树的事情告诉了师父。镇元子想这一定是孙悟空干的,便去找孙悟空讲理。
509 |
510 | 镇元子驾着云,眨眼功夫就追上唐僧师徒,让他们赔树。孙悟空看见情况不妙,拿出金箍棒就打。镇元子是地仙老祖,法力无穷,轻轻一闪,躲过棒子,将袍袖一张,把唐僧师徒连人带马一起吸了进去,就算孙悟空本事再大,也没法出来。
511 |
512 | 大仙回到五庄观,叫小童们把唐僧师徒一个个绑在正殿的柱子上,要先打唐僧。悟空担心师父可能受不住打,就要求先打自己。大仙见悟空倒还有些孝心,让童子打他三十鞭。悟空看见童子举着鞭往腿上打,就把双腿变成了铁腿。
513 |
514 | 晚上,孙悟空看镇元子和众仙都回自己的房中睡觉去了,就把身子一缩,从绳索中钻了出来,又放了其他三个人,然后叫八戒到后花园搬来四枝柳条干,施了法术变成他们四人的样子,按照原样绑在柱子上,然后偷偷溜出五庄观,向西边逃去。
515 |
516 | 第二天早上,镇元子又带人来打唐僧他们。可是打来打去,也不见他们喊饶命,镇元子觉得奇怪,仔细一看,竟然是四根木头。于是,他又驾云追赶唐僧他们。悟空、八戒、沙僧见镇元子追来了,没有办法,只能硬着头皮和镇元子打,大仙张开了袍袖,把他们又装了进去。
517 |
518 | 这回大仙不再打他们了,把他们绑在殿前的树干上,要用油锅炸。镇元子让人在院子中央支起一口油锅,要先炸悟空,悟空害怕大仙在油锅里做手脚,于是念动咒语,把殿前的石狮子变成他的替身,绑在树上,自己则偷偷跳到空中。
519 |
520 | 油烧开了,用了二十个仙童,才把孙悟空的替身抬起来,扔到油锅里,不料油锅被砸坏了,还把好几个仙童给烫伤了。大仙走上前,看见是一只石狮子,非常生气,让手下人再准备一口锅,这回要先炸唐僧。悟空在空中听见后,赶快落下来说∶“别,别,还是先炸我吧!”
521 |
522 | 大仙知道孙悟空的本领高强,也就不再为难他,只要求他能把树救活。
523 |
524 | 悟空点头答应,但条件是得先放了唐僧他们。于是达成协议,一个放人,一个治树。八戒却不相信树死了还能治活,怀疑悟空想一个人溜走,唐僧也相信了八戒的话,只给悟空三天时间。
525 |
526 | 悟空到蓬莱仙境、方丈仙山、赢洲海岛等地,问遍各路神仙,都没有治活人参果树的好办法,急得孙悟空一会儿抓抓头,一会儿挠挠腮,不知道该怎么办。最后,只好翻个筋斗云到南海落伽山去找观音菩萨,求他把人参果树救活。
527 |
528 | 幸运的是观音手中净瓶里的甘露水正好能医治仙树仙草。于是,悟空和观音菩萨来一起驾云来到五庄观。镇元子看,知是观音菩萨来了,赶忙亲自带着全观人的人出来迎接,然后让人把后院打扫干净,摆上作法用的桌子,请观音到后院医树。
529 |
530 | 观音让悟空、八戒、沙僧把树扛起来,扶正,用土把根埋上,然后一边念动咒语,一边用杨柳枝沾些露水,洒在树上。没过多久,那树的叶子也绿了,果子也长出来了,和原来一样茂盛。两个仙童再数树上的人参果,却变成了二十三个,证明孙悟空原来没有撒谎。
531 |
532 | 镇元子大仙看见树被救活了,高兴得不得了,立即让仙童敲下十个人参果来,请大家一起参加“人参果大会”。唐僧这时才明白这确实是果子,也吃了一个。散席后,镇元子大仙先送走了观音菩萨,然后送唐僧师徒上路西去。
533 |
534 | 第12回 孙悟空三打白骨精
535 |
536 | 一天,他们来到一个叫白虎岭的地方。这地方到处是奇形怪状的石头,连一户人家也没有。唐僧肚子饿了,便让悟空去找些吃的。悟空刚走,唐僧他们就被一个叫白骨精的妖怪发现了。妖怪自言自语∶“真是好运气,听人说,吃一块唐僧肉就可以长生不老。”
537 |
538 | 白骨精看见唐僧身边有八戒和沙僧保护,就摇身一变,变成了一个年轻漂亮的村姑,抓了一些癞哈蟆和一些长尾蛆,用了法术,变成米饭和炒面筋,装在竹篮里,走到唐僧面前,说是为还愿特地来请他们吃的。唐僧半信半疑,那八戒却嘴馋,接过篮子就准备吃。
539 |
540 | 就在这时,刚好孙悟空化斋回来了,用火眼金睛仔细一看,发现是一个妖怪变的女子,举棒便要打。唐僧赶忙拦住悟空,可是,哪里得拦住!悟空趁唐僧一不留神,一棒打去。没想到那个妖怪也有点本领,用了一个法术,扔下一具假的尸体,自己化作轻烟逃走了。
541 |
542 | 唐僧责怪悟空不该打死人。悟空拿过竹篮,让唐僧看里面的癞哈蟆和长尾蛆,唐僧这才相信那村姑是个妖怪。猪八戒没有吃成饭,心里很不高兴,说这是悟空使的障眼法,变了些癞哈蟆,长尾蛆来骗师父。唐僧居然相信了,念起紧箍咒,疼得悟空满地打滚。
543 |
544 | 悟空求唐僧饶他,唐僧本来就心慈,看在师徒情份上,答应这一次饶了他。于是,师徒四人又上路了。但是那个白骨精这时却又想出了一条毒计,她摇身一变,又变成了一个七、八十岁的老太婆,柱着拐杖,哭着向他们走了过去。
545 |
546 | 孙悟空睁大火眼金睛,见又是白骨精变的,一句话也不说,举着棒子就打。那个妖怪还是用了个法术,扔下一具假的尸体在路边,自己逃走了。唐僧吓得差点从马上掉下来,一气之下,一口气把紧箍咒念了二十遍,要赶走悟空。
547 |
548 | 孙悟空头疼得厉害,向师父求饶∶“师父如果不要我了,就请把头上这个箍取下来。”可是唐僧只学过紧箍咒,又没学过松箍咒,怎么能取得下来,没有办法,只好答应再饶悟空一次,反复嘱咐他不准再把人打死。悟空连忙点头答应,扶着唐僧上了马,继续上路。
549 |
550 | 白骨精不甘心唐僧就这样走了,又变成一个白发老公公,来找他的妻子和女儿。虽然悟空早已认出他是妖怪,但是害怕师父又念咒语,就没有立刻动手。那白骨精却把唐僧拉下马来,说是要到官府去告他。悟空急了,抡棒就要打,没想到那妖怪却躲到唐僧的背后。
551 |
552 | 悟空见师父护着那妖精,就念动咒语,叫来本地的山神和土地神,让他们在空中拦住妖怪,然后举起棒子就要打。唐僧见他又要打人,气得念起了紧箍咒,痛得悟空倒在地上。白骨精见了,便在一旁偷偷地冷笑。悟空忍着疼,挣扎起来,一棒子打死了妖怪。
553 |
554 | 被打死的妖怪现了原形,成了一堆白骨,在脊梁骨上还刻有“白骨夫人”四个字。悟空把这些指给唐僧看。唐僧这才有点相信。不料,八戒这时却在一边插嘴∶“大师兄是怕师父念咒,才用了法术,变出副白骨来骗人的。
555 |
556 | ”
557 |
558 | 唐僧一听,非常生气,不管悟空怎么求饶,沙僧怎样说情,一定要把悟空赶走,并且写了一张贬书,递给悟空。悟空见师父已经下定决心,长叹一声,转身握住沙僧的手,含着泪说∶“好好保护师父,如果遇到妖怪,就说我是他的大徒弟,妖怪就不敢伤害师父了。”
559 |
560 | 第13回 宝象国除怪救公主
561 |
562 | 孙悟空回到花果山后,唐僧在八戒和沙僧的保护下,继续向西天走去。
563 |
564 | 一天,他们来到了一片黑松林,唐僧肚子饿了,让猪八戒去化斋。猪八戒找了很久,也找不到人家,走得累了,就一屁股坐在草丛里休息,不知不觉地竟然睡着了。
565 |
566 | 唐僧左等右等,也不见八戒回来,就让沙僧去找他,自己一个人坐在松林里,时间一长,觉得又困又累,于是站起身来四处走走,没想到走错了路,来到一座黄金宝塔下。唐僧看见塔门上挂着一幅竹帘,就掀开帘子往里看,不由得大吃一惊,塔里的石床上竟然躺着一个妖怪。
567 |
568 | 唐僧刚被妖怪抓住,八戒和沙僧就来到了妖怪住的碗子山波月洞。原来沙僧找到熟睡的八戒后,两人回到村子里,却找不到师父,就牵着马,挑着担一路找过来。他们一看就断定这是一个妖洞,八戒二话没说,举着钉耙就去砸门。
569 |
570 | 老妖黄袍怪听见砸门声跑了出去,和八戒、沙僧打了起来。这时,被绑在洞中的唐僧看见一个妇子来到了面前,问他是从哪里来的。唐僧看她不像妖怪,就如实地告诉了他,那女子告诉唐僧,原来她是离这不远的宝象国的三公主,名叫百花羞,被妖怪抢来当妻子已经十三年了。
571 |
572 | 百花羞答应救唐僧出去,但是有一个条件,唐僧得带一封信给宝象国国王,唐僧满口答应。于是百花羞写了一封信,并给唐僧松了绑,带着他从后门逃出山洞,告诉他要暂时躲在草丛里,等黄袍怪回到洞里再去找徒弟,然后迅速离开此地。
573 |
574 | 百花羞回到洞中,故意打开后门,把自己的衣服和头发弄乱,跑到门前,对正在打斗的黄袍怪喊道∶“不好了,那唐朝和尚用法术解开了绳子从后门逃走了!”黄袍怪听了,大吃一惊,连忙下了云头,回到洞中。
575 |
576 | 这时,百花羞又假装昏倒,让黄袍怪顾不上去追唐僧。唐僧便趁机找到八戒和沙僧,连夜赶路,来到宝象国,住进一家客栈。第二天,唐僧一个人去拜见宝象国王,等倒换了关文,才把百花羞的信献上。
577 |
578 | 国王读完信后放声大哭,请求唐僧去捉拿妖怪。唐僧没有办法,只好说出八戒和沙僧。于是,国王派人到客栈去请八戒、沙僧一起捉拿妖怪。八戒也不管自己能不能办到,满口答应,为了显示自己的本事,竟变成一个八、九丈高的巨人。
579 |
580 | 沙僧见了,也只好陪他一块前去,两人来到了波月洞前,八戒举起钉耙,一耙把洞门打了个斗大的洞。黄袍怪见了气得不得了,拿着刀出来迎战,当他得知是宝象国王派他们来的时候,就更生气了,越打越厉害。
581 |
582 | 渐渐地,猪八戒体力跟不上,就借口说要撒尿,偷偷地溜走了。沙僧一个人敌不过黄袍怪,被老怪捉到洞里。黄袍怪回到洞里,当着沙僧的面,逼问百花羞是不是和唐僧串通好了。沙僧说是他们看到了宝象国三公主的画像。
583 |
584 | 黄袍怪听沙僧说得有道理,就连忙向百花羞道歉。为了报复唐僧,他变成一个英俊的书生,来拜见宝象国王,说自己是一个猎户,十三年前打猎时碰到一只猛虎,驮着个姑娘,他将姑娘救下,结了夫妻,最近才知道那姑娘是三公主,特地来认亲。
585 |
586 | 接着他又说那老虎现在已经成了精,假装成一个取经的唐朝和尚到处害人,说着便使了个法术,把唐僧变成了一只老虎。国王被吓得半死,几个胆大的武士上前锁住猛虎,关到了铁笼里。国王非常高兴,命令大摆三天酒席,感谢三驸马。
587 |
588 | 唐僧变老虎精的事,很快就传开了,白龙马听见官兵的议论,知道师父是被妖怪陷害。三更时,它变成小白龙飞到宫里,刚好看见那个黄袍怪抓着一个伺候他的宫女在吃,就摇身一变,变成一个宫女的模样,想在送酒的时候趁机杀了妖怪。
589 |
590 | 小白龙等黄袍怪伸手拿酒的时候,猛地抽出那妖怪腰间的大刀,使尽全身的力气砍去。那妖怪本领确实高强,和小白龙赤手空拳打了起来。他们从房里一直打到房外,又跳到空中去打,时间一久,小白龙渐渐不是对手,后腿被妖怪打伤,连忙钻到御水河里。
591 |
592 | 到了后半夜,猪八戒回到客栈,找不到师父和沙僧,只看见白龙马在马圈里卧着。白龙马开口讲话,把今天发生的事告诉了猪八戒,要八戒去请大师兄悟空回来救师父。开始八戒害怕悟空怪罪他,不敢去,后来在白马的一再劝说下才答应。
593 |
594 | 八戒驾云很快来到花果山,开始悟空装作不认识他,举着棒子要打,猪八戒吓得哭了起来。悟空这才露出笑脸,把八戒请到水帘洞里款待。八戒把师父遇难的事告诉了悟空,苦苦哀求他前去解救师父。悟空想了很久,终于答应了。
595 |
596 | 悟空和八戒驾云来到波月洞前,他们先把黄袍怪的两个儿子抓到山顶上,把百花羞引了出来,要百花羞赶快把沙僧放了。百花羞把沙僧放出以后,悟空让她和两个孩子藏了起来,然后拔下两根毫毛,使了法术,变成了妖怪的两个孩子。
597 |
598 | 八戒和沙僧按照悟空的主意,带着两个假孩子来到皇宫的上空,大声喊道∶“黄袍怪,给你孩子!”把两个假孩子往地面一扔,摔死在台阶下面。
599 |
600 | 黄袍怪跑出来一看,见自己的孩子被摔死了,云头上站着猪八戒和沙僧,不由怒火中烧。
601 |
602 | 黄袍怪赶忙跑到洞里,看见百花羞正在那哭着喊孩子,一见黄袍怪大哭了一声竟然昏过去。妖怪连忙扶起百花羞,张开嘴,吐出一个鸡蛋大小的舍利子内丹,让百花羞往疼的地方擦。妖怪话还没有说完,百花羞就一把抢了过去,吞到肚子里。
603 |
604 | 原来这百花羞是悟空变的,妖怪一看悟空的本来面目,认出他是五百年前大闹天宫的齐天大圣,吓得冒了一身冷汗,赶快下令让小妖们把悟空团团围住。悟空并不慌,变成一个三头六臂的巨人,手里挥舞着三根金箍棒,朝洞外打去。
605 |
606 | 孙悟空好如入无人之境,很快把小妖们都打死了。那妖怪也急了,逃出洞外,跳入云中,也变成三头六臂,拼着命和悟空打了起来。悟空故意露出一个破绽,那妖怪不知是计,被悟空当头打了一棒。谁知“吱”一声,竟然消失得无影无踪。
607 |
608 | 孙悟空到处找也找不到那妖怪,于是跑上天宫,请玉帝帮着查一查。天师奉命查遍天上所有的神仙,最后发现二十八宿中奎木狼私自离开天上已经十三天了。于是,玉帝命令其他二十七星宿下凡界去收降奎木狼。
609 |
610 | 黄袍怪果然是奎木狼变的,玉帝把他收到天宫后,罚他去给太上老君烧火炼丹。悟空回到宝象国,来到变成老虎的师父跟前,他见师父满脸泪水,知道师父已经知错,心就软了下来,让人取来干净的水,含了一口,念了咒语,向唐僧喷去。
611 |
612 | 唐僧终于恢复了原形。宝象国国王为了感谢唐僧师徒除妖降怪,救回公主,为他们准备了丰盛的食物,款待他们。第二天,唐僧离开时,国王又亲自带领文武百官一直送到郊外,才和他们依依不舍地告别。悟空又回到了唐僧身边,保护师父继续西行。
613 |
614 | 第14回 平顶山孙行者窃宝
615 |
616 | 走了几天,他们来到一个叫平顶山的地方,在山下有一个莲花洞,洞里有两个妖怪∶金角大王和银角大王。妖怪们早就听说吃了唐僧肉可以长生不老,并且算准他们今天要经过这里,银角大王便带着小妖在路口等候。
617 |
618 | 刚好猪八戒在前面探路,他一看见妖怪转身就跑,想回去报信,不料被地上的藤条一绊,摔了个狗吃屎,被妖怪们捆上抓进洞里。银角大王远远看见了孙悟空,知道他很厉害,就摇身一变,变成一个跌断腿的道士,躺在路边,大喊“救命”。
619 |
620 | 唐僧见了要扶道士上马,那妖怪却说自己腿断了,不能骑马,要悟空背他。悟空遵照师父的命令背上那妖怪,笑着说∶“你这个狡猾的妖怪,能骗得了我师父,却骗不了我!老孙知道你是山中的妖怪。”那妖怪只是笑也不说话。
621 |
622 | 走了几里路后,那妖怪念动咒语,先后搬来须眉、峨眉两座大山压在孙悟空肩上,可是孙悟空仍然有说有笑,行走自如。于是那妖怪又把泰山搬来,一下子把孙悟空压在底下,然后把唐僧、沙僧连同白马、行李全都掠到莲花洞里去了。
623 |
624 | 两个妖怪又命令精细鬼和伶俐虫两个小妖拿着紫金红葫芦和羊脂玉净瓶去抓孙悟空。只要把这两个宝贝底朝天倒着拿,喊谁的名字谁如果答应了,就会被吸到里面,过上一段时间就会化成脓水。两个小妖各拿一件宝物走了。
625 |
626 | 这时,孙悟空已经叫来了那些山的山神和土地,搬走了三座大山,也从他们口中知道了金角大王和银角大王那两件宝物的厉害。悟空心生一计,变成一个老道,来到两个小妖面前,说自己是蓬莱山的神仙,和悟空有仇,特地来帮他们一起捉孙悟空。
627 |
628 | 两个小妖说有红葫芦和玉净瓶,不用他帮忙。悟空拔了根毫毛,变成一个大紫金葫芦说∶“你们的葫芦只能装人,而我的却能把整个天都装下。”
629 |
630 | 说完,念动咒语,请玉帝帮忙,玉帝命令哪吒用一面黑色的大旗,把日月星辰全都遮盖起来,立刻,四周变得一片漆黑。
631 |
632 | 两个小妖吓坏了,连忙请悟空把天放了。悟空又念动咒语,哪吒就收了黑旗,天色又亮了起来。两个小妖深信不疑,要用自己的两件宝贝换悟空的大紫金葫芦,悟空跟他们换了,两个小妖拿着试了两次,才发现上当。
633 |
634 | 两个小妖跑回洞里报告大王,悟空这时变成一个苍蝇,叮在小妖的头上,跟着进了洞。金角大王得知后非常生气,银角大王劝道∶“没事,我们还有七星剑、芭蕉扇和幌金绳三件宝贝,不如派人到压龙洞请老母亲一块来吃唐僧肉,让她把幌金绳也一如带来。”
635 |
636 | 巴山虎、倚海龙两个小妖奉命前往压龙洞。悟空又想出了个妙计,飞出洞外,变成一个小妖,追上那两个妖怪,说是奉命一起去压龙洞。在离洞很远的地方,悟空一棒打死了两个小妖,然后拔了根毫毛变成了巴山虎,自己则变成了倚海龙。
637 |
638 | 悟空进了压龙洞,向老妖婆说明了来意,老妖婆十分高兴,立刻带着幌金绳,坐上轿子,跟着悟空到莲花洞。走了几里路后,悟空突然变回了原来的面目,把老妖婆和抬轿的小妖全都打死,原来那个老妖婆是一个灰毛狐狸精。
639 |
640 | 悟空找到幌金绳放在袖子里,又拔下了四根毫毛,变成巴山虎、倚海龙和抬轿的小妖,自己则变成老妖婆坐到轿子里。不一会儿就来到了莲花洞,金角大王、银角大王连忙跪下来给她磕头。吊在房梁上的八戒却发现老妖婆弯腰时屁股上有根尾巴翘了起来,忍不住笑了起来。
641 |
642 | 八戒这一笑可坏了悟空的好事,金角大王起了疑心,认出老妖婆是悟空变的,拿出七星剑就砍。悟空赶忙跑到山洞外面,银角大王追了出来,和悟空在空中打了起来。悟空突然扔出幌金绳绑住了银角,没想到银角念了松绳咒,反而把悟空给绑住了。
643 |
644 | 不管悟空用什么办法也无法脱身,反被妖怪抓进洞,搜走了红葫芦和玉净瓶,绑在石柱上。两个妖怪高兴得不得了,到后洞喝酒去了。悟空趁机拿出金箍棒,变成一把挫刀,把扣在他脖子上的铁圈弄断,又拔出一根毫毛变成一个假悟空站在那里。
645 |
646 | 真的悟空变成一个小妖来到后洞,对金角说害怕悟空把幌金绳弄坏了,想换成一根粗绳子绑悟空,金角一时也找不到合适的,就把自己的腰带给了悟空。悟空回到大厅换下幌金绳,跳到洞外,高声喊∶“妖怪,者性孙来了!快出来!”两个妖怪大吃一惊,银角拿着红葫芦出洞去打悟空。”
647 |
648 | 悟空骗他说自己是孙行者的弟弟。银角说∶“我不跟你打,我只喊你一声,你敢不敢答应?”孙悟空忍不住答应了一声,不料,却因此被吸进红葫芦里去了。他也害怕自己变成水,就变成一只小虫,趴在葫芦口上。
649 |
650 | 过了很长时间,银角拿起葫芦摇了摇,想看孙悟空是不是变成了水。悟空急中生智,赶忙撒了一泡尿。银角听见水声,就笑着打开盖。孙悟空趁机飞了出来,变成倚海龙站在旁边。银角闻到葫芦里一股尿臭,就顺手把葫芦递给了身边的假倚海龙。
651 |
652 | 孙悟空拔根毫毛变了个假身,拿着假葫芦站在那,自己藏好真葫芦溜出了洞,举起金箍棒把守门的小妖全都打死,高声喊着∶“狗屁妖怪,行者孙来了!”银角拿着假葫芦出来,感到奇怪,这行者孙怎么和孙行者、者行孙长得一模一样。
653 |
654 | 悟空说他们都是亲兄弟。银角想把者行孙也吸到葫芦里。这时,悟空说∶“你叫我名字我敢答应;那我叫你名字,你敢不敢答应?”银角仗着葫芦在自己手里,不害怕,当悟空叫他名字时,就答应了一声,不料却被吸进了葫芦里。金角听说后,放声大哭,跑出来,拿着剑向悟空砍去。
655 |
656 | 金角一声令下,二百多个小妖一起把悟空围住,悟空拔下一把毫毛,咬碎了喷出去,转眼间变成了几百个孙悟空,打得小妖四处逃命。金角慌了,从身上拿出芭蕉扇,向悟空扇去,熊熊大火立刻铺天盖地的向悟空烧去。
657 |
658 | 悟空只留一根毫毛变成自己在门外和金角打斗,收了其他毫毛,跳进莲花洞,把守洞的小妖全部打死后,去救师父,发现了玉净瓶,连忙拿起来系在腰间,这时,金角回到洞休息,悟空见他睡得很熟,就走上去拿走了芭蕉扇。
659 |
660 | 金角被惊醒了,又和悟空打了起来,从洞里一直打到洞外,又打到空中。金角渐渐支持不住,向南逃去。孙悟空拿出玉净瓶,大喊一声∶“金角大王”,金角大王只顾逃命,没有注意答应了一声,被吸到瓶里。悟空盖好盖子,进洞救出了唐僧、沙僧和八戒。
661 |
662 | 师徒们又踏上了西行的道路,突然,从路边走出了一个老道,拉着唐僧要葫芦和宝瓶。悟空认出他是太上老君,连忙把两件宝贝还给他,太上老君从葫芦和宝瓶中倒出了两个仙童。原来金角和银角是太上老君手下两个看炉子的童子。
663 |
664 | 第15回 乌鸡国金丹救故主
665 |
666 | 太上老君带着两个童子回天上去了,唐僧师徒继续赶路。一天,走到月亮升起时,才走到一座“敕建宝林寺”,就在寺里住下。当晚,悟空、八戒和沙僧都已经睡着了,唐僧还端端正正地坐在桌子前背诵经文。三更天时,他也迷迷糊糊地睡着了。
667 |
668 | 睡梦中,他看到一个国王打扮的人走到他跟前,哭着说∶“我原来是乌鸡国的国王,五年前国家遇到大旱,百姓们都快饿死了,忽然来了一个能呼风唤雨的全真道士,用法术求下了很大一场雨,消除了旱灾。为了感激他,我和他结为兄弟,关系十分密切。”
669 |
670 | “这样平安地过了两年,谁知三年前的春天,我和那道士一起到花园游览春色,他竟然趁我没有防备将我推到了井里,还用青石板盖住井口,在上面种上芭蕉树。他则变成我的样子,夺去我的江山。文武百官,三宫六院都被他骗了。”
671 |
672 | 国王请求唐僧能够派悟空帮他除掉这个妖怪,并且交给唐僧一块白玉圭,说∶“明天太子要出城打猎,师父刚好可以趁机告诉他,这个东西可以作为凭证。在生前这玉圭从来没有离开过我,摔到井里也没有弄丢,那妖怪变成我,唯独没有这个东西。太子见了,一定能认出。”
673 |
674 | 国王告别走后,唐僧惊醒过来,连忙叫醒三个徒弟,告诉他们梦中发生的事。沙僧打开房门一看,见台阶上果然放着一把白玉圭。大家这才相信唐僧梦中发生的事是真的,就一起商量怎样捉拿妖怪。悟空眼珠一转,想出了一条“三度太子”的妙计。
675 |
676 | 第二天早上,悟空跳到空中,去看乌鸡国的动静,果然看见太子带着人马出城打猎,就变成了一只白兔,故意让太子射中,带着太子来到了宝林寺门前。但太子没看见白兔,只看见那支雕翎箭竟然直直地插在门槛上。
677 |
678 | 太子走进寺中,唐僧见了他说有三件宝贝要献,第一件是身上的袈裟,穿着他就知道太子有奇冤,父亲被妖怪害死。太子听了大吃一惊。接着,唐僧又让八戒,沙僧拿出两个盒子来,说这是另外两个宝贝。
679 |
680 | 八戒打开其中一个盒子,里面跳出悟空变成的一个二寸高的小和尚,自称是“立帝货”,能够知道前后一千五百年的事情。悟空又跳了几下,变成了原来的样子,把国王被害的经过详细讲了一遍,最后说∶“求雨道士是妖怪变的,是他害死你父亲,抢走了王位。”
681 |
682 | 唐僧见太子半唐僧见太子半信半疑,就叫沙僧把第二个盒子交给太子。
683 |
684 | 太子刚把盒子拿到手里,盒子就不见了,手里拿的竟然是那块白玉圭。太子终于相信了唐僧的话,求他帮忙除掉妖怪。于是悟空和太子一起,安排了第二天除妖降怪的计策。
685 |
686 | 得到唐僧的同意后,当晚,悟空骗八戒说是去偷宝贝。贪心的八戒就和悟空一起驾云来到了皇宫的后花园,移走芭蕉树,搬掉青石板,自告奋勇抓着悟空的金箍棒,小心翼翼地下了井。
687 |
688 | 八戒下到井里,井龙王把他请进水晶宫,并且准备了很多好吃的款待他。八戒说是来找宝贝的,井龙王笑着把他请进了一个亭子里,指着乌鸡国国王说∶“他就是宝贝,我用定颜珠保护了三年,所以尸体没有变坏。现在,你拿去立功去吧!”
689 |
690 | 八戒一看,不是金子,也不是银子,转身就走。井龙王连忙命令夜叉把尸体扔在八戒的身边。八戒只听见了一声水响,回头一看,水晶宫不见了。
691 |
692 | 悟空在井口问他找到宝贝没有,八戒一看尸体就在身边,便把事情都告诉了悟空。悟空让他把死国王背上井来。
693 |
694 | 八戒只好照办。二人把国王运回了宝林寺。八戒为了报复悟空,就建议师父用紧箍咒逼悟空救活死去的国王。悟空没有办法,只好驾云上天,来到兜率宫,求太上老君帮忙,太上老君看在他保唐僧西天取经的份儿上,就送给他一颗九转还魂丹。
695 |
696 | 悟空回到宝林寺,把还魂丹放到国王的口中,国王立刻被救活了,向唐僧磕头感谢他的救命之恩。悟空又想出了一条妙计,让国王化装成和尚,明天和他们一起去乌鸡国,拜见国王,当面揭穿妖魔的骗术。
697 |
698 | 第二天,他们五个人来到乌鸡国倒换关文,那假国王早就听说孙悟空的厉害,不想惹出事来,命令黄门官盖好印放他们走。太子心里明白,说∶“不接见他们,显得我们太没有礼貌。”假国王只好让唐僧他们上殿。唐僧师徒见到假国王,都不下跪行礼。
699 |
700 | 这下可气坏了妖怪,想找个借口整整他们。太子怕唐僧师徒吃亏,故意说关文上只写着四个人,现在是五个人,这第五个人来历不明,如果不讲清楚,就别想出乌鸡国。悟空连忙把国王的遭遇从头到尾讲了一遍。
701 |
702 | 妖怪见事情已经败露,就从镇殿武士手里夺过一柄大刀,露出原形,驾云就逃。悟空紧紧追上。两个人,你一棒,我一刀,直打得天昏地暗。渐渐地,那妖怪体力不支,想要逃走,又被悟空挡住去路,就转身逃回皇宫,竟变成了一个唐僧。
703 |
704 | 假唐僧拉住真唐僧在人群中一转,谁也分不清哪个是真的,哪个是假的。八戒想了一个办法,他和沙僧各抓住一个唐僧,叫师父念紧箍咒,不会念的一定是妖怪。悟空明知道难受,但是为了除妖,还是答应了。于是两个唐僧分别站在两边开始念咒。
705 |
706 | 八戒发现他抓的那个唐僧只会胡乱哼哼,就断定他不是师父,举起钉耙就打。妖怪跳到空中,和追赶上来的八戒、沙僧打在一起。孙悟空忍着头痛追上天空,正准备趁那妖怪不防备,一棒子要了他的命,这时文殊菩萨来了。
707 |
708 | 文殊菩萨是来帮悟空捉妖的。他取出照妖镜,那妖怪立刻露出了原形,原来是文殊菩萨骑的青毛狮子。文殊菩萨骑着狮子走了,国王大摆宴席招待唐僧师徒。第二天,唐僧他们告别了乌鸡国国王,继续西行。
709 |
710 | 第16回 火云洞菩萨收红孩
711 |
712 | 半个月后,唐僧师徒来到一座怪石成堆的大山前。这山的枯松涧火云洞里,住着一个叫做红孩儿的妖怪。他听人说吃了唐僧肉可以长生不老,就摇身一变,变成了一个七、八岁小男孩,光着身子吊在树梢上,高声喊“救命,救命!”。
713 |
714 | 唐僧见了,连忙让八戒救下红孩儿,并要让出自己的白马给红孩儿骑。
715 |
716 | 红孩儿借口吊得时间长,浑身疼痛,骑不成马。唐僧就让悟空背着红孩儿。
717 |
718 | 悟空怕师父念紧箍咒,背上红孩儿就走。心里想∶我倒要看看,他有多大的本事。
719 |
720 | 妖怪害怕悟空伤他,用了一个重身法,扔下一个假的红孩儿让悟空背,自己跳在空中。悟空气得火冒三丈,抓住假的红孩儿摔在路边的石头上。妖怪又用了一个法术,变成一阵旋风,刮得沙石乱飞,让人睁不开眼睛,趁机把唐僧抓回火云洞。
721 |
722 | 悟空叫来本地的山神,问清了红孩儿的来历和住处,就留下沙僧看守白马和行李,带着八戒来到火云洞前,要救师父。红孩儿命令小妖们推出五辆车子,按金、木、水、火、土排好,念了个咒语,顿时五辆车上火光四起。
723 |
724 | 八戒慌了,也不管悟空,自己跑到河对面。孙悟空本领高强,念着避火诀,闯到火里去找妖怪。可是浓烟滚滚,烈火飞腾,什么也看不见。他便决定先去东海请龙王来下雨,浇灭这场妖火,再救师父。
725 |
726 | 四海的龙王跟着悟空来到火云洞的上空。悟空在洞门前又叫又骂,引出红孩儿,和他打了起来。打了二十个回合,红孩儿见不能取胜,又放起火来。悟空急忙念咒,通知天上的龙王,顿时,大雨倾盆,“哗哗”地下了起来。
727 |
728 | 雨虽然大,却浇不灭妖怪的三昧真火,反而像火上浇油一样,越浇越旺。悟空闯到火里寻找妖怪,却被妖怪一口浓烟喷在脸上,熏得头晕眼花,分不清东南西北,一头钻到河里。谁知被冷水一激,弄得火气攻心,一口气没接上来,昏了过去。
729 |
730 | 八戒、沙僧救起悟空。幸好八戒曾经学过按摩禅法,按按这,揉揉那,好一会儿才把悟空救醒。悟空谢了四海龙王,与八戒、沙僧到松树林里坐下,商量去请观音菩萨,可是悟空腰酸背疼,浑身无力,驾不起云。八戒便自告奋勇去请观音。
731 |
732 | 红孩儿一直躲在云里寻找孙悟空,发现八戒驾着云,向南飞,想他一定是去请观音,就跑到八戒的前头,变成一个假观音。八戒果然上当了,跟着假观音来到火云洞捉拿妖怪。谁知刚到洞口,就被小妖们按倒在地,捆了起来。
733 |
734 | 悟空等了很久不见八戒回来,就到洞前打听。小妖们一见,举着刀枪前来抓他。悟空因为身体酸痛没有力气,不敢和他们打,就变成一个花布包袱,躲在路旁。小妖们找不到悟空。看见有个花包袱,就提到洞里,丢在一旁。
735 |
736 | 悟空忽然听见红孩儿吩咐两个小妖去请他的父亲牛魔王来吃唐僧肉。牛魔王是孙悟空在花果山时的结拜兄弟,模样他还记得,于是,拔了根毫毛变成了花包袱,自己则飞到洞外,变成牛魔王,在小妖的必经之路打猎。
737 |
738 | 那些小妖不能分辨真假,就把悟空当作牛魔王请到了火云洞。红孩儿拜见了父亲,说要杀唐僧吃肉,悟空说他这几天正在吃斋,还是过几天再杀吧!这下引起了红孩儿的怀疑,他找了个借口走到门外,询问小妖,知道详情后,心里更加怀疑。
739 |
740 | 红孩儿回到洞里,假装忘了自己的生日,要悟空告诉他。悟空哪里知道,让他明天去问他的母亲铁扇公主。红孩儿认定这个牛魔王是假的,便率领小妖们举刀枪,向悟空打来。悟空用金箍棒挡住,现出原形说∶“哪有儿子打老子的!”
741 |
742 | 悟空变成一道金光飞出妖洞,直接来到南海,拜见观音。把红孩儿抓走师父,冒充菩萨骗走八戒的事说了一遍。观音听了非常生气,将手中的玉净瓶丢到海里。不久,一只乌龟把净瓶托出水面,观音让悟空去拿瓶子,没想到悟空竟然拿不动。
743 |
744 | 观音告诉悟空,瓶中装着整整一海的水。她上前轻轻托起净瓶,让徒弟木叉到李天王那借来了三十六把天罡刀。观音把刀抛向空中,念了个咒语,那刀就变成了一座千叶莲花台。观音纵身跳了上去,驾云离开了南海。悟空和木叉紧紧跟在后面。
745 |
746 | 大约离火云洞四百多里的时候,菩萨停了下来,叫来山神和土地,让他们把周围三百里的野兽、昆虫都安排到山顶上。等一切都办妥了,她放倒净瓶,顿时眼前成了汪洋大海。菩萨又从袖里拿出定身禅,变成落伽山仙境。
747 |
748 | 菩萨在悟空的左手心上写了个“迷”字,让他把红孩儿引出来。悟空来到火云洞前,一棒子打坏了大门。红孩儿端着枪来打悟空。悟空拿金箍棒一挡,左手在红孩儿的脸前一晃,边打边退。红孩儿顿时着了迷,紧追不舍,来到观音跟前。
749 |
750 | 悟空躲到菩萨的背后。红孩儿找不到悟空,举枪向菩萨刺去。菩萨变成一道金光,带着悟空飞上九重天,莲花台却扔在原处。红孩儿得意忘形,学着菩萨的样盘腿坐进莲花台,不料莲花台的花瓣突然不见了,竟变成一把把锋利的尖刀。
751 |
752 | 红孩儿连忙忍着疼去拔刀子。菩萨念了个咒语,天罡刀都变成有带倒钩儿的,拔也拔不下来。红孩儿连忙求饶,菩萨问他是否愿意出家,红孩儿疼痛难忍,表示愿意出家,菩萨就封他为善财童子,接着用手一指,天罡刀自动掉在地上,红孩儿的身体完好如初。
753 |
754 | 红孩儿野性不改,拿起火枪又要刺菩萨。菩萨扔出五个金圈儿,一个套在脖子上,其它四个套在四肢,接着菩萨念动咒语,疼得红孩儿在地上乱滚。菩萨一停下来,红孩儿的头就不疼了,他拿起长枪又想刺菩萨。
755 |
756 | 菩萨用杨柳枝蘸了一点甘露洒过去,叫了声∶“合!”只见红孩儿双掌合在胸前,怎么使劲儿也分不开,没办法,只好低头下拜。菩萨让悟空赶快救出唐僧、八戒,好早些上路,然后带着善财童子回南海去了。
757 |
758 | 悟空告别了观音,找到沙僧,一起到火云洞把小妖们全部杀死,救出师父和八戒,一把火把火云洞烧成灰,然后跟着师父继续向西天走去。
759 |
760 | 第17回 龙太子黑河战鼍妖
761 |
762 | 走了一个多月,一天忽然听见“哗哗”的流水声,只见前面是一条望不到边际的大河,河中黑水相互撞击,卷起一朵朵浪花。师徒们正在发愁没法过河时,忽然看见一人驾着一艘小船,顺流而下。唐僧连忙让沙僧喊那小船靠岸。
763 |
764 | 那人把船划到岸边说∶“我这船小,一次不能把你们全都渡过去。”唐僧见船确实很小,只好分两次过河。八戒说∶“我和师父先过,然后是师弟和行李马匹,猴哥就自己跳过去吧!”商量好了,八戒扶着唐僧上了船。
765 |
766 | 船到了河中间,突然狂风大作,波涛汹涌。小船在巨浪中像一片树叶,忽隐忽现。一会儿,风平浪静,只是小船已经找不到踪影。沙僧要到下游去找师父,悟空说∶“如果是翻了船,八戒水性那么好,早该背师父上来了!
767 |
768 | ”
769 |
770 | 悟空认定师父和八戒是被妖怪拖下水去了。沙僧觉得有理,就下水去救师父,只见他跳进水里,念着避水咒,大踏步地向水底走去。没走多久,衡阳峪黑水河神府就出现在眼前。
771 |
772 | 沙僧偷偷躲在府外,听见里面有人说∶“你们把蒸笼抬上来,把那两个和尚给蒸了。你呢,去请我舅舅。”沙僧一听,火冒三丈,举起降魔杖,一边打门一边叫∶“快放我师父、师兄出来!”守门的小妖连忙跑回去报告老妖。
773 |
774 | 老妖一听,怒上心头,手里拿着钢鞭走出门来大声问道∶“谁敢打我的大门?”沙僧要他赶快放了师父,妖怪竟要把沙僧抓住一块吃了。两个人就在水底打了起来,三十多个回合仍不分胜负。沙僧决定把妖怪引出水面,叫悟空打他。
775 |
776 | 沙僧假装败下阵来,可是妖怪并不追赶,回府去了。沙僧没有办法,只好跳出水面,把水下发生的事告诉悟空。“这妖怪的舅舅是谁呢?”悟空自言自语。谁知话音未落,黑水河神就从旁边的小水沟里走出来,见了悟空低头就拜。
777 |
778 | 河神告诉悟空∶“妖怪是去年涨潮时从西海来到黑河的,他用武力霸占了衡阳峪黑水河神府。我年老体衰,打不过妖精,就到西海去告他,谁知西海龙王敖顺是他的舅舅,不准我告。我想到玉帝那告,但是因为官职太低,见不到玉帝。”
779 |
780 | 悟空听完,决定去找西海龙王。他一个筋斗云来到西海,念着避水咒走入水中。忽然他看见一个黑水鱼精拿着一个金盒子从他身边跑过,心里明白是从黑水河来的,就一棒子把黑水鱼精打死。
781 |
782 | 悟空打开盒子,见里面放着妖怪请敖顺去吃唐僧肉的请帖。悟空连忙把请帖放到怀里,得意地说∶“敖顺呀!敖顺,证据让我老孙拿到了?”这时,已经有巡逻的夜叉把悟空来到的消息报告给西海龙王,龙王领着虾兵蟹将出宫相迎。
783 |
784 | 龙王请悟空进水晶宫去喝茶,悟空拿出那张请帖递给龙王说∶“我不喝你的茶,我来喝你的酒了。”龙王一看大吃一惊,慌忙给悟空跪下请罪。原来那妖怪是敖顺的第九个外甥小鼍龙,父母都已死了,龙王就让他在黑水河暂时住下。
785 |
786 | 龙王怎么也没有想到外甥的祸竟惹到孙悟空的头上,连忙让太子摩昂带领五百龙兵捉拿鼍龙。接着他又要安排酒菜,给悟空赔礼。悟空救师心切,告别了龙王和太子摩昂一起离开了西海。
787 |
788 | 来到黑水河,摩昂太子请悟空在岸上等着,自己带着龙兵在黑水河神府前安营扎寨,然后派兵通知小鼍龙。鼍龙知道后心里觉得奇怪∶明明是请舅舅为什么表兄来了?来就来吧,为什么还要带兵?”
789 |
790 | 鼍龙害怕出事,带领小妖,拿着钢鞭来到太子面前。摩昂太子劝他赶快把唐僧、八戒放了,妖鼍不但不听,反而大骂太子。太子一气之下,和妖鼍打了起来。双方的鱼兵虾将也动起手来。一场混战,直打得是天昏地暗。
791 |
792 | 摩昂太子见无法取胜,就用了一个计策,故意露出一个破绽。妖鼍以为有机可乘,一头钻了进去,摩昂猛地转身一下子把妖鼍打倒在地。龙兵们一起冲上前去,把妖鼍五花大绑,押到岸上。
793 |
794 | 太子请孙悟空惩治小鼍龙。悟空看在敖顺和太子摩昂的情面上,饶了小鼍龙的性命,问唐僧和八戒被关在哪里。小鼍龙说他们还被捆在黑水河神府里,沙僧立刻在河神的带领下,到神庙去救师父和八戒。
795 |
796 | 不一会儿,河神和沙僧分别把唐僧、八戒背上岸来。摩昂太子也押着小鼍龙回西海去见龙王。河神为了感谢悟空帮他夺回神府,施展法术,把上流的水挡住,在河床底开出一条大路。于是,师徒四人过了河,又向西天走去。
797 |
798 | 第18回 车迟国斗法除三妖
799 |
800 | 师徒四人冒着大雪,顶着狂风,不畏艰辛,日夜赶路,初春时来到车迟国地界。忽然听见一声吆喝,好像有很多人在呐喊一样,唐僧害怕,勒住马不敢往前走。悟空说∶“让我老孙去看一看!”说完跳到空中,驾上筋斗云向前飞去。
801 |
802 | 原来是一个道士监押着一群和尚在干活。悟空变成一个路过的小道士向那道士打听,才知道二十年前车迟国大旱时,来了虎力、羊力、鹿力三个道仙,和这里的和尚比试求雨的本领,结果道士赢了,被国王封为国师,从此便奴役着全国的和尚。
803 |
804 | 悟空又问了和尚,和尚说的和道士一样,并说天上的神仙在梦中告诉他们,只有等唐僧的大徒弟孙悟空来了,才能救他们。孙悟空听了心里得意,一棒子打死了道士,露出了本来的模样,放走了大多数和尚,领着本城十个和尚来见唐僧,说明了情况。
805 |
806 | 当晚,他们住进城里的智渊寺。半夜,悟空叫上八戒、沙僧驾云来到三清殿上空,只见那三个道士正在念经。悟空有意捉弄道士,用了个法术,吹口仙气,变成一阵狂风刮进三清殿,吹倒了香烛油灯。
807 |
808 | 道士吓得回房睡觉去了,悟空三人下了祥云,来到正殿,把神台上的三座神像推倒藏到后花园,三人分别变成元始天尊、太上老君、灵宝道君的样子,并把桌子的供品吃得一干二净。一个小道士听到声音走进大殿,吓得撒腿就跑。
809 |
810 | 虎力、羊力、鹿力三个妖怪知道后,让人点上蜡烛来到正殿,没见有什么奇怪的东西,以为是三位神仙下凡,就一块跪倒磕头,求神仙能给些圣水和丹药。悟空觉得好笑,想进一步捉弄他们,让他们找些东西来装圣水。三个妖怪争先恐后地搬来缸、砂钵和花瓶。
811 |
812 | 悟空借口神仙之事外人不能看,让道士们出去并关上门。过了一会儿,才让他们进来拿圣水。道士们进殿一看,见缸里、钵里、瓶里都有,当即磕头谢恩,然后各自拿茶盅舀了一杯喝下,觉的有股尿臊气,才知道上当受骗。
813 |
814 | 第二天,唐僧师徒来到皇宫倒换关文,三个妖怪一见他们送上门来,就把他们打死小道、假装神仙的事告诉了国王。悟空却不承认是自己干的碰巧这时很多百姓在宫门前请求国师作法求雨,国王就让唐僧和国师比赛,看谁能求下雨来。悟空马上答应了,虎力道士让悟空和他一起上神坛,悟空说∶“那把雨求来了,算是谁的功劳呢?”虎力只好一个人登上神坛。
815 |
816 | 虎力披头撒发拿着剑,一边念咒一边烧纸,第一声令牌响了后,空中就有了风。悟空见他有些真本事,就跳到空中,让正在刮风的风婆和巽二郎马上停止,又让云童雾郎、雷公电母在一旁休息,等他的命令。
817 |
818 | 虎力大仙见风又停了,感到奇怪,打响第四声令牌,叫来四海龙王。悟空连忙把情况告诉他们,让四海龙王一滴雨也不要下。事情安排好后,悟空返回地面,正好碰上国王问虎力为什么没有下雨,虎力撒谎说龙王不在家。
819 |
820 | 悟空说∶“还是看我的吧!”
821 |
822 | 悟空陪唐僧登上神坛,让唐僧只管打坐念经,自己按事先约好的信号,晃动金箍棒,立刻狂风大作,乌云满天,电闪雷呜,大雨倾盆,整整下了三个时辰。百姓们高声欢呼,国王也连连点头,笑着说∶“够了,够了,再下就多余了。”
823 |
824 | 悟空听了,把金箍棒朝天一指,顿时乌云散去,天又晴了。国王很高兴,马上给唐僧倒换关文。虎力大仙不服气,要和唐僧比赛坐禅,唐僧最擅长坐禅,就立刻答应了。
825 |
826 | 皇宫前,两边各用五十张桌子,架起两座禅台。虎力大仙驾云到西边台上坐下,悟空变了一个假身站在殿前,自己驾云把师父托到东边台上。坐禅的时间定为四个时辰。鹿力大仙拔根短发,变成臭虫,弹到唐僧的脑袋上,咬得唐僧又疼又痒,十分难受。
827 |
828 | 悟空见师父不对劲儿,就变成一只小鸟飞到唐僧头上,知道是妖怪作怪,就一口咬死了臭虫,又飞到西边台子上,变成一条七寸长的毒蜈蚣,在虎力大仙的鼻子上猛咬一口。虎力立刻昏倒,身子一歪,一个跟头掉下高台。
829 |
830 | 虎力大仙虽然没有摔死,但也鼻青脸肿的,被送到宫里养病。鹿力大仙要为兄长报仇,要求和唐僧比隔着木板猜东西的本领。国王听了他的话,让人把一个红漆柜子抬到宫里,命娘娘放进去一件宝贝,然后抬到殿前让鹿力大仙和唐僧猜。
831 |
832 | 悟空变成一只小虫,钻到柜子里,见柜里放着一套宫服。悟空把宫服撕烂,变成袈裟,然后钻出柜,悄悄告诉唐僧。比赛结果当然是唐僧赢了。可是国王不服气,亲自将一个大蜜桃放到柜里,让鹿力大仙和唐僧再猜。
833 |
834 | 悟空又钻到柜里,吃掉桃子,把桃核儿放在盘中。猜的结果让国王非常吃惊,以为有神仙暗中帮助。鹿力大仙不服气,把柜子推到后殿,藏进去一个道童。悟空又钻到柜子里,变成鹿力大仙的样子,骗道童说是为了赢和尚,把道童的头发剃掉。
835 |
836 | 悟空又把道童的道服变成和尚服,拔根毫毛变成木鱼,让他拿着。比赛的结果让妖怪丢尽了脸。虎力大仙很不服气,又要和悟空比砍头、剖腹、下油锅的本领。悟空艺高人胆大,情愿被绑,先挨这一刀。
837 |
838 | 刽子手一刀把悟空的脑袋砍下,并踢得四、五丈远。悟空肚子里喊着“头来”。那鹿力大仙立刻念动咒语,让土地神把悟空的头按住。悟空一急,挣断绳子,喊了声“长”,“嗖”的一声,竟然从肚子里又长出一个头来。
839 |
840 | 该砍虎力大仙的头了。刽子手砍下头后,只轻轻地把头踢了一丈多远。
841 |
842 | 悟空拔了根毫毛,变成一只黄狗,叼起头,跑到河边,扔到水里。虎力大仙连喊三声不见头来,大叫一声,血从脖子里喷了出来,一命呜呼。大家一看,原来是一只老虎。
843 |
844 | 国王知道后大为吃惊,鹿力大仙忍着悲痛,要和孙悟空比剖腹的本领。
845 |
846 | 悟空毫不害怕,往柱子前一站,看着刽子手把肚子剖开,然后旋展法术,叫了声“合”,肚子又变得和原来一模一样,连个刀痕也没有。
847 |
848 | 当鹿力大仙的肚子被剖开后,悟空拔了根毫毛,变成了一只老鹰直飞下来,伸出铁嘴,一口咬住鹿力大仙的五脏,展翅飞向高空。鹿力大仙立刻丢了性命,露出原形,原来是一只白毛角鹿。惊得文武百官都张大了嘴。
849 |
850 | 羊力大仙要和悟空比下油锅。悟空二话不说,纵身跃入滚滚油锅之中,翻筋斗,打倒立,像在水里一样,把猪八戒都看乐了,手舞足蹈,不停地叫好。悟空想逗逗八戒,变成一枚钉子,沉到锅底。
851 |
852 | 所有的人都以为孙悟空死了。国王命人把唐僧、八戒、沙僧捆起来,扔到油锅里。八戒急了,直骂死猴子连累了他。悟空听得一清二楚,突然从油锅中跳起来。监斩官怕犯欺君之罪,说是灵魂出现,气得悟空一棒子把他打成肉酱
853 |
854 | 羊力大仙也真有点本事,竟然叫来一条冷龙保护他,锅下虽然是熊熊大火,锅里的油却是凉的。悟空连忙跳到空中,让北海龙王收走锅底的冷龙。
855 |
856 | 羊力大仙立刻倒在油锅之中,露出了原形,大家一看,原来是一只羚羊。
857 |
858 | 国王知道后,哭得跟泪人一样。悟空劝他∶“有什么好难过的,他们是妖怪,想来霸占你的国家!”国王这才止住哭声,准备了素宴感谢唐僧师徒,并放了那些做苦力的和尚。第二天,唐僧师徒告别了国王,继续西行。
859 |
860 | 第19回 通天河观音现鱼篮
861 |
862 | 时间过得很快,不知不觉到了秋天。一天黄昏,他们来到一条白茫茫的大河前,河边石碑上刻着“通天河”三个大字,下面有两行小字,意思是这条河宽八百里,很少有人能够渡过。因一时无法过河,他们就商量先找个人家住下,明天再想办法。
863 |
864 | 他们顺着远处的锣鼓声来到一个村庄,看见一户人家门前挂着斋戒的旗,就想去住上一个晚上。庄主陈清一见悟空、八戒、沙僧,吓得直喊∶“妖怪来了!妖怪来了!”唐僧忙说∶“别怕,他们是我的徒弟,长得虽然丑,但都是捉拿妖怪的能手!”
865 |
866 | 进到客厅,见了陈清的哥哥陈澄,唐僧问他们为什么要斋戒。陈氏兄弟哭着告诉唐僧,通天河边有座灵感庙,庙里有个灵感大王,每年要吃一对童男童女。如果不献上就要发大水淹了这里。今年轮到陈家兄弟献童男童女了。
867 |
868 | 悟空让陈清把他八岁的儿子陈关保带出来,也摇身变成一个陈关保,连陈氏兄弟也分辨不出真假。接着悟空又让陈澄把他十一岁的女儿叫出来,硬逼着八戒变成小女孩,八戒没有办法,只好变,结果肚子又肥又大,不像个女孩。
869 |
870 | 悟空吹了口仙气,把八戒的肚子变小。悟空说∶“我兄弟二人替他们去灵感庙,你看怎么样?”陈氏兄弟连忙跪下感谢他们的大恩大德。然后让人拿出两个大盘子,找了四个青年,把悟空、八戒抬到灵感庙。陈氏兄弟摆好供品,烧完纸就回去了。
871 |
872 | 不一会儿刮来一阵狂风,从中跳出一个妖怪,伸手要抓八戒。八戒急了,跳下供桌,露出原形,拿起钉耙就打。只听“”的一声,打下几片冰盘大小的鱼鳞,妖怪转身跳到空中。悟空也现了原形,和八戒驾云追去。
873 |
874 | 当那妖怪听说对手是孙悟空时,慌忙变成一阵狂风,钻进了通天河。悟空估计那是河里的妖怪,就和八戒驾云回到陈家庄,把打败妖怪的事给唐僧和陈家二老说了一遍,大家都很高兴。
875 |
876 | 那妖怪逃回水下的宫中,垂头丧气,他想吃唐僧肉,又害怕孙悟空。一个斑衣鳜婆出了个主意∶“大王有呼风唤雨、降雪结冰的本领,今晚可以把通天河全部冻住,然后……”鳜婆在妖怪耳边低声说了一阵,说得那妖怪心花怒放。
877 |
878 | 那妖怪当晚就施展法术,把通天河全部冻了起来。唐僧听说后,就和徒弟们来到河边,看见不少人踩着冰到西梁女国做买卖。八戒举起钉耙朝河面使劲打去,只打出了九个白色的痕迹,转身对师父说∶“看来连河底都冻住了。”
879 |
880 | 唐僧急着取经,连忙回陈家庄收拾东西。陈氏兄弟很快给他们准备好干粮,又用稻草把马蹄包住,以免滑倒。唐僧师徒四人从上午一直走到黄昏,都没有走过河。
881 |
882 | 那妖怪见机会已经到了,就念动咒语,顿时水面上的冰全都化了,唐僧、八戒、沙僧还有白龙马全落入水中。悟空眼快,急忙跳到天空。八戒和沙僧都会游泳,妖怪不敢动他们,唯独把唐僧抓住,抢到水府里去了。
883 |
884 | 八戒、沙僧捞起行李,牵着白马,念着避水咒跳出水面,和悟空会合。
885 |
886 | 悟空料定师父是被灵感大王抓去了,就和两位师弟商量下水除妖。沙僧提出三个人一起去,愿意背着悟空下水。八戒平时常被悟空捉弄,这时却也主动提出要背悟空。
887 |
888 | 原来八戒也想捉弄悟空。不料悟空早有防备,拔了根毫毛变成假身趴在八戒的背上,自已变成一个臭虫,叮在八戒的耳朵里。八戒故意摔了一跤,藉机松手甩掉悟空。假身是一根毫毛变的,飘了起来,立刻无影无踪。
889 |
890 | 沙僧一看大师兄不见了,不停地埋怨八戒。悟空觉得好玩,在八戒的耳朵里高声喊∶“呆子,我在这里!”吓得八戒连忙跪在河底磕头求饶。悟空这才恢复了原样,仍趴在八戒的背上,让八戒背着一起向前走。
891 |
892 | 他们来到妖怪的住处,发现门外没有水。于是悟空变成一个长脚虾精婆,跳到门里,只见那个妖怪和斑衣鳜婆正在商量怎样吃唐僧肉。他找不到师父,就来到后宫,发现唐僧在一个石洞中,就上前安慰师父。
893 |
894 | 悟空从原路出来,见到八戒、沙僧,让他俩把妖怪引出水面,自己到水上等着。八戒、沙僧按照计策,到洞门前大喊大叫,引出妖怪,并打了起来。不料,那妖怪的一对铜锤十分厉害,三人打了两个时辰,仍不分胜负。
895 |
896 | 八戒、沙僧假装战败,逃出水面,冲着悟空大喊∶“来了!来了!”不一会儿,妖怪果然追了出来,悟空举起金箍棒迎面就打。妖怪闪身躲过,举起双锤还击。还没打到三个回合,妖怪招架不住了,一口气沉到水底。
897 |
898 | 妖怪回到洞中,害怕悟空打上门来,让小妖把门关上,用石头、泥块把门堵死,果然不出所料,八戒、沙僧又来到洞前。八戒张口大骂,可是半天也不见那妖怪出来,就几耙把门打烂,但里面都是些石头、烂泥,根本不能进去。
899 |
900 | 八戒、沙僧只好返回岸上告诉孙悟空。悟空害怕师父被妖怪吃了,连忙驾云来到落伽山,直接飞到普陀岩上。善财龙女告诉悟空观音一个人进紫竹林了,知道他要来,让他在这里等着。悟空正等得不耐烦时,观音手里提着一个紫竹篮走出竹林。
901 |
902 | 观音让悟空在前面带路,不一会儿来到了通天河。观音解下腰带绑住竹篮,放入河中,口里念动咒语。不一会儿提起竹篮,只见竹篮里有一条放着光芒、活蹦乱跳的金鱼。
903 |
904 | 原来,这妖怪是观音莲花池里养的金鱼,趁海水涨潮偷偷溜到这里,兴风作浪、危害百姓。观音提着竹篮回到南海后,八戒、沙僧再次入水,只见水中的鱼精水怪都已经死了,他们找到后宫,打开石洞,背着唐僧钻出水面。
905 |
906 | 陈家庄的人都很感谢他们。悟空正让他们准备船只,只见河中钻出一只老龟,说∶“为了感谢大圣赶走妖怪,我送你们师徒过河。”原来,那个水洞是老龟过去的住处,九年前被妖精霸占。悟空自然十分高兴,连忙请师父等人踏上龟背。
907 |
908 | 第20回 金兜洞老君收青牛
909 |
910 | 过了河,老龟请唐僧到西天见到如来佛祖时,问一声他什么时候能够变成人的模样。唐僧满口答应,告别了老龟,继续向西天走去。一天,他们走进一座险峻的高山,隐约看见山上有许多房子。
911 |
912 | 又走了一段路,唐僧肚子饿了,让悟空去找些吃的。悟空跳到空中,见山中有一团团的黑气,就回到地面,用金箍棒在地上画了个圆圈,让师父、八戒、沙僧和白马都坐到圈里,说这样妖怪就不能伤害他们了。
913 |
914 | 唐僧他们坐在圈子里等了很久,就不耐烦了。八戒不满地说∶“师父,我们不如顺着路再往西边走,师兄能腾云驾雾,会赶上我们的。”唐僧觉得有道理,就让沙僧挑上行李,一直往前走,来到那些楼台跟前。
915 |
916 | 唐僧和沙僧在墙外坐着休息。八戒见大门没锁,就好奇地走进大厅,发现里面一个人也没有。他东走走,西逛逛,来到了楼上,看见一个房间里挂着一顶黄绫帐子,桌上放着三件纳锦背心,就把它们揣在怀里,喜滋滋地下楼了。
917 |
918 | 唐僧见八戒随便拿了别人的东西,很不高兴。八戒强词夺理说∶“这衣服又没有主人,天气凉了,正好给我们御寒。”说着就沙僧穿在身上。不料那背心突然变成了绳索,把他们紧紧捆住。原来,这楼阁是妖怪变的。
919 |
920 | 小妖们把唐僧三人抓到洞里,要吃长生不老的唐僧肉。八戒大声喊∶“我师兄是五百年前大闹天宫的齐天大圣,谁敢吃我们,他就饶不了谁!”,妖怪一听果然害怕了,让人把唐僧他们抓到后洞,等收拾了孙悟空后再吃。
921 |
922 | 悟空化斋回到原处找不到人,猜想一定是他们走出圈子,被妖怪抓走了。就叫来本地的山神和土地神,一问才知道抓走师父的是金山金洞的独角兕大王。于是悟空来到金洞前,大骂妖精有眼不识泰山,要他赶快把师父、师弟放了。
923 |
924 | 妖怪硬着头皮出洞迎战。妖怪打不过悟空,就让小妖们一起上。悟空跳到山顶,把金箍棒扔到空中,变成一根巨棒向妖怪们砸去。小妖怪吓得大叫∶“撑天的柱子倒下来了!”四处逃命。那妖精一见,取出一个圈琢儿抛向空中,套走了金箍棒。
925 |
926 | 金箍棒被妖怪收走,悟空没了兵器,只好来到天宫,求玉帝查问那妖怪的来历。玉帝命韩真君陪悟空查遍天上所有的神仙,一个也不少。于是悟空请李天王、哪吒以及邓化、张蕃二个雷公下凡捉拿妖怪,玉帝答应了。
927 |
928 | 来到金山上空,李天王让哪吒去打先锋。那妖怪提着枪跳出洞来,对着哪吒就刺。哪吒挥着斩妖宝剑,变成三头六臂;妖怪也变成三头六臂。哪吒又施展法术,扔出砍妖剑、斩妖刀、缚妖索、风火轮,说了声“变”,顿时满天兵器,向妖怪打去。
929 |
930 | 那妖怪又拿出金圈琢儿,把满天的兵器都套走了,哪吒和邓化、张蕃二雷公连忙转身逃走。悟空和李天王决定请火德星君用火来烧金圈琢儿。悟空驾云进了南天门,来到彤华宫,火德星君听悟空说明来意后,立刻一同前往。
931 |
932 | 火德星君跟悟空来到金山。李天王让火德星君藏在山石后面,自己来到洞门前,讨敌骂阵,等那妖怪一出来,李天王举起神刀向妖怪砍去,两人刀来枪往,打在一起,没多久,妖怪打不过李天王,又拿出金圈琢儿,李天王一见,赶忙逃走。
933 |
934 | 火德星君乘机放出天火。顷刻间,火焰四起,金山变成一片火海,把妖怪困在中间,妖怪不慌不忙地把金圈琢儿向烈火扔去,只听见“哗啦”一声,那些火龙火马、火刀火箭,连同火德星君的火器全被金圈琢套了进去,只剩下火德星君一个人可怜的站在空中。
935 |
936 | 悟空从乌浩宫请来水德星君的属下黄河水伯。黄河水伯用玉瓶装来了全部的黄河水,朝金洞倒去,妖怪退到洞里,用金圈琢儿挡住石门。那黄河水倒着流出来,立刻漫山遍野全都是水,金山就像大海中的一个小岛。
937 |
938 | 悟空见洪水对妖怪也起不了作用,忙叫水伯把水收回。妖怪看见悟空没有兵器,就提出和悟空比拳。于是两个人就在洞前你一拳、我一脚对打起来。哪吒等神将一心想抢回自己的兵器,纷纷前来帮助悟空。
939 |
940 | 悟空乘机拔下几根毫毛咬碎喷向空中,变成几十只小猴,把妖怪围在当中,妖怪慌了,急忙扔出金圈琢儿,把那些小猴全部收走了。神仙们认为那个金圈琢太厉害,一致推选孙悟空溜进洞里把金圈琢儿偷出来。
941 |
942 | 悟空变成一只苍蝇从门缝里钻进洞,看见妖怪正和小妖们庆祝胜利,就四处乱飞寻找那金圈琢儿,突然发现被妖怪套来的兵器都放在后洞,心中很高兴,连忙飞了过去,抓住自己的金箍棒,现出原形,一路打了出去。
943 |
944 | 悟空从后洞打到前洞,又从前洞打到洞外。妖怪追出洞,和悟空在山前打了起来,直打得天昏地暗,日月无光。妖怪到底没有悟空厉害,渐渐体力跟不上,逃回洞中。悟空把洞里的情况告诉天将,说要再进洞偷那金圈琢儿。
945 |
946 | 悟空再溜进洞时,妖怪已经呼呼地睡着了。悟空见那金圈琢儿正紧紧圈在妖怪的左胳膊上,不好下手,就变成一只臭虫,在妖怪戴圈儿的地方连咬几口。妖怪又疼又痒,却不肯取下金圈琢儿,反而把圈儿往上戴了戴,翻个身又睡了。
947 |
948 | 悟空没有办法,偷偷来到后洞,现出原形,准备把天将们的兵器偷走。
949 |
950 | 他先把被妖怪套来的小猴放出,让他们拿着所有的兵器,自己则解下火龙火马,在后洞放起火来。立刻浓烟滚滚,山洞成了火窑。
951 |
952 | 妖怪被惊醒,看到这情景大吃一惊,急忙取下金圈琢儿把大火套走,再一数小妖,只剩三分之一,而且夺来的兵器都不见了。他断定是孙悟空干的,气得火冒三丈,咬牙切齿,发誓一定要找孙悟空报仇。
953 |
954 | 悟空回到山顶,把武器还给众仙。这时天已经亮了,哪吒出了一条计策∶“趁现在妖怪吃了败仗,我们一齐动手,就能抓住他。”天将们都点头表示同意,一起冲到洞前讨战。妖怪立刻提上大枪,跳出门外,对着悟空就扎。
955 |
956 | 哪吒扔出他的全部兵器;火德星君放出火龙、火马;雷公连打几个天雷。立刻,天上的兵器像雨点一样落下;地上的火焰足有三、四丈高;空中则是一道道闪电。妖怪不慌不忙,扔出金圈琢,把所有的兵器连同悟空等人手里的武器全部都套走。
957 |
958 | 天将们又两手空空,后悔不该这么莽撞。悟空只好去西天请如来佛祖帮忙查那妖怪的来历。悟空把事情向如来佛说了一遍,如来命十八罗汉拿了十八粒金丹砂,和悟空一起前去捉拿妖怪,临走前又专门给降龙、伏虎两罗汉低声叮嘱了几句。
959 |
960 | 悟空领着罗汉们来到金山。大家商量仍要悟空去引妖怪。悟空把妖怪引到南山坡,罗汉们立刻撒下金丹砂,马上黄沙铺天盖地,把妖怪陷到当中。不料妖怪又把那圈儿扔出,呼的一声,十八粒金丹砂全都不见了。
961 |
962 | 神仙们见了目瞪口呆。降龙、伏虎两罗汉说,临走前如来吩咐最后可以找太上老君帮忙查那妖怪的来历。悟空就驾着筋斗云来到离恨天,问太上老君那妖怪是哪里来的,太上老君闭口不答,悟空只好闯入兜率宫中到处乱找。
963 |
964 | 忽然他发现牛栏边一个童子在打瞌睡,青牛却不见了,就叫来太上老君。老君一看大吃一惊,说∶“难道是这个畜生下凡成妖?”急忙叫童子数一数宫中的宝贝,发现少了金刚圈儿,于是断定那妖怪就是自己的青牛。
965 |
966 | 太上老君带上芭蕉扇来到金山,仍然叫悟空把那妖怪引出来。那妖怪被悟空引到山峰下,忽然听到山峰上有人喊∶“青牛,赶快跟我回去!”妖怪一见是主人到了,吓得转身就想逃。
967 |
968 | 太上老君念了一个咒语,用扇子一扇,妖怪慌忙把金圈琢儿扔出来,太上老君一把接住,又用扇子一扇,妖怪立刻浑身酸软,现了原形,原来是一头青牛。太上老君用金圈琢儿穿了那牛的鼻子,牵在手里。
969 |
970 | 太上老君骑着青牛回离恨天了。悟空和天将们打入金洞,一齐把小妖们打死,拿回各自的兵器,救出唐僧、八戒和沙僧。天将们告别唐僧,回天上交差去了。唐僧师徒收拾好行李马匹,沿着西去的山路,缓缓而行。
971 |
972 | 第21回 女儿国唐三藏奇遇
973 |
974 | 这一天,唐僧师徒四人来到一条清澈见底的河边,摆渡的老婆婆把他们送过河后,唐僧口渴,要八戒到河中舀了碗水喝。八戒也渴了,就一头扎进河里,喝了个痛快。不料半个小时以后,唐僧和八戒的肚子疼了起来。
975 |
976 | 悟空决定就近找个村庄住下,弄些热水或草药,让师父喝了治病。不久,他们来到了一个村庄,不料村里的老婆婆听悟空说了唐僧肚子疼的原由后,竟然笑了起来,跑着喊道∶“看呀!有两个男的喝了子母河的水了!”不一会儿就来了一大群女人。
977 |
978 | 悟空到处打听,才知道这里是女儿国,没有男人。女人长到二十岁,就去喝子母河的水,三天后就可以生下一个女孩。唐僧、八戒听了连声叫命苦,老婆婆笑着说∶“别急,解阳山聚仙庵有一眼落胎泉,喝了那泉水就没事了。”
979 |
980 | 悟空问清了那泉水的位置,驾云来到解阳山,向庵主如意真仙讨取泉水。不料如意真仙一听“孙悟空”三个字就火冒三丈。原来他是火云洞红孩儿的叔叔,怪悟空不该收服他的侄子给观音做善财童子,不管孙悟空怎么解释他就是不听,坚决不给泉水。
981 |
982 | 悟空一气之下就和他打了起来,没几个回合如意真仙就败下阵来。悟空并不追赶,到庵里找到泉眼,拿着桶就要打水。没提防如意真仙从背后溜过来,拿如意钩把悟空的腿勾住,用力一拉,悟空摔了一个狗吃屎。
983 |
984 | 悟空爬起来见那家伙已经溜走,也不去追,左手拿着金箍棒,右手去打水。不料如意真仙又跑来,把井绳勾断后又逃走了。悟空没时间和他捉迷藏,决定去把沙僧找来帮助取水,主意打定后,翻上筋斗云便离开了聚仙庵。
985 |
986 | 悟空叫来沙僧,自己缠着如意真仙打,让沙僧到井里取水。沙僧打了满满一桶井水,驾着云,对悟空喊∶“师兄,水已经拿到了,饶他一条狗命吧!”可是如意真仙不肯停手,悟空不得已只好一棒把他打倒,将如意钩折断。
987 |
988 | 悟空饶了如意真仙,和沙僧驾云赶回村子。唐僧和八戒喝下泉水,肚子响了一阵,病就好了。第二天,他们来到女儿国皇城,只见街上全是女子,一见他们都纷纷围上来看稀奇。八戒一急露出原来的面孔,吓得女人们惊叫着跑开。
989 |
990 | 好不容易他们才走进驿馆。一位女官问明他们的来历后,就要安排他们住下。自己立即进宫向女王报告。女王听说唐僧长得相貌堂堂,决定让唐僧做国王,自己当王后,打发三个丑徒弟去取经。
991 |
992 | 女王让太师作媒人,到驿馆向唐僧求亲。唐僧一口拒绝,悟空却说∶“师父,女王既然有诚意,您就留下来吧!”一边说一边向师父使眼色。太师见唐僧低着头不说话,以为他已经答应了,就告辞回宫报告女王去了。
993 |
994 | 唐僧埋怨悟空不该胡说八道,悟空说∶“嘿嘿!如果不答应这门亲事,女王一定不肯换关文,所以只有用假亲脱网的计策。”接着又细细解释了一番。唐僧听了恍然大悟,八戒、沙僧也不住的称赞∶“好计策!好计策!”
995 |
996 | 不一会儿,女王坐着龙车,亲自前来迎亲。唐僧连忙带着徒弟们出门迎接,女王扶着唐僧,拉他一起坐上龙车,要回宫举行成亲仪式。唐僧拉住悟空不放,悟空使个眼色说∶“请师父、师娘赶快回宫,给我和师弟倒换关文吧!”
997 |
998 | 龙车驶进了皇宫,女王满脸笑容,扶着唐僧前去赴宴。机会难得,八戒放开肚皮吃了个痛快,吃饱喝足后,他又按悟空教他的大叫∶“如今娶的娶了,嫁的嫁了,取经的还得赶路,请女王快给我们换关文吧!”
999 |
1000 | 女王立刻上殿,看过关文、盖了大印,递给悟空。悟空接过后,起身告别。唐僧对女王说∶“陛下,我想请您陪我送他们出城,再嘱咐他们几句,以表我这做师父的一点情意。”女王立刻传令准备龙车,前去送行。
1001 |
1002 | 龙车出了西城门,唐僧走下龙车,回头拱手说∶“陛下请回去吧,贫僧取经去了!”女王大惊,拉住唐僧的衣袖叫道∶“御弟哥哥,喜酒都吃过了,怎么又变卦了!”八戒拉开女王,沙僧连忙扶师父上马。
1003 |
1004 | 文武百官见状一拥而上,要来阻拦,悟空正要念咒语用定身法定住他们,忽然一阵狂风,空中落下来一个女子,拦腰抱起唐僧,冲上云霄,转眼不见了。悟空知道是个妖怪,急忙跳上云头,紧紧追赶那团烟尘。
1005 |
1006 | 八戒、沙僧牵了白马腾云去追。兄弟三个追到一座高山前,那团烟散了,他们就降下云头,到处寻找,终于在一个悬崖下面发现两扇石门,上面写着“毒敌山琵琶洞”。悟空说让他先去摸摸情况。
1007 |
1008 | 悟空把身子一晃,变成一只蜜蜂飞进洞中。见当中的亭子里坐着个女妖,拿着一个包子在劝师父吃。师父脸色发黄,像是中了毒,闭着嘴不肯吃那包子,女妖说∶“你和我在这做夫妻,比在女儿国里更自由自在。”
1009 |
1010 | 那女妖又做出很多不庄重的样子想挑逗唐僧,悟空实在看不下去,露出了原形,举起金箍棒就打。女妖从口中喷出一团烟火,罩住亭子,唐僧立刻就不见了。接着她才举叉朝悟空打来。悟空边打边退,把女妖引向洞外。
1011 |
1012 | 出了琵琶洞,八戒、沙僧各自举着兵器来打女妖,女妖一见不是对手,口中喷出一股浓烟,把身体一侧,从屁股上伸出一条像九节钢鞭的东西,朝悟空头上砸去。悟空疼得大叫一声,转身就跑。八戒、沙僧见情况不妙,也跟着悟空败下阵来。
1013 |
1014 | 女妖得胜回洞去了。悟空蹲在一块石头上,双手抱着头喊疼。沙僧轻轻拿开悟空的手,见不红也不肿,更没有伤口,不知道是什么原因。到了晚上,悟空又喊头疼,兄弟三人决定先在野地上休息一晚,明天再前去捉拿妖怪。
1015 |
1016 | 这时,女妖把琵琶洞布置得灯火辉煌,就像新房一样。她一手搭在唐僧的肩上,一手拿着酒杯,做出各种妩媚的姿态,想逼唐僧成亲。但唐僧两眼紧闭,双手合掌,并不理睬。女妖生气了,下令道∶“嘿,来人呀!把这个不识抬举的和尚绑到柱子去!”
1017 |
1018 | 第二天,悟空的头不疼了,又变成蜜蜂飞到洞里,女妖正在熟睡。唐僧听到悟空的声音,不由掉下泪来,要悟空赶快救他出去。谁知说话的声音惊醒了女妖,她走过来破口大骂唐僧。
1019 |
1020 | 悟空连忙飞出洞,现了原形,把师父昨晚的遭遇告诉师弟。八戒听到女妖这样凶狠,一气之下,一耙把石门打了九个窟窿。女妖知道后,提着双叉跳到洞外,只打了几个回合,女妖又使出昨天的本领,在八戒的嘴上扎了一下。
1021 |
1022 | 八戒大叫一声,捂着嘴就跑。悟空尝过被扎的滋味,收起棒子就走。女妖笑着说∶“孙悟空,不要说你,就是如来佛也怕我几分哩!”说完便回洞去了。悟空兄弟三人正不知道该怎么办时,路上走来了一个老婆婆,悟空一看,原来是观音菩萨。
1023 |
1024 | 悟空连忙和两位师弟拜见观音菩萨,观音告诉女妖是个蝎子精,如来佛讲经时见她不合掌,就推了她一把,反被她螫了中指,至今如来佛祖的中指还不能伸直。她让悟空去东天门光明宫请昴日星官来降妖,说完转身回南海了。
1025 |
1026 | 悟空立刻上天,不一会儿请来了昴日星官。昴日星官见八戒嘴痛得说不出话,就用手一摸,吹了口仙气,八戒的嘴就不痛了。提到降妖,星官说∶“你们去把女妖引出来,看我用法术抓她。”
1027 |
1028 | 八戒和悟空打进妖洞,把女妖引了出来。昴日星官站在高坡之上,把身子一摇,现出他那双冠大公鸡的原形,“咕——”高叫一声,那女妖听了身子一抖,现出了蝎子的原形。公鸡又叫了一声,那蝎子立刻死在坡前。
1029 |
1030 | 悟空师兄弟送走昴日星官,杀到洞中,大小丫环女童都跪在地上求饶。
1031 |
1032 | 悟空用火眼金睛一看,见她们没有妖气,一问才知道她们都是女儿国的平常百姓,是被女妖抓来做奴隶的。悟空立刻放了她们。
1033 |
1034 | 八戒把师父从柱子上解下来。悟空按照师父的吩咐,把洞中的粮食分给那群女童作为回家路上的干粮。女童们依依不舍,含着泪和他们告别。等大家出了山洞,唐僧师徒又一把火烧了琵琶洞,继续向西天走去。
1035 |
1036 | 第22回 如来巧识真假猴王
1037 |
1038 | 师徒四人在山里走了整整一天,眼看天就要黑了,还见不到一户人家。
1039 |
1040 | 悟空心里着急,把金箍棒朝上一举,白马驮着唐僧像离弦的箭一样向前跑去。忽然一声锣响,路旁的树林里冲出一伙强盗,个个手拿刀枪,吓得唐僧从马上摔下来。
1041 |
1042 | 强盗见唐僧身上没有钱,就要扒他的衣服,牵他的马。唐僧没有办法只好编了个瞎话,说后面的徒弟身上有几两银子,于是强盗把唐僧绑在树上。
1043 |
1044 | 悟空远远地看见,就让师弟慢慢走,自己变成一个小和尚来到师父面前。
1045 |
1046 | 强盗围住悟空,悟空有意捉弄他们,说包袱里有些值钱的东西,都可以拿去,只要能放了师父。强盗答应了,拿起包袱就走。悟空追上他们,说包袱里不但没有值钱的东西,还要强盗把抢来的金银财宝分成三份,给他一份。
1047 |
1048 | 强盗们很生气,举起鞭子、木棍对着悟空的头上就打。悟空等强盗们打累了,笑嘻嘻地说∶“嘿嘿!你们不打,那我打。”说着拿出金箍棒,只轻轻一晃,两个强盗顿时脑浆四射,吓得其他人把手中的家伙一扔,夺路就逃。
1049 |
1050 | 唐僧见状又把悟空责备一顿,让八戒把两个强盗埋了,继续朝前走。没走多远,见到一户庄院,就进去投宿。这家人姓杨,两位老人都已七十多岁,带着一个六岁的孙子。唐僧问他儿子在哪里,老汉叹了口气,说儿子是个强盗。
1051 |
1052 | 半夜里,唐僧师徒都休息了,杨老汉的儿子带着一伙强盗回来,他们正是唐僧在山中遇到的那伙。他们见到白马,得知唐僧等人住在这里,一个个磨刀擦枪,要为死去的两个同伴报仇。杨老汉连忙让唐僧师徒赶快逃走。
1053 |
1054 | 他们没走多远,那伙强盗追了上来,举着刀枪乱砍乱戳。悟空害怕伤了师父,把金箍棒一抡,立刻地上倒下一片。唐僧见打死了这么多人,不忍再看,骑着马向西跑去,八戒、沙僧紧紧跟着。悟空找到杨老汉儿子的尸体,上前割下首级。
1055 |
1056 | 悟空提着头来见唐僧。唐僧一见鲜血淋淋的人头,吓得从马背上掉了下来,责怪悟空太残忍,念起紧箍咒,要赶孙悟空回花果山。悟空苦苦哀求,唐僧就是不听,只管不停地念紧箍咒,痛得悟空死去活来,只好答应离开。
1057 |
1058 | 悟空停在空中,决定去南海求观音菩萨讲情。一会儿功夫,悟空来到落伽山,拜见了菩萨,把师父赶他走的事说了一遍。观音让他暂时留下,说唐僧不久又要有危险,会主动来找他的。
1059 |
1060 | 唐僧赶走孙悟空后,就让八戒在前面带路,往西走了五十来里,感到又渴又饿,要八戒弄些斋饭来吃。八戒也会驾云,他跳到空中四下张望,没看见一户人家。唐僧没有办法,让八戒拿钵盂打些水来解渴。
1061 |
1062 | 等了很久不见八戒回来,唐僧又让沙僧去催。沙僧走后,唐僧听见有响声,回头一看,原来是悟空捧着一个瓷钵跪在路边,请师父喝。唐僧的气还没有消,说∶“我宁可渴死,也不喝你的水,你走吧!”说完再也不理悟空。
1063 |
1064 | 悟空忽然露出一副凶相,扔掉瓷钵,拿出铁棒,对着唐僧背后就是一下。唐僧立刻昏倒在地上。悟空把两个包袱提在手中,驾起筋斗云,立刻无影无踪。
1065 |
1066 | 再说八戒到南山坡下取水,忽然看见山谷里有一间茅草屋,心里想可能是刚才在空中被山坡上的树木挡住了没看见,就变成了一个脸色憔悴的和尚,上前敲开门化斋。那家老婆婆见他一副病态,就把剩饭给他装了满满一钵。
1067 |
1068 | 八戒变回原来的模样顺着原路返回,途中又碰到沙僧找来,两人就把饭倒在布片上兜着,用钵盂舀了一钵清水,高高兴兴回到原地,却发现师父倒在地上,不省人事。两人大哭一场,八戒提议把马卖掉安葬师父,然后散伙。
1069 |
1070 | 沙僧不舍得离去,抱起唐僧,又哭了一阵,忽然觉得师父鼻子里又有了热气。两人连忙给师父按摩了一阵,唐僧终于苏醒过来,骂道∶“那猴子想要打死我!”他一边喝水,一边把刚才的事说了一遍。
1071 |
1072 | 八戒当时就要去花果山要回包袱,沙僧劝他还是先把师父安排下来再说。于是他们又来到刚才八戒的化斋那户人家,说明了情况。那老婆婆烧了一壶热茶给他们下饭。饭后,唐僧命沙僧去花果山找孙悟空要回包袱。
1073 |
1074 | 沙僧驾着云整整走了三天三夜才来到花果山水帘洞。他见孙悟空在高台上坐着,正在反复读那份关文,就忍不住高声问他为什么要这样做。悟空听见声音抬起头,却说不认识他,命令小猴抓住沙僧,把他拉到跟前问∶“你是谁?”
1075 |
1076 | 沙僧只好朝上行礼,恳求悟空回去,一起到西天了取经。又说如果确实不愿意回去,就请把包袱还给他。谁知悟空却说要自己去西天取经,流芳百世。沙僧说∶“没有师父,佛祖怎么肯把真经传授给你!”悟空当时就变出了唐僧师徒。
1077 |
1078 | 沙僧怎能眼看着别人冒名顶替师父!举起降魔杖朝假沙僧打去,假沙僧躲闪不及,倒地而死,原来是个猴精变的。悟空气极了,带领小猴们把沙僧团团围住。沙僧冲出重围,驾着云逃走,去向观音菩萨告状。
1079 |
1080 | 沙僧驾云走了一天一夜,来到落伽山普陀崖前拜了观音,抬头正要说明来意,忽然看见悟空站在观音身边,他大喝一声,举着降魔杖朝悟空脸上拍去。悟空竟然不还手,侧身躲过。观音要沙僧住手,让他把事情的经过详细地说一遍。
1081 |
1082 | 观音听完,告诉沙僧悟空在这住了四天,没有离开过一步,更不用说另变一个唐僧去西天取经了。沙僧不信,非要让悟空跟他去花果山走一趟。师兄弟拜别了菩萨,驾云而去。
1083 |
1084 | 来到花果山,悟空往水帘洞里一看,果然发现一个悟空坐在石台上,和猴子们喝酒玩乐,长像和自己一模一样。悟空大吼一声,拿出金箍棒上前骂道∶“哪里来的妖怪,竟敢变成我的样子!”那个悟空也不回答,拿出一根铁棒,跟悟空打了起来,真假难分呀!
1085 |
1086 | 悟空见沙僧插不上手,就让他回去告诉师父,自己和假的悟空边打边走,来到南海,请观音分辨真假。观音和神仙们看了很久也分辨不出来,于是把木叉和善财童子叫到身边,悄悄告诉他们∶“你们各自拉住一个,等我偷偷地念紧箍咒。”
1087 |
1088 | 菩萨偷偷念动咒语,谁知两个悟空一齐喊头痛,都抱着头在地上打滚,求观音菩萨不要念了。观音菩萨不念,他们两个又揪在一起打了起来。菩萨说∶“当年你大闹天宫,神将都认得你,你就到天上去分辨吧!”两个悟空一齐叩头谢恩。
1089 |
1090 | 两个悟空来到天上,神仙们看了很久,也不能分辨,于是来见玉帝。玉帝传令让托塔李天王把照妖镜拿来,把他们照住,再来分辨。谁知镜中竟然有两个孙悟空的影子,头上的金箍,身上的衣服一分一毫都不差。玉帝没办法,只好把他们赶到殿外。
1091 |
1092 | 两个悟空打着出了西门,嚷着去见师父,这时沙僧早已返回,把所见所闻向唐僧详细说了一遍,唐僧这才明白,是自己错怪了悟空。这时侯,两个孙悟空已经打着来到面前。
1093 |
1094 | 沙僧出了个主意,自己和八戒各拉一个悟空到唐僧的面前,要师父念紧箍咒,哪个人头痛哪个就是真的。唐僧答应。当八戒、沙僧把两个悟空拉来,唐僧念起紧箍咒时,二人一齐叫苦说∶“我们打了这么长时间,你还要念咒整我们,不要念了,不要念了!”
1095 |
1096 | 唐僧不念了,他们又打了起来,说要到阎王面前分辨真假。来到森罗殿,把事情的经过说了一遍,请十殿阎王分辨真假,阴君就让判官把生死簿查了一遍,仍然分辨不出。这时地藏王菩萨说∶“让我叫谛听来分辨真假。”
1097 |
1098 | 谛听是地藏王菩萨经案下卧着的一个小兽,可以知道世间发生的一切事情。谛听奉地藏王的命令,在森罗殿的院子里,趴在地上听了一会儿,对地藏王菩萨说∶“虽然知道哪个是妖怪,但不能当面讲出来,也不能帮忙抓住妖怪。”
1099 |
1100 | 谛听告诉地藏王,这个妖怪的本领和悟空一样,如果当面讲出来,妖怪一定会骚扰宝殿,让地府不安。地藏王听了就对悟空说∶“想要分辨真假,还得到雷音寺。”于是两个悟空离开了阴间,腾云驾雾,边走边打,来到西天雷音寺。
1101 |
1102 | 宝莲台下,两个悟空又把经过说了一遍,众神仙们都不能分辨,只有如来佛祖知道,正想讲明。观音来了,恳求如来分辨真假。如来笑说∶“我看假悟空是一只六耳猕猴。”假悟空见如来佛祖说出了他的来历,胆战心惊,转身想跑。
1103 |
1104 | 神仙们见他要逃,一齐围上来。猕猴吓得浑身发软,变成一只蜜蜂,往上就飞。如来佛祖把金钵盂扔出,正好盖住蜜蜂,落了下来。大家不知道,以为妖怪已经逃走了,如来笑着说∶“妖怪没有逃走,是被我压在钵盂下面。”
1105 |
1106 | 大家上前揭开钵盂,真的是一只六耳猕猴。悟空忍不住,抡棒一棒打死。如来觉得可惜,连声说∶“善哉!善哉!”接着,又让观音陪悟空去见唐僧,要唐僧收留悟空。于是观音带着悟空驾云离开了雷音寺。
1107 |
1108 | 没多久,他们来到山谷里那间茅草屋。菩萨给唐僧讲了除妖的经过后,说∶“你这一路上危险重重,只有悟空保护你才能到达西天。”唐僧刚刚拜谢了观音,八戒也从花果山取包袱回来,告诉大家他已经把假唐僧和假八戒打死了。
1109 |
1110 | 第23回 孙悟空三调芭蕉扇
1111 |
1112 | 观音回南海去了。唐僧师徒谢过了那户人家,又继续赶路。一路上平安无事,不知不觉一年过去了。一天他们感到天气炎热,觉得奇怪,唐僧让悟空前去了解情况。悟空来到一座庄院,打听到这里叫火焰山,山上八百里火焰,无人能过。
1113 |
1114 | 唐僧师徒决定在这座庄院里过夜,顺便想了解过山的办法。庄主告诉他们,西南方一千里处有个翠云山芭蕉洞,洞主铁扇公主有把芭蕉扇,扇一下火就灭了,扇二下则刮风,扇三下即下雨,这里的老百姓每隔十年拜求她一次,请她施法降雨才能种些粮食糊口。
1115 |
1116 | 悟空听他这样一说,就驾着云来到翠云山,向一位樵夫打听铁扇公主的住处,那个樵夫告诉悟空说∶“我们这里的人把铁扇公主叫罗刹女,她是牛魔王的妻子。”悟空一听,心想∶“坏了,当年我收伏她的儿子红孩儿,现在她肯借扇子给我吗?”
1117 |
1118 | 悟空果然猜对了,罗刹女听说孙悟空来了,立即拿着青锋宝剑,走出洞门叫道∶“孙悟空在什么地方?”悟空连忙上前行礼说∶“嫂嫂,我是牛魔王当年在花果山结拜的兄弟。”罗刹女一听这话更生气,指着孙悟空就骂,怪他当年不该收服红孩儿。
1119 |
1120 | 悟空为了借到宝扇,就让罗刹女在头上连砍了十几下也不还手。罗刹女见一点也伤不到他,吓得扭头就走。悟空见罗刹女不肯借宝扇,从耳朵中掏出金箍棒,拦住她的去路,两个人在翠云山上打了起来。
1121 |
1122 | 罗刹女和悟空一直打到晚上,见悟空越打越有劲,知道不是他的对手,就取出芭蕉扇一扇,立刻一阵狂风,把悟空吹得一个跟头接一个跟头地翻了一夜,直到天亮,总算抱住一块峰石,落到小须弥山上。悟空想起灵吉菩萨就住在这里,决定去向他请教。
1123 |
1124 | 灵吉菩萨把当年如来佛送给他的定风丹又转送给悟空。悟空把定风丹放在怀里,驾着云回到翠云山,又来找罗刹女借扇子。罗刹女还是不肯借,和悟空打了几回后觉得没有劲了,又拿出扇子朝悟空用力扇去,悟空竟然没有动。
1125 |
1126 | 罗刹女又连扇了两下,见悟空仍然不动,不由得有点心慌,连忙收起宝贝逃回洞里,关上洞门不肯出来。悟空没有办法,就把定风丹含在口中,摇身变只小虫,从石缝钻到洞里。刚好听见罗刹女在喊∶“渴死了,快端点茶来。
1127 |
1128 | 悟空一听有了主意,展翅飞到茶沫里,趁罗刹女张嘴喝茶的时候,钻到她肚子里叫道∶“嫂嫂,快点把扇子借给我!”说完在罗刹女肚子里连踢带打,痛得罗刹女面色苍白,哭天喊地,在地上乱滚,嘴里叫着∶“孙叔叔饶命。”
1129 |
1130 | 直到罗刹女答应借扇子,悟空才停下来,又怕罗刹女变卦,一定要看看扇子才肯出来。罗刹女连忙叫女童拿了出一把芭蕉扇给悟空看,悟空一见,让罗刹女把嘴张三次,罗刹女刚张开口,他就飞了出来,落在扇子上。
1131 |
1132 | 悟空趁罗刹女不注意,现出原形,拿着扇子,离开了芭蕉洞。驾着云回到住处,跟唐僧一起辞别了庄主,又登上了西去的路。没想到才走了四十多里,脚就给烫伤了。悟空让大家暂时歇歇,自己拿着芭蕉扇上山去扑火。
1133 |
1134 | 悟空举着芭蕉扇跳到火边,用力一扇,见火苗乱窜;再扇一下,火势反而比原来猛了很多;又一扇,那火比小山都高。幸亏悟空跑得快,要不,猴毛都要烧光了。悟空跑到师父面前,叫他们牵着马往回退二十几里。
1135 |
1136 | 就在他们弄不明白是怎么回事的时候,土地爷走过来,告诉他们,这扇子是假的,要想借到真扇子,就得找牛魔王;而这座火焰山,是当年悟空大闹天宫被二郎神捉放在太上老君的八卦炉里,开炉时悟空踢倒丹炉,落下的几块火砖。
1137 |
1138 | 悟空按照土地爷说的,到积雷山摩云洞找牛魔王,在洞外刚好碰到他的小老婆玉面公主,她听悟空说是铁扇公主派来请牛魔王的,气得跑回洞里,对着丈夫大哭大闹,牛魔王问明情况,心想芭蕉洞里怎么会有和尚呢?
1139 |
1140 | 牛魔王心里有点怀疑,就穿戴整齐,提着棍出来,一见是收走他儿子的孙悟空,不由得怒上心头,拿着混铁棍劈头就打。悟空举起金箍棒迎上去,两人你来我往,打了一百多回合不分胜负,一直到有人喊牛魔王去赴宴,他才收棍回洞。
1141 |
1142 | 牛魔王换下盔甲,骑着辟水金睛兽,驾着云向西北方向去了。悟空在云里看的很清楚,就变成一阵清风跟在后面,来到一个水潭前,牛魔王突然踪影全无,悟空想他钻到水里了。于是,就变成一只螃蟹,跳到水里去找。
1143 |
1144 | 原来,老龙精在设宴请客。悟空见那只辟水金睛兽拴在宫外的石柱上,就偷偷解下来,决定骑上它,变成牛魔王,到罗刹女那里去骗芭蕉扇。
1145 |
1146 | 悟空骑着辟水金睛兽来到翠云山。罗刹女已经有两年没有看见丈夫了,所以特别高兴,一点也不怀疑。悟空故意说是怕罗刹女把芭蕉扇借给了仇人,才匆匆回来帮忙的。罗刹女一听连忙命令摆酒给大王洗尘。
1147 |
1148 | 喝了一会,罗刹女已经有点醉了,显出娇媚的样子,直往悟空怀里倒,悟空假装应付着,并叮嘱她把扇子藏好,罗刹女笑着说∶“我把它藏在嘴里,那猴子怎么能偷呢?”说着,从嘴里吐出一柄杏叶大小的扇子递给悟空。
1149 |
1150 | 悟空接过扇子问∶“这么小的扇子,怎么能扇灭八百里的火焰呢?”罗刹女埋怨丈夫不该把自己家宝贝的威力都忘了。一边埋怨着,一边把扇子变大的咒语说了一遍。悟空记在心里,把扇子放在口中,变回原来的样子,拔腿就往外跑。
1151 |
1152 | 悟空出了洞,把口诀念了一遍,扇子果真是越变越大,可是,他不知道把扇子变小的口诀,只好把一柄大大的芭蕉扇扛在肩上,按原路回去了。
1153 |
1154 | 再说牛魔王吃完酒宴出来,找不到辟水金睛兽,猜想是悟空偷去了。便驾着黄云直奔翠云山。但是,已经晚了,芭蕉扇早就被孙悟空骗走。罗刹女因为在悟空面前出了丑,就把牛魔王臭骂了一顿。
1155 |
1156 | 牛魔王气得七窍生烟,便想了一计,变成猪八戒去向悟空要扇子。悟空因为拿到了宝扇,心中十分高兴,一点也没有怀疑,就把扇子交给了假八戒,让他扛着。
1157 |
1158 | 假八戒接过芭蕉扇,心中暗喜,默念口诀,把扇子变小藏好,变回原来的样子。悟空一看,发现上当,大惊失色。挥动铁棒,劈头就打。牛魔王拔剑相迎,两人从地面杀到空中,杀得是难解难分。
1159 |
1160 | 唐僧从土地神口中得知牛魔王也有七十二般变化,就叫八戒去助悟空一臂之力。牛魔王和悟空打了半天,精疲力尽。突然八戒杀来,钉耙又凶又狂,牛魔王再也招架不住,边打边向积雷山摩云洞退去。
1161 |
1162 | 玉面公主一见,忙命小妖出洞助战,悟空、八戒措手不及,败阵而走。
1163 |
1164 | 为此,悟空心中烦闷,八戒垂头丧气地坐在地上。这时,土地神出来劝他俩不可就此罢休。悟空听后,重新抖起精神,领着八戒、土地神一起冲到摩云洞口,把洞门砸碎。
1165 |
1166 | 牛魔王听到报告十分生气,急忙出洞迎战,尽管他奋勇招架,仍然挡不住铁棒和钉耙,忙摇身变只白鹤展翅飞去。悟空也变成一只丹凤追了过去。
1167 |
1168 | 凤是鸟中之王,牛魔王没有办法,只好飞下山崖,又变成一只香獐。
1169 |
1170 | 悟空立刻变成饿虎来捉香獐;牛魔王则变个狮子来擒饿虎;悟空就地一滚,变成巨象,甩动着长鼻子去卷狮子;牛魔王一见,现出原身,原来是头大白牛,两只牛角像塔一样,身高八千多丈,对悟空说∶“你还能把我怎么样?”
1171 |
1172 | 悟空叫声∶“长!”立刻身高万丈,手拿大铁棒,朝牛魔王打去。他俩斗法,惊动了天上的神仙,众仙纷纷下界来帮助悟空。牛魔王见情势不妙,恢复原样,转身向芭蕉洞跑去,众仙追过去,把他围住。
1173 |
1174 | 牛魔王见被围住,又变成大白牛,用铁角朝李天王顶去。哪吒眼明手快,甩出风火轮挂在牛角上,吹起真火,痛得牛魔王乱叫。李天王乘机用照妖镜照住,牛魔王再也不能动弹了,只好俯首归顺,答应献出宝扇。
1175 |
1176 | 罗刹女无奈只好捧扇出洞,献扇灭火,并告诉悟空只要连扇七七四十九扇,就可断绝火根。众神见罗刹女献出宝扇,就牵着老牛回天上复命去了。
1177 |
1178 | 悟空来到火焰山前,连扇四十九扇,顿时,山上的火灭风起,满天下起蒙蒙细雨,凉风习习。
1179 |
1180 | 灭了大火,悟空把宝扇还给罗刹女,罗刹女接过扇子,念个咒语,把扇子变成杏叶一样大小,含在口中,第二天,唐僧师徒收拾好行李上路了,罗刹女和本地的土地神都来送行。
1181 |
1182 | 第24回 金光寺扫塔追佛宝
1183 |
1184 | 师徒四人早起晚睡地又走了八百多里,来到祭赛国,见城里人来车往,一片繁华景像。正走着,忽然看见十几个和尚都戴着枷锁,挨户乞讨。唐僧不由得动了慈悲心,让悟空上前去问个明白。
1185 |
1186 | 和尚不敢在街上讲实情,就把唐僧师徒带到他们的敕建护国金光寺里。
1187 |
1188 | 原来,在金光寺宝塔上曾经放着一个舍利子佛宝,白天彩云缭绕,夜间光芒四射,周围各国都能看到,便把这里奉为天府神京,年年进贡,岁岁来朝。
1189 |
1190 | 没想到三年前的一个夜晚,突然下了场血雨,污染了宝塔,从此暗淡无光。外国因为看不见塔上的奇光异彩,就不再进贡。国王听信馋言,说这一切全是寺中僧人偷走宝贝才造成的,就把全寺僧人都捉去问罪,已经有两个僧人被打死了。
1191 |
1192 | 唐僧决定晚上亲自去扫塔求佛,查明原因,解救僧人。晚饭后,唐僧和悟空各拿一把新买的扫帚,先上大殿烧香拜佛,然后打开塔门,从下往上一层一层地扫,到半夜时分才扫到第十层。
1193 |
1194 | 唐僧累的腰酸背痛,便叫悟空替他把上面的三层扫完。悟空扫到十二层时,听见塔顶有人讲话,就钻出塔门,踏着云去察看。他见第十三层塔里有两个妖精正在猜拳喝酒,便拦住塔门叫道∶“原来是你们偷走了宝贝。”
1195 |
1196 | 悟空将两个小妖精抓去见唐僧。两个小妖精招出了真情∶在离京城不远的乱石山碧波潭中,住着万圣龙王和女儿万圣公主、女婿九头驸马。前年,驸马跟龙王来到城里,下了场血雨,偷去佛宝。
1197 |
1198 | 万圣公主又把王母娘娘的九叶灵芝草偷来,把佛宝放在坛里温养,让它昼夜放光。最近,万圣龙王听说孙悟空要路过里,就派鲶鱼精和黑鱼精来这巡视,打听唐僧师徒的虚实,好对付他们。
1199 |
1200 | 为了证明寺中僧人的清白,悟空把两个小妖精穿了琵琶骨锁起来,准备第二天带去见国王。第二天,唐僧师徒拜见祭赛国国王,换了关文,并乘机为寺中僧人辩护,说有小妖精可以证明。国王听后,命锦衣卫士陪悟空到金光寺去捉妖怪。
1201 |
1202 | 两个小妖怪如实招了老龙王和九头驸马偷佛宝的经过。国王下令将两妖怪关押起来,传旨放了金光寺的僧人,并在光禄寺设宴给唐僧师徒洗尘。席间,国王请唐僧师徒去除妖夺宝,唐僧答应了,随即要悟空、八戒前去。
1203 |
1204 | 悟空、八戒各挟着一个小妖精做眼线,驾着云来到乱石山碧波潭,割下黑鱼精的耳朵和鲶鱼精的下唇,说∶“去告诉你们的大王,叫他送还金光寺塔上的宝贝,若有半个不字,叫他一家老少休想活命!”
1205 |
1206 | 两个小妖精被丢进潭里,连忙跑进宫中向老龙王和九头驸马报告。九头驸马披挂整齐,手拿月牙铲,分开水道,跳了出来,喊道∶“孙悟空快来送死!”悟空一听大怒,抡棒打过去。两人一来一往,难分难解。
1207 |
1208 | 八戒悄悄跑到九头驸马背后,举耙就打。那妖精有九头十八腿,背后旁边都有眼睛,看得清楚,就地一滚,现出原形,原来是个一丈多长的九头虫。它展翅腾空,想逃回龙宫,悟空一见,跳到空中,劈头一棒,那怪虫顺势斜飞,咬住八戒的脖子。
1209 |
1210 | 八戒被九头虫带回龙宫,吊在西廊柱子上。悟空为了救八戒,变成螃蟹潜到水中。上次他偷牛魔王的辟水金睛兽时来过这儿,就照原来的路游到牌楼前,见龙王全家正在给九头虫庆功,八戒的九齿钉靠在殿外的柱子上。
1211 |
1212 | 悟空横爬到西廊下,见八戒吊在那一点都不能动,痛得大喊大叫,便爬过去钳断绳索,悄声告诉八戒,让他在牌楼下等着。自己进宫去拿钉耙。八戒听出是悟空的声音,挣脱绳索后,按悟空的吩咐悄悄地溜了出去。
1213 |
1214 | 悟空拿到钉耙后,变回原来的样子,来到牌楼下。八戒接过钉耙,让悟空上岸去接应,自己举着钉耙打了进去。刹那间,宫中的门窗、桌椅、珍贵的器皿,统统地被打碎,吓得龙王龙婆、龙子龙孙惊惶失措,四处躲藏。
1215 |
1216 | 九头虫藏好公主后,赶到前宫,抡起铁铲挡住八戒。老龙王定定神后,带领龙子龙孙拿刀持枪,一齐围攻上来。八戒寡不敌众,虚晃一耙撺出水面。那龙王不肯罢休,率领龙子龙孙也追了出来。这时,悟空在空中看得清清楚楚,趁机一棒把老龙王的头打烂了。
1217 |
1218 | 龙子龙孙见状吓得仓惶逃走,九头虫收了龙尸回到水中。悟空、八戒跳到岸上,正在商量对策,忽然远远地看见二郎神领着梅山六兄弟,带着天鹰、天犬,抬着猎物,驾着云朝这边走来。
1219 |
1220 | 悟空想请二郎神帮助捉妖,但又因大闹天宫时被他降伏,不好意思,就让八戒去求见。八戒急忙跳上云头,拦住他们,大喊∶“齐天大圣求见。”
1221 |
1222 | 二郎神一听,停下车马,忙叫梅山六兄弟去请悟空。
1223 |
1224 | 二郎神就在山顶摆宴席招待悟空和八戒,他们一直吃到东方发白。八戒乘着酒性跳入碧波潭去挑战。他来到牌楼前,见龙子龙孙正在给老龙王办丧事,便大吼一声,杀进宫殿,把龙子的头打了九个窟窿。
1225 |
1226 | 九头虫听到报告,慌忙带着龙孙拼命往外追杀。八戒边打边退,引诱众妖追出水面,岸上悟空和二郎神等一拥而上,将龙孙砍成几段。九头虫见情况不妙,在山前打个滚,现出原形。二郎神取出弹弓,往上就打。
1227 |
1228 | 九头虫旋绕飞腾,掠过二郎神时,腰中伸出个头刚要咬,哮天犬窜上去,一口把那颗头咬了下来。那妖怪再也不敢恋战,往北飞去。悟空立刻变成九头虫,让八戒在后面追他,下水找公主骗回宝贝。
1229 |
1230 | 悟空二人进了龙宫,悟空一见万圣公主就说∶“猪八戒追过来了,快把那宝贝藏好。”公主慌忙中也不分真假,忙将装佛宝的金匣子和装九叶灵芝草的玉匣子就交给孙悟空。
1231 |
1232 | 宝贝一到手,悟空就变回原样,公主见状,连忙去夺。八戒一步追上去,把公主一耙打倒。剩下一个龙婆也被八戒捉住,悟空见八戒举耙想打,忙拦住说∶“别,留下她去见国王。”于是,二人分开水路,回到岸上。
1233 |
1234 | 二郎神和梅山六兄弟见悟空大功告成。便告辞回灌江口去了。悟空和八戒捧着宝匣,提着龙婆,驾云回到祭赛国。国王和唐僧来到金光寺塔,见悟空将舍利佛宝放在塔顶的宝瓶中,又叫龙婆现出龙身盘在柱子上守塔。
1235 |
1236 | 悟空又用九叶灵芝草把十三层宝塔扫了一遍,再将九叶灵芝草放进塔顶宝瓶中温养。霎时,塔顶霞光万丈,瑞气四射,依然八方共睹,四国同瞻。
1237 |
1238 | 国王按照悟空的意思,把金光寺改成“敕建护国伏龙寺”,并写了新匾挂在上面。
1239 |
1240 | 唐僧师徒离开祭赛国这天,国王率领文武官员,满城百姓及伏龙寺僧人送唐僧师徒到城外。尤其是伏龙寺僧人,送了六十多里还不想回,悟空只好了拔根毫毛,变成一只猛虎,拦住去路,僧人害怕,才不得不回去。
1241 |
1242 | 第25回 小雷音弥勒擒黄眉
1243 |
1244 | 半个月后,师徒们走进一座高山,山中野兽出没,狼叫虎啸。悟空在前面开路,赶走虎豹豺狼。翻山越岭,来到了一片平原,云雾中隐隐看见楼台殿阁的景像,时时传来敲钟击磬的声音。
1245 |
1246 | 他们寻声来到一座庙宇前。悟空仔细一看,见禅光中夹着凶气,便断定这不是个好地方。唐僧不信,骑马来到山门前面,见树枝浓荫映掩的墙上露出“雷音寺”三个字。唐僧以为到了仙界,立即下马就拜。
1247 |
1248 | 悟空要师父仔细看看,唐僧这才看清上面写着“小雷音寺”四个字。唐僧要进庙参拜,悟空极力劝阻,说进去凶多吉少。师徒正在争执时,忽听门里有人叫喊∶“唐僧,你从东土去西天取经,见了我佛为什么不进来礼拜?
1249 |
1250 | ”
1251 |
1252 | 唐僧连忙披上袈裟,换上僧帽,和八戒、沙僧一步一拜进了大殿,只有悟空站在一旁不理。突然,高坐在莲花台上的如来佛喊道∶“悟空,见了佛祖怎么不拜?”悟空睁开火眼金睛一看,原来如来佛竟是妖怪变化出来的,心中一惊,顺手举起棒就打。
1253 |
1254 | 突然半空中降下一副铙钹,把悟空夹在中间。八戒、沙僧见状忙拿兵器,没想到那些神假佛全部现出妖怪嘴脸,一齐围了上来,把唐僧、八戒和沙僧全都绑起来。原来,那假如来是个披头散发的黄眉老妖怪,自称“黄眉老佛。”
1255 |
1256 | 黄眉怪把金铙放在莲花台上,说三天三夜后悟空就要化成浓血,然后就和众妖们睡觉去了,悟空在金铙里左冲右撞怎么也找不出一点缝来,就把金箍棒变得又长又粗,支住金铙,拔根毫毛变成梅花钻,可是钻来钻去连个小孔也钻不出来。
1257 |
1258 | 悟空念咒语,叫来了五方揭谛、护法伽蓝等神仙,让他们想办法弄开金铙。可是各位神仙掀了半天也掀不动。金头揭谛上天奏明玉帝,玉帝忙派二十八宿下凡降妖,二十八宿即刻跟着金头谒谛来到金铙边。
1259 |
1260 | 二十八宿对着金铙斧劈刀砍,忙到半夜,仍然没有用。亢金龙把身体变小,龙角尖就像针尖一样,顺着钹合缝口,硬穿进去,然后把身体和角一块变大,使角长成跟碗一样粗,可是那钹口好像跟角长在一块儿,没有一点缝隙。
1261 |
1262 | 悟空让亢金龙忍着痛,他在里面把金箍棒变成细钢钻,在亢金龙的角尖上钻一个洞,然后自己变小,躲进洞里。亢金龙使出全身力气才把角拔出来,累得他精疲力尽,倒在地上,悟空终于从金铙里出来了。
1263 |
1264 | 悟空变回原身,拿起金箍棒把铙钹打得粉碎。黄眉怪被响声惊醒,带小妖怪围了上来。悟空带领二十八宿和众神驾云跳到空中,黄眉怪舞动狼牙棒追上来,和悟空在空中打了起来。
1265 |
1266 | 二十八宿众神各举兵器,把黄眉怪团团围住。突然,黄眉怪架开所有兵器,从腰上扯下一个布口袋向空中一抛,只听见“哗”的一声,把悟空和二十八宿、五方揭谛等神仙统统装了进去。
1267 |
1268 | 黄眉怪胜利而归,叫小妖怪们取出几十条麻绳,自己解开口袋,拿一个捆一个,再由小妖怪抬到后面,扔到地上。夜里,妖怪们都睡了,悟空耳边忽然传来师父的哭声,后悔自己没有听悟空的话。
1269 |
1270 | 悟空乘看守的小妖怪在打瞌睡,用了个法术,挣脱绳索,为众神松了绑,然后找到师父和师弟,给他们解开绳子。众神拥着唐僧,用法术刮起一阵狂风,飞过墙离去。
1271 |
1272 | 悟空又返回庙里,爬上楼顶,见所有的门窗都闭着,就摇身变成一只蝙蝠,把屋顶钻了个洞,飞进去。他在暗室的角落找到唐僧的衣钵、佛宝及行李,就变回原样,拿起行李往外走。
1273 |
1274 | 没想到包袱突然散了,东西“砰”地一声掉在地上,惊动了黄眉怪老妖和小妖精,悟空只好丢下东西驾云逃走。黄眉怪领着小妖怪追了出来,见众神仙护着唐僧,就扑了过去。众神仙和八戒、沙僧一拥而上,挡住黄眉怪。
1275 |
1276 | 悟空驾云返回,发现黄眉怪正伸手在腰里扯布袋,便高喊一声∶“嗨,大家快逃!”又一个筋斗跳上高空。众神仙和唐僧师徒来不及躲闪,全部被黄眉怪的口袋收了回去。
1277 |
1278 | 这么多天神天将被捉,悟空怕玉帝怪罪,就来到武当山,请北方真武荡魔天尊相救。荡魔天尊听悟空说了事情的前后经过,便派龟、蛇二将和五大神龙跟随悟空前往小雷音寺,解救唐僧。
1279 |
1280 | 他们浩浩荡荡杀向小雷音寺。黄眉怪率领小妖怪出门迎战。五大神龙翻云降雨,龟、蛇二将播土扬沙,悟空挥棒紧跟在后。黄眉怪见来势凶猛,又解下布袋。悟空一见,忙叫道∶“各位小心!”驾着筋斗云跳上九重云霄上。
1281 |
1282 | 神龙、龟、蛇还没明白悟空说的什么,就被装进口袋,提进了庙里。悟空落下之后,正在懊悔之时,见值日功曹走到面前,提议让他去求国师王菩萨,借用小张太子来消灭妖怪,他说小张太子曾经打败过水母娘娘,法力无边,一定能胜。
1283 |
1284 | 国师王菩萨未卜先知,早就算到悟空会来求他,待悟空一到,就派小张太子率领四大神将跟随悟空来到小雷音寺,和黄眉怪交战。没想到没打多久,黄眉怪又故伎重演,又把小张太子和四大神将都装进了袋中。悟空预先知道,才得以逃脱。
1285 |
1286 | 悟空一直到妖怪都回去了,才落下云来,站在西山坡上,十分懊恼。这时,一朵彩云从西南方飘来,满山下起大雨,有人叫道∶“悟空,认识我吗?”悟空抬头一看,原来是弥勒佛。
1287 |
1288 | 话说黄眉怪是弥勒佛跟前敲磬的一个黄眉童子,前几天趁弥勒佛赴元始会的机会,偷走了弥勒的后天袋,逃到这兴妖作怪。弥勒与悟空相会后便把一块地变成瓜田,自己变成种瓜人,让悟空把黄眉怪引来后,再变成西瓜,由弥勒送给他吃。
1289 |
1290 | 悟空依照计策,来到小雷寺音叫骂。黄眉怪见悟空一个人,没带帮手,更不怕他,就出来应战。两人打了几个回合,悟空假败逃走,引诱黄眉怪来到西山坡下的瓜田里,悟空就地一滚变成西瓜,混在真瓜里。
1291 |
1292 | 黄眉怪追过来找不到悟空,见满地的西瓜,就叫瓜农摘个熟瓜给他解渴。弥勒佛就把悟空变的西瓜摘了递过去。那妖怪接过瓜张口就咬,悟空乘机滚进他的嘴中,钻进他的肚子里。
1293 |
1294 | 悟空在妖怪肚子里抓肠顶胃,拳打脚踢,疼得那黄眉怪龇牙咧嘴,眼泪直流,在瓜地里滚来滚去好不疼痛。这时,弥勒佛变回原相,黄眉怪见了慌忙跪下哀求∶“主人啊!饶命,我再也不敢了!”
1295 |
1296 | 弥勒佛上去解下后天袋,取了敲磬槌,然后叫悟空饶他一命。悟空叫黄眉怪张开嘴,一跃而出,变回原样,举起金箍棒就打。弥勒佛劝住悟空,问那妖怪金铙在什么地方。那妖怪说∶“金铙被悟空打碎了,现堆放在殿上。
1297 |
1298 | ”
1299 |
1300 | 弥勒佛把妖怪装进袋里,系在腰上,然后和悟空一起来到小雷音寺,庙里的小妖见老妖怪给捉住了,正想逃走,悟空抡起金箍棒一阵乱打,全部把他们消灭了。弥勒佛将金铙的碎片收在一堆,吹口仙气,念了声咒语,金铙立即恢复原样。
1301 |
1302 | 送走弥勒佛后,悟空到后院先救出师父和师弟,又要八戒打开地窖,救出众神仙。唐僧见了,连忙一一拜谢,然后送各路神仙回仙境。唐僧师徒休息了半天,就登上向西的路程,临走时悟空放了一把火,把假雷音寺烧成灰烬。
1303 |
1304 | 第26回 七绝山猪八戒立功
1305 |
1306 | 师徒四人不畏艰险,日夜赶路。这天太阳落山时正好走到驼罗庄,就想找个地方过夜。庄上的李老汉见他们几个是和尚,叹口气说∶“不要说去西天,就是眼前这座七绝山,上面有八百多里长稀柿变成的淤泥,你们就过不去,还是回去吧!”
1307 |
1308 | 唐僧听了愁容满面,悟空忍不住跳出来质问李老汉为什么吓人。李老汉这才注意到唐僧身后的三个和尚,一见他们的长相,吓得倒退几步就要关门。悟空连忙陪笑,告诉李老汉他们是来自东土大唐,要到西天取经,自己长得是丑了些,但有降妖除怪的本领。
1309 |
1310 | 李老汉一听他们能够降妖除怪,非常高兴,连忙请他们进屋,准备了一桌丰盛的素宴款待他们。悟空觉得李老汉前后的态度就像两个人,料定他一定有事相求。八戒不会绕弯子,直接问他。李老汉说∶“确实有事相求呀!
1311 |
1312 | ”
1313 |
1314 | 原来在驼罗庄的西面,有一座七绝山,山上有很多柿子树,每年都能结许多柿子,常年累月,没人去摘,烂的柿子把七绝山变成了一条淤泥河。一刮西风烂柿子的怪味飘进庄来,奇臭无比。一年夏天,庄上的人正在收粮食,忽然一阵狂风,刮得天昏地暗。
1315 |
1316 | 大家都以为要下雨,赶快收拾。谁知满天黄沙是妖怪施的法术,他乘机吃了很多庄里的牛马,人们吓得不敢出门,不管白天晚上,一听到风声就跑,大家推选李老汉去南山请个和尚来降妖。
1317 |
1318 | 和尚请来了,就在村外摆上香案,烧香磕头,摇铃念经。村上的人见了都说∶“老和尚法力无边,这回该有太平日子过了。”不料正在大家高兴的时候,狂风大作,妖精又来了,人们连忙跑回家中,关闭门窗不敢出来。
1319 |
1320 | 风停了之后,大家出来,发现降妖的老和尚已经不见了,只有帽子挂在树梢上。大家明白和尚是被妖精抓走了。从此,再也没有人提起捉妖的事情,成天紧闭着门窗。
1321 |
1322 | 听完李老汉的讲述,八戒不说话,悟空却很爽快地说∶“一两个妖怪,不要紧,我去替你们把他抓来。”李老汉连忙找来几个老人,要用重金感谢悟空,悟空坚决不要。就在这时,狂风骤起,吓得老人们面无血色。
1323 |
1324 | 悟空让老人们陪着师父躲在屋里,自己拉着八戒、沙僧走到外面,只见狂风刮过,半空中出现两道闪光,悟空一眼便看出那是一双妖怪的眼睛,连忙说∶“你们两人快回去保护师父,让我上去看看那妖怪是个什么东西。”
1325 |
1326 | 悟空跳到空中,问妖精是哪里来的,连着问了几声,那妖怪都不回答,气得悟空举起棒子就打。那妖怪手舞双枪迎战,双方打到三更天都不分胜负。八戒见妖精只守不攻,就驾上云从后面偷袭妖精。
1327 |
1328 | 谁知妖精就像背后长了眼一样,八戒的钉耙还没到,他已经侧身让开,反手对着八戒就是一枪,又打了三四十个回合,悟空和八戒都不能伤他。悟空见妖精的两个枪尖虽然可弯可曲,可长可短,但阴气太重,料定妖怪还没有修练成人体,天一亮一定逃走。
1329 |
1330 | 果然,五更天雄鸡一叫,那妖怪转身就跑,悟空和八戒紧追不舍,忽然一阵难闻的臭味迎面扑来,悟空和八戒猜这就是李老汉说的七绝山稀柿沟。
1331 |
1332 | 那妖怪跳过七绝山,露出了原形,原来是一条红色的大蟒。
1333 |
1334 | 悟空跳起来,当头一棒打去。那蟒蛇“刷”得一声钻进洞,八戒急了,扔下耙,一把抓住蟒蛇的尾巴,拼命向外拉。悟空笑着说∶“这样子拔蛇是拔不出来的。放手吧,老孙有办法让他出来!”
1335 |
1336 | 悟空让八戒到后山,堵住后洞口,自己把棒子从前洞口伸进去,一阵乱戳。那蟒蛇被捅得疼痛难忍,猛地从后洞口跳出来。八戒躲闪不及,被蟒蛇尾巴打中,摔到几丈远的地方,弄得鼻青脸肿、狼狈不堪。
1337 |
1338 | 悟空看到蟒蛇已经跳过了山沟,就和八戒追了过去。那蟒蛇看见他们扑过来,张大嘴往后一窜,把悟空一口吞到肚里,八戒见此情景转身就逃。忽然间那蟒蛇猛地跳到空中,接着又摔下来,像一根粗大的树杆,躺在地上不动了。
1339 |
1340 | 八戒追了过去,举起钉耙就要打,忽然,蟒蛇的嘴巴张开了,吓得八戒往后一跳,见悟空从口里钻了出来说∶“我已经把蟒蛇打死了,拖回去给驼罗庄的人看看。”于是,兄弟二人把蟒蛇拖起来就走。
1341 |
1342 | 驼罗庄的人见唐僧师徒杀死了妖精,又不要财物,就准备了些饭菜款待他们,一连七天不断。临走的那天,全庄的男女老少都来送行,一直送到七绝山稀柿沟前,然而前面的道路全被烂柿子堵死,根本无法通过。李老汉就叫人另外开一条路。
1343 |
1344 | 可是,八百多里山路靠凡人来开要到什么时候!悟空出了个主意,让李老汉命人准备一些米饭、馒头,给八戒吃饱,叫八戒变成一头大猪,拱开这些烂柿子。八戒嫌脏不想干,唐僧说∶“如果你真能拱开一条路,师父给你计头功。”
1345 |
1346 | 八戒得意起来,叫人抬来米饭、果品、烧饼、馒头,张开大嘴,秋风扫落叶一样吃了个干干净净,然后把衣服一脱,嘴里念念有词,变成一头野猪,两只蹄子就比人高,好像一座山。大家看了惊叹不已。
1347 |
1348 | 八戒在前面拱路,悟空和沙僧扶着师父跟在后面,驼罗庄的百姓轮流运送粮食。几天工夫,八百里七绝山的稀柿沟被八戒拱开了一条大路。驼罗庄的男女老少一直把唐僧师徒送出了稀柿沟,才和他们依依不舍地告别。
1349 |
1350 | 第27回 麒麟山巧盗紫金铃
1351 |
1352 | 走了几天,唐僧师徒来到朱紫国。唐僧带着徒弟们到驿馆住下后,见时间还早,就一个人去交关文。孙悟空却闲不住,他让沙僧在驿馆里准备饭菜,自己和八戒逛街去了。
1353 |
1354 | 他们来到西大街的鼓楼旁,见楼下围着一大群人,八戒怕惹事,不肯再往前走;悟空生性喜欢看热闹,让八戒等着他,自己钻进人群去看,只见城墙上挂着皇榜,说国王得了重病,快要死了,谁能治好他,国王愿意把一半的国家分给他。
1355 |
1356 | 悟空喜欢管闲事,当下念个咒语,吹了一口仙气,立刻一阵旋风刮来,让人睁不开眼睛,自己施展隐身法上前揭了皇榜。悟空来到八戒的身边,见八戒嘴顶着墙,好像睡着了,就把皇榜卷起来,悄悄地塞到八戒的怀里,转身哼着歌回驿馆去了 。
1357 |
1358 | 大风过后,守卫皇榜的太监和官兵见皇榜不见了,到处寻找,发现在八戒的怀里,就拉着他去给国王治病。八戒知道这是悟空在捉弄他,就对官兵说∶“这榜是我师兄揭的。走,我领你们去找他。”
1359 |
1360 | 悟空被请到宫中时,唐僧还没离开,就一齐被国王留下来。国王看见悟空,心里很害怕,不敢让他治病。悟空拔下三根毫毛变成三根丝线,让太监把丝线绑在国王的手腕上,说这叫悬丝诊脉。
1361 |
1362 | 悟空拿着线头,隔着帘子说∶“圣上地病是因为长时间的担惊受怕和思念过度,叫做双鸟失群症。”国王听了不住地点头说对,请悟空给他开药方治病。悟空让御医把八百零八种药材每种各准备三斤,再加上制药的工具,一齐送到驿馆,交给八戒和沙僧。
1363 |
1364 | 等到悟空回了驿馆,药材已经全部送来。晚上,他和八戒、沙僧在八百零八种药材中取出几样,研碎调匀做了三个药丸,装进小盒里。原来,他要这么多药材的目的,是怕皇宫中的太医猜出他的药方。
1365 |
1366 | 第二天,三粒药丸送到宫里,国王吃下后病马上就好了,见了唐僧就跪下磕头,又派人把悟空师兄弟请来。兄弟三人高高兴兴地进宫,国王连忙起身相迎,并让人在光禄寺准备素宴感谢唐僧师徒治病之恩。
1367 |
1368 | 吃饭时,悟空问国王∶“俺老孙知道陛下得的是相思病,不知道有什么心事?”国王仰天长叹一声,告诉悟空∶三年前,麒麟山獬豸洞妖怪赛太岁见国王的金圣宫娘娘长得貌若天仙,就兴风作怪把她抢走,所以才得了这相思病。
1369 |
1370 | 悟空听了说∶“国王不用着急,俺老孙去降伏妖怪,把娘娘接回来。”
1371 |
1372 | 国王连忙跪下感谢,告诉悟空那赛太岁每年都要来几次,每次抓走两名宫女去服侍娘娘。为了防止妖怪伤人,国王还特地命人修建了一座避妖楼。
1373 |
1374 | 国王又应悟空的要求,带他们到避妖楼。这避妖楼盖在地下,里面修了九间大殿,入口用石板盖住。正说着,忽然看见南边尘土飞扬,狂风乱作。
1375 |
1376 | 文武百都惊叫起来∶“妖怪来了!”拥着国王、唐僧钻入地下的避妖楼。
1377 |
1378 | 八戒和沙僧也想躲进去,却被悟空拉住。这时,天空中跳出一个妖怪,手里拿着一杆长枪。悟空让八戒、沙僧守在地洞的入口,自己跳到空中,一问才知道这妖怪只是赛太岁的先锋官。没打几个回合,妖怪的枪就被悟空一棒打成两段。
1379 |
1380 | 妖怪逃走了,悟空把国王和文武百官从避妖楼中请出来,告诉他们事情的经过,满朝官员都很佩服悟空的本领。悟空问国王要一件金圣娘娘的随身物品作信物,准备立刻就去麒麟山营救娘娘。国王从衣袖中摸出一双黄金宝串送给悟空。
1381 |
1382 | 悟空一会儿就来到麒麟山,看见一个小妖,背着公文,敲着锣儿,一路快跑飞奔而来。悟空摇身一变,变成一个小道士上前迎住,问他到哪里送公文,小妖说是去朱紫国下战书。
1383 |
1384 | 悟空又从小妖口中探知赛太岁有三个金铃,分别能放火、放烟、放沙,挨着就得死。悟空一棒子打死那小妖,从他身上搜出一个牙牌,见上面写着∶“心腹小校有来有去”,就变成有来有去的样子,朝獬豸洞走去。
1385 |
1386 | 悟空大摇大摆走进山洞,走到妖怪跟前也不行礼,只是敲锣。妖怪拉住他,问他这是怎么了,他把锣往地上一扔,说他在朱紫国挨了打,人家马上就要来交战了。妖怪安慰他几句,让他把这消息告诉金圣娘娘,悟空心里十分高兴,忙向后宫跑去。
1387 |
1388 | 悟空来到后宫,见两边站着几个妖狐妖鹿变成的美女,正中间坐着那个娘娘,双手托着腮,眼里含着泪。悟空上前行了礼,说刚从朱紫国下战书回来,有话要告诉她。娘娘听了,立刻让两旁的美女退下。
1389 |
1390 | 悟空关上门,把脸一抹,现了原形,把事情的经过说了一遍,然后拿出黄金宝串,双手捧上说∶“你如果不相信,请看这是什么。”娘娘一见,连忙跪下来磕头。悟空问妖怪的三个金铃放在哪里,娘娘说妖怪挂在腰上,从来不离身。”
1391 |
1392 | 两人商量好怎样盗取金铃后,悟空又变成有来有去,打开宫门,叫进两个侍女。娘娘按照计策说道∶“有来有去,快把你大王叫来,我有话跟他说。”
1393 |
1394 | 悟空把妖怪请来,娘娘满脸笑容,用手去扶妖怪,妖怪吓得连后退,嘴里说不敢。原来娘娘被妖怪抢来时,紫阳真人给她穿上一件五彩仙衣,使她身上长满了毒刺,妖怪不敢碰她。
1395 |
1396 | 娘娘已经让人准备好酒宴,说要和妖怪喝交杯酒,又让两名女妖退下,只留一小丫环在屋里端酒送饭。妖怪怎么能想到,这个丫环竟然是孙悟空变的。
1397 |
1398 | 悟空乘给妖怪斟酒的时候,拔下一把毫毛,念动咒语,变成无数个虱子、跳蚤、臭虫,扔在妖怪的身上。妖怪被咬得奇痒无比,两手抠抠这,挠挠那。娘娘就劝他脱下衣服,要帮他捉虱子。
1399 |
1400 | 妖怪立刻脱下衣服,只见每一件衣服上都有虱子,密密麻麻就像蚂蚁搬家一样。妖怪只好把衣服脱光,果然露出三个金铃,金铃上也爬满了虱子。
1401 |
1402 | 只听那小丫环大叫一声∶“哎呀,大王,快把金玲解下来,让我给你捉捉。
1403 |
1404 | ”
1405 |
1406 | 妖怪又羞又慌,也顾不得分辨真假,把三个金铃解下来,递了过去。假的丫环见妖怪一心忙着捉虱子,就把金铃藏了,拔了一根毫毛变成三个假金铃,拿到灯前捉虱子,最后收回变虱子的毫毛,把假的金铃递给妖王。
1407 |
1408 | 妖怪穿好衣服,到桌上去拿金铃,娘娘故意问道∶“这玩意有什么用处,整天挂在腰间?”于是妖怪讲了三个金铃的厉害。娘娘说∶“既然这样,就应该交给我保管,那不是更好。”妖怪就把金铃交给娘娘,看着她锁入箱中。
1409 |
1410 | 悟空得手之后就念动真言,使了一个隐身法,出了獬豸洞,站在洞前的高处大声喊道∶“赛太岁,快把金圣娘娘交出来!”妖怪听了以后大吃一惊,忙点起小妖们出洞。他提着一柄宣花斧喊道∶“你叫什么名字?敢前来找死。”
1411 |
1412 | 双方挥动兵器大约打了五十个回合,妖怪体力不支,找了个借口,说要回洞吃早饭,想去取金铃。悟空心里明白,故意收棒让他回去,自己站在洞前嘿嘿地笑。
1413 |
1414 | 妖怪让金圣娘娘把金铃拿出来。娘娘一边开锁,一边在想不知道悟空能不能逃脱性命。其实,她和妖怪都不知道,这三个金铃全是假的。
1415 |
1416 | 妖怪拿着金铃又跳出洞,对悟空叫道∶“孙悟空,看我的宝贝!”妖怪把第一个铃晃了晃,不见往外喷火;又晃第二个铃晃了晃,不见往外冒烟;再晃第三个铃儿,也不见往外流沙,立刻慌了手脚,不知所措。悟空笑着说∶“还是看我的宝贝吧!”
1417 |
1418 | 悟空从腰间把三个真的金铃解下来,一齐摇动,一时间,烈火、青烟、黄沙同时喷出,震天动地,把那个赛太岁吓得魂飞魄散,想逃命,却又走头无路。正在这时,观音驾着祥云飞来,对悟空说∶“不要烧死它,它是我的坐骑金毛!”
1419 |
1420 | 观音用杨柳枝蘸了些净瓶里的甘露一洒,立刻烟消雾散,火焰、青烟、黄沙全都不见了,那妖怪也露了原形。菩萨发现金毛脖子下面的三个金铃不在,就向悟空要回,然后骑上金毛,驾云飞走了。原来金毛是趁牧童打瞌睡的时候,溜到凡界来作怪的。
1421 |
1422 | 悟空打进洞,把小妖们全都杀了,救出金圣宫娘娘。悟空又找来一些软草,扎成一条草龙,让娘娘闭着眼骑在上面,然后念动咒语,施展法术。娘娘腾云驾雾,飞往皇宫。
1423 |
1424 | 半个时辰后他们来到了皇宫。娘娘睁开眼下了草龙,和悟空登上金殿。
1425 |
1426 | 国王见了,急忙下了龙椅来扶娘娘,没想到碰到娘娘的手,国王就疼得大叫一声。这时,空中传来了仙鹤的鸣叫声,原来是紫阳真人驾云乘鹤而来。
1427 |
1428 | 紫阳真人来到娘娘面前,伸手一指,娘娘身上那件彩仙衣立刻变成了一件旧棕衣,掉在地上。原来,当年紫阳真人见娘娘被妖怪抢走,怕她被侮辱,就把这件旧棕衣变成五彩仙衣让她穿上,妖怪一碰她就如同被毒刺扎了一样。
1429 |
1430 | 紫阳真人走后,唐僧师徒换了关文,急着赶路。国王见留不住,只得准备龙车,请唐僧师徒坐在车上,自己和娘娘带着文武百官,跟在车后,徒步送出皇城。
1431 |
1432 | 第28回 盘丝洞棒打蜘蛛精
1433 |
1434 | 唐僧师徒离开了朱紫国,继续向西天走去,这天他们来到一座庄院前。唐僧一定要徒弟们休息,自己去化斋。他独自走进院子,只见窗前有四个女的正在绣花,屋后有三个女的正在踢球。
1435 |
1436 | 唐僧觉得有些不方便,但还是硬着头皮喊了声“女菩萨”,说明了来意。不料那些女子一听,就放下针线,扔了皮球,一拥而上,把唐僧拉进了一座冷气森森的石洞。
1437 |
1438 | 七个女子有的做饭,有的陪唐僧聊天。不一会儿端上来几盘腥气扑鼻的人肉、兽肉,吓得唐僧起身就要告辞。女子们一起动手,按倒唐僧,捆绑起来,高高地吊在梁上,又从口中吐出丝线,织成一张大网,把庄门封了起来。
1439 |
1440 | 悟空等了很久不见师父回来,就跳上大树观看,只见庄院放出异样的白光,知道师父遇到了妖怪,就让师弟们看好行李马匹,自己来到庄门前,却发现庄门被丝线缠得密密实实,也不知道有几百几千层,用手一摸,粘糊糊的不知道是什么东西。
1441 |
1442 | 悟空念动咒语,叫来本地的土地神,这才知道这里叫盘丝洞,洞里住着七个女妖,都是蜘蛛精。悟空打听清楚后,回到原处告诉两位师弟。八戒听说这次是打女妖精,提着钉耙,迈开大步就往盘丝洞方向跑去。
1443 |
1444 | 八戒闯到洞中,不见一个妖怪,就继续向里面走。突然他听到一阵女子的嬉笑声,就顺着声音找去,只见七个女妖正在洞里的水潭中洗澡,说是洗得干干净净地去吃唐僧肉。
1445 |
1446 | 八戒大喊一声,举起钉耙就打。女妖们正玩得高兴,猛地看见一个又黑又胖的和尚闯进来,又羞又怕,一齐吐出丝线把八戒的手脚缠起来。八戒使劲挣扎,连摔了几个筋斗,最后倒在地上爬不起来了。女妖们胜利后,嘻嘻哈哈地转眼就不见了。
1447 |
1448 | 等到八戒清醒过来,缠他的丝线早就已经不见了。他连忙跑回原处,把发生的事给悟空和沙僧说了一遍。沙僧惊叫∶“不好了,女妖一定是回到洞中吃师父去了。”三个人都慌了手脚,连忙向盘丝洞跑去。
1449 |
1450 | 到了盘丝洞,看见有几个小妖守在那里,八戒举起钉耙就打。小妖们见八戒凶猛,立刻现了原形,变成成千上万只蚂蜂、牛蜢向悟空、八戒、沙僧咬去。八戒和沙僧举着袖子拼命扑打,大喊救命。悟空拔下来一把毫毛,变成无数只老鹰吃那些虫子。
1451 |
1452 | 一会儿小虫被老鹰吃完了,悟空收回毫毛,和八戒、沙僧杀八洞里,找到唐僧,把他从梁上救下来,然后又在洞里寻找女妖,不料她们已经无影无踪。于是他们一把火烧了盘丝洞,师徒继续向西天走去。
1453 |
1454 | 没走多远,路过一处庄院,门前写着“黄花观”。唐僧口渴,师徒四人就进观里去讨一杯水喝。谁知这观中的老道是盘丝洞七女妖的师兄,女妖们早就到这来求救了。唐僧师徒这次是自己送上门去,老道让童子把下了毒药的茶水献上。
1455 |
1456 | 唐僧、八戒和沙僧都渴极了,一口气把茶喝光。悟空眼尖,看见老道嘴角露出一丝旁人难以察觉的狞笑,就知道茶中一定有鬼,假装喝下去。不一会儿,八戒脸色仓白,沙僧双眼流泪,唐僧口吐白沫,一个个都昏倒在地。
1457 |
1458 | 悟空拿出金箍棒问老道为什么要这样做。老道冷笑道∶“你们毁了我师妹的盘丝洞,现在休想逃出我的手心!”说完拔剑就砍,七个女妖也一齐给老道助战。悟空力战群妖,越打越勇猛。女妖看情况不妙,吐出丝线在悟空上方织成一个大网。
1459 |
1460 | 悟空见状,一个筋斗冲破大网跳到空中,拔下一把毫毛,变成无数个悟空,每人拿一根双角叉棒,向丝网乱打。一会儿丝网全被打烂了,从里面拖出来七只大蜘蛛,一个个缩成一团,浑身发抖,直喊“饶命!
1461 |
1462 | 饶命!”
1463 |
1464 | 悟空命令老道交出解药救醒师父和师弟,不然就打死这些蜘蛛精。
1465 |
1466 | 女妖也连忙求老道快拿出解药,可老道却说要吃唐僧肉。悟空听了以后大怒,骂道∶“既然你不肯拿出解药,那就看看你师妹的下场!”说着挥动铁棒,把蜘蛛精全部打死。
1467 |
1468 | 接着悟空又去打老道。老道不是悟空的对手,就施展法术,两眼中顿时射出万道金光,紧紧照住悟空。悟空被照得头昏眼花,左逃右窜都躲不开,心中一急,钻到地下,在土中走了二十多里,才保住了性命。
1469 |
1470 | 悟空钻出地面,只觉得浑身疼痛,身上一点劲儿也没有,想起无法营救师父师弟,不由地哭了起来。这时来了一位老婆婆问他为什么哭,悟空把经过说了一遍。老婆婆告诉他紫云山千花洞有位菩萨叫毗蓝婆,能够收伏这妖怪。
1471 |
1472 | 老婆婆给悟空讲了千花洞的方向后,一晃就不见了。悟空知道这是神仙暗中帮助,连忙驾筋斗云来到紫云山千花洞。他高高兴兴地走进洞里,见一位女道姑坐在当中,想她就是毗蓝婆菩萨,就上前施礼,说明了来意。
1473 |
1474 | 毗蓝婆菩萨答应帮悟空降伏妖怪,两人一起驾云来到黄花观。毗蓝婆菩萨藏在云里,让悟空把妖怪引出来。老道见悟空又来了,就又念起咒语,眼里放出金光。毗蓝婆菩萨取出一根绣花针扔到空中,只听一声巨响,破了金光。
1475 |
1476 | 毗蓝婆按下云头,和悟空走进黄花观,见那老道已经现了原形,原来是只蜈蚣精。悟空想一棒打死他,毗蓝婆让他住手,先去救师父。唐僧师徒三人正口吐白沫,昏迷不醒。毗蓝婆当时拿出三粒解毒丸,让悟空帮他们服下。
1477 |
1478 | 一会儿,三个人苏醒过来。唐僧他们连忙行礼致谢。毗蓝婆收了蜈蚣精,驾云回山去了。悟空一把火烧了黄花观。师徒四人收拾好行李、马匹,又登上了西行的道路。
1479 |
1480 | 第29回 狮驼岭神僧战魔王
1481 |
1482 | 又是一个夏天过去了,唐僧师徒路经一座高耸入云的山,见一位老人拄着拐杖站在山坡上喊∶“西去的长老,这山上有一群妖怪,已经吃了很多人了,你们就不要去了。”唐僧听了以后大惊失色,连忙叫悟空去问个明白。
1483 |
1484 | 原来这老人是太白金星变的。他告诉悟空,这里叫狮驼岭,有八百里长,中间有个狮驼洞,洞里有三个魔王很厉害,本领十分高强。他说悟空得想一条妙计,才能过得去。悟空谢过太白金星,跳回地面,把太白金星讲的话告诉了师父。
1485 |
1486 | 悟空让八戒、沙僧保护师父,自己上山打听消息。他见一个巡逻的小妖手敲着梆子走过来,就变成了总巡风,对小妖说∶“大王知道孙悟空善于变化,所以要我来查看你们当中谁是孙悟空变的。”
1487 |
1488 | 那小妖连忙说自己是个巡逻的,悟空假装不信,要他讲讲大王的本事。小妖说∶“当年王母娘娘蟠桃会宴请各路神仙,没有请大王,他一怒之下反了天庭,一口吞下了玉帝派来的十万天兵。”
1489 |
1490 | 悟空接着又问二王和三王的本领,小妖说∶“二王身高三丈,鼻子像一条蛟龙,如果和人打,只须用鼻子一卷,既使你是钢筋铁骨也能被吞到肚子里;三王从天南飞到地北,只要一眨眼功夫;他随身带一个阴阳二气瓶,如果把人装了进去,一时三刻就能化成血水。”
1491 |
1492 | 悟空又从小妖那得知,三王五百年前吃了狮驼国国王和文武百官,霸占了国家。如今他想吃唐僧肉,但又害怕孙悟空,所以才和大王、二王联合起来捉拿唐僧。悟空一棒打死小妖,变成小妖的模样,拿着令旗进洞去了。
1493 |
1494 | 悟空来到洞前,小妖们摆好阵势站在洞口,问他见到孙悟空没有。
1495 |
1496 | 悟空说∶“正在磨棍子,一棒就能打死十万妖精。”又告知众小妖∶“唐僧只有一个,肉怎么可能分到我们嘴里?何必要做替死鬼呢?不如逃命去吧!”小妖们听了一哄而散。
1497 |
1498 | 悟空进了后洞,见上面坐着三个妖王,就上前把孙悟空的厉害说了一遍。一个头目进来报告说洞外的小妖都已经逃走了,老妖连忙传令把前后洞门都关上。悟空说∶“关了洞门他也会变成苍蝇飞进来的。”
1499 |
1500 | 悟空拔根毫毛变成一只金头苍蝇,向老妖脸上飞去。老妖一见大惊失色,忙叫小妖扑打。悟空看到这情景,忍不住笑了出来,露出了猴相,被三王发现。三王赶忙抓住悟空又命小妖拿出绳子把悟空捆住,拿出阴阳二气瓶,要将悟空吸到瓶中。
1501 |
1502 | 小妖拎着悟空身上的绳子,要把他扔进瓶里,悟空艺高人胆大,也不挣扎,想看看这阴阳二气瓶到底有多厉害。悟空刚被抬到瓶口,就被吸了进去。三王盖上瓶子,贴了封条。悟空在瓶中用尽七十二变都无济于事,最后拔下一根救命毫毛,变成钢钻,钻那瓶底。
1503 |
1504 | 阴阳二气瓶被钻破了一个小眼,悟空变成一只小虫钻出来,飞到老妖的头上乱叮乱咬。两个时辰后,三王揭开瓶盖,惊见宝瓶已经被钻破,气得咬牙切齿,发誓一定要把孙悟空碎尸万段。悟空见状露出原形,举棒打出洞去。
1505 |
1506 | 悟空回到唐僧面前,把经过详细地说了一遍,要八戒一起除妖,唐僧同意了。悟空、八戒来到洞前讨战,老妖亲自出来迎战。双方讲好一个对一个,不准有帮手。老妖举刀就砍,悟空也不还手,让老妖砍了几刀,一点也没受伤。
1507 |
1508 | 老妖急了,双手举刀涮的一声把悟空砍成两半。谁知悟空分成两半的身子就地一滚,变成两个。老妖气道只要悟空能合成一个,就让悟空打一棒。
1509 |
1510 | 谁知悟空两个身子一搂,就变回了一个,举着金箍棒朝老妖打去。老妖知道他铁棒厉害,慌忙举刀向外一迎。
1511 |
1512 | 两人打了二十多个回合不分胜负,八戒忍不住上前助战。老妖一见,知道自己打不过,按下云头落在坡前,张开大嘴,等八戒追来。八戒见了急忙钻进草丛中躲起来。悟空赶来,不偏不斜刚好落在老妖的嘴里,被老妖吞进肚中。
1513 |
1514 | 老妖得意洋洋地回到洞中。三王一听他吃了悟空,大惊道∶“不能吃!
1515 |
1516 | ”话还没说完,悟空就在老妖的肚子里抖起威风,先来上一套猴拳,再翻上几个筋斗,一会儿又抓住心脏打秋千。老妖痛得连声怪叫,摔倒在地上。
1517 |
1518 | 老妖只得求饶,并答应用轿子送唐僧过山,悟空这才叫老妖张开嘴让他出来。不料老妖等悟空从他喉咙向外爬时,使劲一咬,只听“咯喳”一声,老妖的门牙被磕掉了。
1519 |
1520 | 原来老妖咬在悟空的金箍棒上。悟空抽回铁棒,又在老妖的肚子里拳打脚踢。三王说悟空这样取胜不光彩。悟空经不起激,拔根毫毛变成一根绳子,一头绑在老妖的肝上,一头拿在手里,从鼻孔里钻出来,跟三王打了起来。
1521 |
1522 | 悟空打不过他们三个,就把绳子一拉,妖王疼痛难忍,只好跟着绳子的上下跳跃翻腾,摔得死去活来,二王、三王见了,吓得跪在地上求悟空饶了大王,发誓一定要送唐僧过山。悟空见他们说的不像假话,这才收回毫毛,老妖的肝痛立刻就停止了。
1523 |
1524 | 悟空回到唐僧身边,告诉他自己已经将妖怪降伏了,一会儿就用轿子来接他。正说着,一个小妖来到路口,要悟空出去和二大王交战。八戒要去,又害怕被抓,就让悟空用绳子捆在他腰上,一旦打败了,好把他拉回来。
1525 |
1526 | 八戒和二妖王在坡前只打了几个回合,就让悟空拉绳,悟空嫌他偷懒,反而把绳子扔出去。不料八戒被绳子绊倒,被二王用鼻子卷走。唐僧责备悟空不顾兄弟情谊,把绳子扔了,悟空只好去救师弟。
1527 |
1528 | 八戒被抓进洞后,妖怪把他四肢绑在一起,扔到后洞的水塘里。悟空这时变成一只小虫飞进洞来,等小妖走后就现了原形,用金箍棒把八戒挑上岸,解开了绳子。然后悟空在前面开路,八戒跟在后面,两个人一边打一边往洞外走。
1529 |
1530 | 他们打到洞外。二王知道后立刻提枪追来,甩出长鼻子卷住悟空的腰。
1531 |
1532 | 悟空把手中的铁棒变得又细又长,往二王鼻孔里一捅。二王又疼又痒,松开了鼻子。悟空趁机抓住那长鼻子,像牵牛一样,拉着就走。
1533 |
1534 | 二王被八戒打了一顿,拉到唐僧的面前,妖怪跪在地上求唐僧饶命,并且发誓用八抬大轿送唐僧过山。唐僧心软,把他放了。二王回洞说明了经过,和大王商量准备轿子。三王出了个调虎离山的计策,挑选十六名小妖,说要把唐僧抬到狮驼城去。
1535 |
1536 | 一切安排好后,妖怪们抬着轿子来接唐僧。唐僧高兴地上轿,八戒、沙僧紧紧跟在后面,悟空在前面开路。三个妖王跟在轿子的旁边,陪着一起走。五天后他们来到狮驼城外。悟空睁开火眼金睛一看,心里暗叫不好。
1537 |
1538 | 三王见悟空看出了破绽,举起方天画戟就打。悟空、八戒、沙僧各挡住一个妖王,打得难解难分。十六个小妖趁混战时,抢了行李,白马,抬着唐僧,跑进城去。
1539 |
1540 | 天渐渐黑了,八戒一不小心,被老妖咬住扔进城里,小妖们立刻把他捆住;沙僧一看情形不妙,心里一慌,被二王的鼻子卷住,也扔进城里。于是三个妖怪一齐来打悟空,悟空一个人难以抵挡,驾着筋斗云冲出重围。
1541 |
1542 | 三王立刻现出原形,张开双翅,抓住悟空,捉到城里,和八戒、沙僧捆在一起。二更天时,三个妖怪登上正殿,让小妖抬出一个铁蒸笼,把唐僧师徒四人放进蒸笼。孙悟空立刻拔根毫毛,变成一个假身,自己跳到空中。
1543 |
1544 | 悟空见小妖搬来许多干柴,要点火去蒸师父和师弟,就念动咒语,叫来北海龙王敖顺,要敖顺保护师父。敖顺立刻把一口冷气吹到锅下,围着炉子盘旋,任凭小妖们把火烧得多旺,锅底却总是凉的。
1545 |
1546 | 悟空把一些瞌睡虫弹到烧火和守护的小妖脸上,等他们睡着后,就跳下云头,悄悄来到蒸笼旁,揭开笼盖,把师父、八戒和沙僧救了出来,然后轻手轻脚摸到金銮殿,找到武器,拿了行李,牵了白马,向外走去。
1547 |
1548 | 他们还没走出皇宫,三个妖王就醒了,发现他们已经逃走,就带着小妖们追来。唐僧吓得浑身发软,被老妖抓住,二王抓了沙僧,三王抓了八戒,小妖们抢了行李、白马,只有悟空逃走了。
1549 |
1550 | 妖怪们回到宫殿,三妖王把唐僧藏进锦香亭的铁柜之中,却散出谣言,说唐僧已经被活活吃了,顿时全城人都知道了。东方发白的时候,悟空便到狮驼洞将上万个小妖全都打死,又回到城中,变成一个小妖的样子打听消息。
1551 |
1552 | 悟空溜进宫中,见八戒和沙僧被绑在柱子上,就上前问他们师父在哪儿。八戒、沙僧听出是悟空的声音,说师父被妖怪活活吃掉了。悟空听了心如刀搅,仰天惨叫一声,扔下八戒和沙僧,驾着筋斗云离去。
1553 |
1554 | 悟空决定去见如来佛,于是就驾着筋斗云来到灵山,见了佛祖倒身下拜,说明来意。佛祖听后,问了三个妖怪的来历,不料一问之下,三王竟然是如来的亲戚,接着又叫来文殊、普贤两位菩萨,一同下凡捉妖。
1555 |
1556 | 如来佛祖带着文殊、普贤和悟空驾着五彩祥云来到狮驼城的上空。如来让悟空前去讨战,把妖怪引出来。悟空遵命,直接来到城上叫骂,不一会儿就把三个妖王引了出来,悟空一个人不是三个妖怪的对手,几个回合以后,驾着云逃走。
1557 |
1558 | 三个妖怪紧追不舍,悟空把身子一闪,藏到佛祖的背后。如来带来的五百罗汉、三千揭谛把三个妖怪圈在中间。文殊、普贤念动咒语,老妖和二王在云团中打了个滚,各自现了原形,原来竟是文殊和普贤的坐骑——青毛狮子和黄牙象。
1559 |
1560 | 三王却不降伏,现出原形,飞到如来的背后,去抓悟空。如来佛祖用手一指,三王飞不动了,只好向如来求饶,情愿出家,并且告诉孙悟空他把唐僧藏在锦香亭的铁柜里。
1561 |
1562 | 悟空立即拜谢了佛祖,驾云入城,只见城中的小妖们都已经逃走了。悟空救下八戒、沙僧后,又找到白马和行李,一起来到锦香亭,从铁柜里救出唐僧,把佛祖收伏三个妖怪的事说了一遍。师徒四人离开狮驼城,向西天走去。
1563 |
1564 | 第30回 比丘国降妖救群童
1565 |
1566 | 唐僧师徒又走了几个月,来到比丘国。城中的行人衣冠整齐,街面繁华,但面容哀凄,且家家户户门前都有一个鹅笼,用五彩绸缎罩着。悟空感到十分奇怪,就变成蜜蜂钻到一个笼子里,见里面竟是一个不满七岁的男孩。
1567 |
1568 | 他一连看了几家,家家都是这样,就变成原样,回去向唐僧报告。唐僧师徒来到驿馆后,就向驿丞打听原因,驿丞本来不愿多言,拗不过唐僧,就说出了原因∶三年前,有一个老道送给国王一个十六岁的美女。
1569 |
1570 | 国王整天和美女在一起,身体越来越弱。太医用尽了良方,都不能治好国王。这老道给国王一个秘方,用一千一百一十一个小男孩的肝做药引,吃后,还可以千年不老。鹅笼里装的男童,都是从老百姓家里选出来做药引的。
1571 |
1572 | 唐僧听后,觉得太残忍,伤心得流下眼泪。沙僧说那老道肯定是妖精,悟空一听顿时有了主意,他跳到空中,叫来城隍神、土地神吩咐了一番。当天晚上,众神仙把所有鹅笼全部偷走,藏了起来。
1573 |
1574 | 第二天早上,悟空变成小虫,叮在唐僧的帽子上,跟唐僧入朝倒换关文。国王头昏眼花,拿着关文看了又看,才取出大印盖上,递还给唐僧。这时,老道来了,国王和满朝官员都起座相迎。
1575 |
1576 | 老道竟然和国王并排坐下,唐僧一见,起身告辞。悟空在唐僧耳边说∶“这老道是个妖精,国王中了邪了!师父,您先回驿馆,我在这听他说什么。”说完,悟空又飞回金殿,这时,五城兵马官来报∶昨晚一阵狂风,把鹅笼和小孩全都刮走了。
1577 |
1578 | 国王又惊又恼,老道又出了个主意∶“用唐僧的心肝熬药,胜过男孩的千万倍。”国王听后,忙点兵马围攻驿馆,捉拿唐僧。悟空立即飞回驿馆,变回原样向唐僧报信,二人商量,由悟空变成唐僧,再把师父变成自己。
1579 |
1580 | 变成唐僧的悟空被捉到金殿前,听国王说要用他的心做药引后说∶“心倒有几个,不知陛下要什么颜色的?”老道指着假唐僧说∶“要你的黑心!
1581 |
1582 | ”
1583 |
1584 | 假唐僧叫人拿来一把牛角尖刀,把肚皮剖开,从里滚出来一堆心,他将那些血淋淋的心一个个拨开给国王看,有红心、白心、名利心、嫉妒心、好胜心、狠毒心……,就是没有黑心。国王吓得忙叫假唐僧收拾起来。
1585 |
1586 | 悟空变回原形,对国王说∶“我们和尚都是一片好心,只有这个老道是黑心,可以做药引,我帮你取出来!”那老道见是大闹天宫的孙大圣,急忙站起来,驾着云就走。
1587 |
1588 | 悟空一个筋斗追上去,和老道在半空中打起来,老道的蟠龙拐杖挡不住金箍棒,见机化作一道寒光,落进皇宫,把送给国王的妖后夹在腋下,带出宫门,消失得无影无踪了。
1589 |
1590 | 悟空落下去,回到殿上。这时,君臣们才知道受了蒙骗。悟空让国王派人把师父、师弟接来,悟空在唐僧脸上吹了口仙气,唐僧马上就恢复了原身,悟空问妖道住在什么地方,国王告诉悟空说住在城南柳林坡的清华庄。
1591 |
1592 | 悟空和八戒驾云来到柳林坡,却找不到清华庄。悟空叫来土地神询问,土地神说∶“在南岸九叉头的一棵柳树根下,左转三转,右转三转,再用双手一齐拍在树上,连叫三声开门,就出现清华洞府。”
1593 |
1594 | 悟空按土地神所说的果然找到了清华府,闯了进去。妖怪一见悟空,丢开怀中的妖后,抡起蟠龙拐杖来打悟空。悟空把妖道引出洞府,八戒立即举起钉耙就打。妖道见打不过他俩,化成寒光就逃。
1595 |
1596 | 悟空和八戒紧追不放,忽然见南极寿星把那道寒光罩住,说∶“二位慢来,这妖怪是我的坐骑,就饶他一命吧!”悟空要寿星使妖怪现出原形,寿星把寒光放出来,厉喝一声,那妖怪在空中一滚,原来是只梅花鹿。
1597 |
1598 | 悟空又请寿星替他们把妖后捉住,一起带回比丘国现形,寿星答应了。
1599 |
1600 | 悟空和八戒又回到清华府,妖后一见情况,化道寒光就往外跑。悟空看准照着寒光就是一棒,将妖后打翻在地现出原形,原来是只白面狐狸。
1601 |
1602 | 八戒抓住狐狸尾巴,提出清华庄,悟空放了一把火把妖庄烧成灰烬,然后和寿星、八戒牵着鹿,拖着狐狸,来到比丘国,对国王说∶“这鹿儿是你的国丈,这狐狸是你的皇后!”
1603 |
1604 | 寿星临走之前赐给国王三个枣儿,国王吞下后,立刻觉得病好了许多,悟空跳到空中,召来城隍神、土地神,让他们立即把小孩送回来。刹那间狂风大作,城里空地上落下一千一百一十一个鹅笼。
1605 |
1606 | 第31回 孙悟空三进无底洞
1607 |
1608 | 城中百姓找到自己的孩子,欢欢喜喜地领回家去。唐僧师徒走时,全城百姓敲锣打鼓送到城外。唐僧他们离开比丘国,早起晚睡,历经春冬。这天,他们走上一座高山,进了一片黑松林,唐僧饿了,要悟空去化斋。
1609 |
1610 | 悟空扶唐僧下马就地休息,自己驾云化斋去了。唐僧在林中念经,忽然听见有人喊“救命”。他顺着声音找到一棵松树下,见树上绑着一个女子,便问原因。女子说她扫墓遇到强盗,将她绑在这里。
1611 |
1612 | 唐僧忙叫八戒去解那女子。八戒刚要动手,悟空从空中跳下来,揪住八戒耳朵说∶“师弟别动,她是妖怪!”原来悟空在半空中见一团黑气把师父头上的祥光盖住,就知道师父遇上妖怪,便赶回来了。
1613 |
1614 | 唐僧不再争辩,由悟空扶到马上,撇下那女子走了。那女子见被悟空识破,还不肯罢休,就把几句话吹进唐僧耳朵里∶“你放着活人不救,还拜什么佛取什么经!”
1615 |
1616 | 唐僧一听,心中怦怦乱跳,也不顾悟空劝阻,带着八戒回到松树下,从树上解下那个女子,又扶她上马。于是,唐僧在前,八戒、沙僧挑担牵马在后,悟空走在唐僧和女子的中间,继续西行。
1617 |
1618 | 天快黑了,他们来到一座寺院前。唐僧让徒弟们在外边等候,自己上前借宿。寺院里的和尚把唐僧迎进寺院,又请悟空他们进去,安排斋饭,招待他们。吃完,和尚问唐僧,让那女子在什么地方休息。
1619 |
1620 | 唐僧见和尚有些怀疑,连忙说明女子的来历。于是,那和尚便把女子送到天王殿去休息去了。没想到这天晚上唐僧着了凉,一早起来就喊头痛,没办法,只好在这休息,一住就是三天。
1621 |
1622 | 一天傍晚,唐僧口渴,悟空拿着碗到殿后的厨房去倒水,见几个小和尚坐在那哭,就上去问原因。众和尚说,昨天晚上两个和尚去撞钟,只听见钟响,不见人回来。三天里,就少了六个和尚。
1623 |
1624 | 悟空料定是妖精做怪,当天晚上来到天王殿,摇身变成个小和尚,打完钟后,敲着木鱼坐着念经,一直等到半夜,呼呼一阵风响过后,猛闻到一股香气,接着听到环佩响,这时一个美貌女子走进殿来。
1625 |
1626 | 那女子一把搂住悟空,要带他到后园快活,悟空跟她来到后园。那女子一伸腿把悟空绊倒,口里喊着“心肝哥哥”伸出双手掐住悟空的脖子,张嘴就准备吃。
1627 |
1628 | 悟空把手一叉,腰一挺跳起来,变回原样,拿出金箍棒劈头就打。那妖怪见是悟空,也不害怕,随手拿出双股剑,迎上去。没多久,妖怪甩出左脚的绣花鞋,变成自己,挡住悟空,她却化成一阵清风跑了。
1629 |
1630 | 她闯进方丈的屋里,捉住唐僧就走。悟空和那假妖怪打了一阵,一棒打过去,才发现是只绣花鞋,知道中计,连忙去看师父,哪儿还有师父的影子。气得悟空拿起棒要打八戒和沙僧。
1631 |
1632 | 天亮后,悟空三人回到黑松林,叫出山神、土地神询问,才知道妖怪住在千里以外的陷空山无底洞里。于是他们牵着马,驾起云,往南走。不一会儿,见一座大山挡住云,悟空叫八戒下去打探。
1633 |
1634 | 八戒跳下去,走进山凹深处,只见两个年轻女子在打水,就变成个胖和尚,走上前打听,那两个女子告诉他,奉老夫人的命令,来挑些水,回去安排筵席,让唐僧吃饱晚上好成亲。
1635 |
1636 | 八戒连忙上山告诉悟空。悟空立即和八戒、沙僧下山,远远地跟着那两个女子,走进深山,进到山里见到一座上头刻着“陷空山无底洞”的牌楼,果然见到牌楼下有一个光溜溜的洞,八戒探头往下一看,里面深得看不见底,不由得害怕起来。
1637 |
1638 | 悟空叫八戒、沙僧守住洞口,自己纵身跳进洞里,好长时间才到洞底,他摇身变成个苍蝇,飞了进去,见那女妖打扮得比以前更漂亮,正在吩咐小妖怪摆好筵席跟唐僧成亲。悟空一听,连忙向里飞,去寻找师父。
1639 |
1640 | 悟空找到唐僧后跟他说∶“等会儿在宴席上,你倒酒倒快点,我变成个小虫飞到泡沫里,让妖精喝进肚里,把她弄死后,咱们就走。”两个人刚说完。那妖精就进来了。
1641 |
1642 | 妖精搀着唐僧走进草亭,斟满一杯美酒,递给唐僧,说是交欢酒,一定要喝。唐僧见是葡萄酿的素酒,勉强喝了。他又急忙把酒斟满,果然斟起一个酒花,悟空轻轻飞到酒花下边,唐僧立刻端起来递给妖精。
1643 |
1644 | 谁知妖怪接过酒后拉着唐僧拜了两拜才举杯。这一耽误,那酒花早就没有了,露出小虫。妖精用小指把虫向外一弹,悟空就势变成老鹰,张开巨爪,把一桌酒席掀翻,撇下唐僧自己飞走了。
1645 |
1646 | 这时,悟空又有了一个计策,他飞出洞口,叮嘱八戒、沙僧守好洞口,自己又飞回洞里,变成苍蝇,来到唐僧身边说∶“师父,我看见她后面有个花园,你哄她到那棵桃树边,只需如此如此,就能得救。”
1647 |
1648 | 于是唐僧就叫人请来妖精,要她陪着出去散散心。妖精满口答应,同唐僧相搀着走进花园。到了桃树边,悟空在师父头上掐了一下,飞到桃树枝上,变成个大红桃。唐僧走过去,摘下它,捧着递给妖精吃。
1649 |
1650 | 妖精乐滋滋地接过去便咬,谁知刚张嘴,还没来得及咬,那桃儿一下就滚进肚里。悟空一到妖精肚里,就变回了原形,连踢带打,快把她的肚皮给撑破了。妖精疼痛难忍,倒在地上大喊大叫。
1651 |
1652 | 妖精没有办法,只好叫小妖怪送唐僧出洞,悟空在肚子里叫道∶“你亲自送我师父出去。”妖精只好挣扎着起来,背上唐僧,使劲一跳,把唐僧背出洞。沙僧走上前问唐僧,师兄在什么地方。唐僧告诉他,在妖精的肚子里。
1653 |
1654 | 悟空叫妖精张开嘴,纵身跳了出来,拿出金箍棒朝着妖精就打,那妖精随手也拿出两口宝剑迎了上去。八戒见他们打得热闹,便拉着沙僧跳上云端,给悟空助战。妖精一见心慌,故伎重演,脱下绣花鞋变成自己,借此逃跑了。
1655 |
1656 | 妖精回洞时路过牌楼,见唐僧一个人坐在那里,便上前一把抱住唐僧,又拉了行李、马匹一块回洞了。八戒一耙打倒妖精,见是一只绣花鞋,三人才知道上当,连忙回来找师父,师父早已经不见了。
1657 |
1658 | 悟空第三次进入无底洞,抡起铁棒,打开门楼,却找不到里面的人。忽然闻到一阵扑鼻的香气,悟空寻着香气找过去,见后堂上供着一块金字牌位,写着∶“尊父李天王之位”,旁边一块牌位写着“尊兄哪吒三太子之位”
1659 |
1660 | 。
1661 |
1662 | 悟空满心欢喜,拿起牌位和香炉出了洞。八戒、沙僧见悟空很高兴,以为是把师父救出来了。悟空笑着说∶“嘿嘿,不用我们救,只要问这牌位上的要人就行了,那妖精肯定是李天王的女儿,三太子的妹妹,我现在上天要人去了。”
1663 |
1664 | 悟空写好状纸,拿着牌位、香炉驾着云来到上界,一直到了灵霞殿。玉帝看完状纸,将原文批成圣旨,派太白金星去宣李天王父子见驾,悟空也跟着金星去云楼宫。
1665 |
1666 | 李天王听完圣旨,怒道∶“我三个儿子一个女儿,女儿贞英今年才七岁,还不懂事,怎么能去当妖怪!这是诬告,快去拿缚妖索,把这个猴子捆上。”巨灵神等一拥而上,把悟空捆了个结实。天王心中怒气未消,取刀要杀悟空。
1667 |
1668 | 哪吒连忙拉住天王说∶“父王忘了三百年前白毛老鼠精在灵山偷吃了如来佛祖的香花宝烛,我们奉命把她捉住,本来想打死她,如来佛却吩咐把她放了。她不是拜父王为父,拜孩儿为兄,设牌位供奉吗?”
1669 |
1670 | 李天王一听,顿时醒悟,亲自为悟空松绑,忙施礼赔罪。太白金星就让李天王、哪吒带领天兵天将跟悟空去陷空山捉拿妖精,自己回去复旨。天王、悟空不一会儿来到陷空山上,八戒、沙僧忙上前相迎。
1671 |
1672 | 天王、哪吒领着天兵天将打入无底洞时,那妖精正在一个小洞中逼唐僧成亲。她见天王、哪吒来了,连忙跪在地上求饶。哪吒取出缚妖索把妖精捆上,押出洞回上天等候发落。唐僧师徒便收拾行李继续赶路。
1673 |
1674 | 第32回 灭法国弄神劝君王
1675 |
1676 | 唐僧师徒四人顶着炎热,一直往西走。一天,他们正在赶路,在路旁柳荫中走出一个牵着小孩儿的老婆婆,对唐僧叫道∶“和尚,快点往东走吧!
1677 |
1678 | 往西是条死路。”原来,前面是灭法国。国王许愿要杀一万名和尚,现在只差四个就够了。
1679 |
1680 | 唐僧问她能不能绕道走,不进城,老婆婆说不行。悟空是火眼金睛,他认出那是观音菩萨和善财童子,忙跪下。观音驾着云,变回原样。唐僧连忙跪下磕头,八戒和沙僧也连忙跪下。霎时,祥云飘缈,观音驾云回南海了。
1681 |
1682 | 师徒四人商量让悟空先进城,找一条偏僻的道路,趁夜黑,穿城而过。
1683 |
1684 | 悟空驾着云来到灭法国上空,变成扑灯蛾沿街飞,他见王小二店里有几个商客,吃完饭,脱了衣服,摘下头巾,各自上床睡觉,心中就有了主意。
1685 |
1686 | 悟空飞进屋里,把灯扑灭,使个法术,拿着衣服、头巾驾云回到师父身边。于是,师徒四人脱掉僧服,换上俗装,戴上头巾,装扮成贩马的商人,往城中走去。
1687 |
1688 | 悟空领着师父、师弟住进王小二店斜对面的一家店里。店主赵寡妇见是贩马的客商,忙叫人杀鸡宰鹅,做菜吃饭。悟空忙说∶“今天是我们的斋戒日,你明天再杀吧!先做些素食,价钱仍按这给你。”
1689 |
1690 | 该睡觉了,他们怕睡觉着后滚掉帽子,就问赵寡妇要黑点的屋子睡。赵寡妇的女儿便让母亲把一个宽四尺,长七尺,高三尺的大柜子让给唐僧师徒睡。悟空看看柜子,很满意,叫店家把白马也牵过来绑上,并把柜子锁上。
1691 |
1692 | 四个人睡在柜中你挨着我,我挤着你,直到半夜才睡着。可是悟空怎么也睡不着,就故意找八戒的麻烦,还说这次贩马一共赚了一万五千两银子。
1693 |
1694 | 谁知刚巧这店里有个烧火的帮工,和强盗串通,听了这话忙去报信。
1695 |
1696 | 一会儿,二十多个强盗拿着棍棒来到店里抢劫。他们在店中找来找去,也没有找到贩马的人,见房中有一个大柜子,柜脚上拴着一匹白马,柜盖紧锁着,以为是金银财宝,用绳捆上,抬起就走。
1697 |
1698 | 强盗们杀了守城的士兵逃出城。巡城总兵和兵马元帅听到报告,就带着人马,出城捉贼,强盗们见官军来势凶猛,不敢应战,放下柜子,丢了白马,各自逃命去了。官军抬着柜子,牵着白马,回总兵府,准备天亮了,再报告皇上。
1699 |
1700 | 悟空在柜中想∶“明天打开柜子,灭法国国王见我们是和尚,还能活吗?”就想出一个主意,把金箍棒变成三尖头的钻,在柜子底钻了个小洞,然后自己变成蚂蚁,从洞口爬出来,变回原形,驾着云往皇宫去了。
1701 |
1702 | 这时,皇宫里的人都睡着了,悟空用个分身法,把左臂上的毫毛都拔下来变成小悟空,右臂上的毫毛也都拔下来变成瞌睡虫,分布在皇宫内院,五府六部,让他们个个睡稳,又让小悟空把所有人的头发都剃光。
1703 |
1704 | 悟空收回毫毛,驾着云回到总兵府,仍变成蚂蚁,钻到柜子里。第二天,皇宫里的宫女太监起来梳洗,发现一个个都没有头发,十分惊慌,谁知三宫皇后也没有了头发,忙叫来国王,惊见国王也成了秃头,大家吓得魂不附体。
1705 |
1706 | 国王传旨,不准把内宫脱发的事说出去,然后就上殿了,没想到在早朝上,文武官员纷纷启奏昨天晚上脱发的事。君臣都眼泪汪汪地说∶“从此以后,再不敢杀和尚了。”这时,巡城总兵报告昨晚捉贼并缴获一个赃柜的事。
1707 |
1708 | 国王命令人把柜子抬到五凤楼前。下令打开柜子,柜盖刚打开,八戒忍不住跳出来,把文武官员们吓了一跳。悟空慢慢的搀着师父出来,沙僧也搬出行李,八戒看见巡城总兵牵着白马,叫道∶“马是我的!”
1709 |
1710 | 国王见是四个和尚,忙走下宝座同文武官员一起拜见,并问来历,唐僧一一说明后,又讲了在柜中的经过。国王说∶“因为原来有个僧人诽谤过我,我就立下誓言要杀一万名僧人。没想到昨天晚上自己也成了和尚,还请长老收我做徒弟吧!”
1711 |
1712 | 悟空笑着说∶“嘿嘿!我们不收你这个徒弟,你还是做你的皇帝吧!只要给我们换了关文,送我们出城,保证你的国家民富国强。”国王听命照办并请唐僧给他换个国名,唐僧就把“灭法国”改为“钦法国”。国王大喜,设宴款待唐僧师徒。
1713 |
1714 | 第33回 师兄弟大战连环洞
1715 |
1716 | 唐僧师徒告别了钦法国国王,出城向西继续赶路。悟空把昨天晚上如何让国王皈依佛门的事说了一遍,师徒们都笑得合不上嘴。说笑间,他们走进一座巍耸的大山中,忽然一阵风刮过,尘土飞扬。
1717 |
1718 | 悟空害怕出事,就让师弟保护师父,自己驾着云登到空中,向下观看。
1719 |
1720 | 只见一个妖精领着三、四十个小妖怪,在那里喷风吹砂。悟空心想,干脆让八戒去打这一仗,赢了算他一功;如果被妖精捉住,再去救他。
1721 |
1722 | 悟空跳下云,骗八戒说烟雾是因为前面有个人家在蒸米饭和馍馍。八戒贪吃,忙找借口说要去给马找些嫩草。悟空心中暗暗高兴,悄悄地嘱咐他∶“那饭只给好看的吃,你这么丑,肯定不给你。”于是八戒变成个胖和尚走了。
1723 |
1724 | 八戒闯进妖精摆的圈子阵中,被小妖精围住,拉拉扯扯地往洞里拖。八戒这才知道上了悟空的当,变回原形,拿出了钉耙就是一阵乱打。老妖精听到报告,立刻抡起一条铁杵,赶出洞,两个人就在山凹里打了起来。
1725 |
1726 | 悟空见八戒这么长时间不回来,就拔根毫毛变成自己,陪着师父和沙僧,真身驾云来到山凹里,见八戒和妖精正在交战,便高声叫道∶“八戒别慌,老孙来了!”八戒一听,来了精神,没几下,就把那群妖怪打败了。
1727 |
1728 | 悟空也不理他,掉头回到师父跟前。不一会儿,八戒回来了,把刚才遇到妖怪的事告诉唐僧。悟空鼓励八戒,让他做开路先锋,八戒想那妖怪的本领跟自己差不多,就答应了。于是,师徒四人便一路进了山里。
1729 |
1730 | 再说那妖精打了败仗,垂头丧气。这时一个小妖怪出了个主意∶选三个会变化的小妖,变成老妖怪的样子,分别缠住悟空、八戒、沙僧、自己则去捉唐僧。老妖怪一听,十分高兴,立刻在所有的小妖精中,选出三个小妖,变成老妖精。
1731 |
1732 | 唐徒师徒来到妖怪埋伏的地方,一个假老妖从路旁跳出,直奔唐僧。八戒忙拿出钉耙,和妖精一来一往打了起来。唐僧等人又向前走了不远,草丛里又跳出一个妖精,来捉唐僧,悟空急忙挥棒打去。
1733 |
1734 | 沙僧保护着唐僧继续向前走,山背后又跳出一个妖精,沙僧拿杖和妖精打起来。这时真妖精在半空中见唐僧一个人在马上,便伸出五爪钢钩,将唐僧一把抓住,一阵风过后,就不见了。
1735 |
1736 | 悟空在草坡下打败小妖怪,急忙回到路旁,只见白马和行李,却找不到师父。悟空连忙牵着马,挑着担,满山头找师父。一会儿,八戒、沙僧先后跑了回来,三人凑在一起说明了情况。悟空气得暴跳如雷,叫道∶“中计了!”
1737 |
1738 | 兄弟三人猜想妖精肯定在这山里,就进山寻找妖洞。走了二十来里,见悬崖下有一座洞府,悟空急忙跳到跟前,见洞门紧闭着,门上的石板上有八个大字∶“隐雾山折岳连环洞。”八戒见了,举着耙子就把石门打烂了。
1739 |
1740 | 守门的小妖怪急忙跑进去报告老妖精,老妖精的先锋又出了一个主意,用柳树根砍成人头的模样,喷上人血,叫一个小妖怪用盘子端到门口,对悟空说∶“大圣爷爷,你师父被我大王捉进洞吃了,只剩下个人头。”
1741 |
1742 | 那小妖怪说完,从门洞里扔出个头来。八戒一见哭了起来,悟空说这是个假人头,拿出金箍棒,扑地一下就打烂了,八戒见是个柳树根,忍不住骂起来∶“拿柳树根骗你猪祖宗!”
1743 |
1744 | 小妖怪战战兢兢的跑进去报告老妖怪。老妖怪叫人在剥皮亭里找了个没吃完的真人头去哄孙悟空。于是,小妖怪又把一个人头端出来,扔到洞口。
1745 |
1746 | 悟空见是个真头,不由落泪。八戒、沙僧也放声大哭。
1747 |
1748 | 八戒把那颗头抱在怀里,跑上山崖,在向阳避风处,用钉耙挖出一个坑,把头放进去埋了,又堆了一个坟。兄弟三人哭了一阵,悟空让沙僧守墓并看守行李和马匹,自己带上八戒去杀妖精,给师父报仇。
1749 |
1750 | 悟空和八戒来到妖洞前,二人一阵棒耙把妖洞的石门打碎,又连声叫道∶“还我唐僧来!”老妖怪没有办法,只好带领小妖杀出来。悟空知道师父是被老妖怪害死的,杀气腾腾举棒就打;八戒举耙也向妖怪的先锋冲过去。
1751 |
1752 | 那先锋带领小妖怪围上来,双方打了好久不分胜负。悟空见那些小妖怪打不退,就使个分身法,拔下一把毫毛嚼碎,喷出去,变成一群小悟空打过去。那一、二百个小妖怪顾前不顾后,败回洞里。
1753 |
1754 | 悟空和八戒从里往外杀。八戒的钉耙上下挥舞,碰上的小妖怪不是九个血洞,就是被打成肉泥,吓得老妖怪刮起一阵风,逃回洞里。先锋不会变化,被悟空一棒打倒,现出原形,原来是个铁背苍狼怪。
1755 |
1756 | 老妖怪逃回洞后,忙叫小妖怪搬石挑土,把前门堵死,悟空收回毫毛,和八戒追过来,八戒用耙拼命打那洞门,洞门却一丝不动。悟空猜想门肯定是堵死了,便叫八戒去沙僧那儿等他,自己绕到山后去寻找老妖怪的后门。
1757 |
1758 | 悟空转过山坡,听到潺潺的水声,寻着水声找过去,是一条山涧。在山涧边,有座门,悟空猜想肯定是妖怪的后门,就变成个水老鼠,从门旁的水沟钻进洞里。一直到天井,跳出沟,又变成个有翅膀的蚂蚁,到处寻找老妖怪。
1759 |
1760 | 他展开双翅一直飞到中堂,听见一个小妖怪跑进来向老妖怪报告∶“孙悟空、猪八戒和沙僧把那个头当成唐僧的头埋了。”悟空一听这话,知道师父还没给吃掉,心中暗暗高兴,决定先去找师父。
1761 |
1762 | 他见中堂旁有个小门关得很紧,就从门缝钻过去,原来是个园子。他飞到园子深处,见一棵大树下绑着两个人,其中一个正是师父,忍不住变回原形,上前叫了声“师父”,把老妖怪的诡计说了一遍,让师父再忍耐一会儿。
1763 |
1764 | 悟空又变成蚂蚁飞回中堂,听见老妖怪正在和小妖怪商量怎么吃师父,十分生气,便拔下一把毫毛嚼碎喷过去,变成无数个瞌睡虫,钻进众妖怪的鼻子里。一会儿,妖怪们全都呼呼地睡着了。
1765 |
1766 | 悟空变回原形,打破旁边的门进到园子里,解下师父。绑在树上的另一个人也求他相救。唐僧告诉悟空他是个樵夫,家里还有位年迈的母亲。于是,悟空也给樵夫解了绳索。三人走出后门,爬上石崖,过了山涧,朝八戒、沙僧那儿走去。
1767 |
1768 | 悟空把师父送到八戒、沙僧跟前。八戒、沙僧见师父安然无恙,不禁喜极而泣。悟空回到妖洞,把老妖怪四肢朝上捆倒,用金箍棒挑着,扛在肩上出了后门,又叫樵夫和八戒找了些柴扔进去,点上火,一会儿,众小妖连同妖洞全都化为灰烬。
1769 |
1770 | 八戒一耙打死老妖怪,妖怪现出原形,是个艾叶花皮豹子精。樵夫为了感谢唐僧师徒救命之恩,恳求他们去见他母亲。唐僧师徒欣然前往。樵夫的母亲知道他们是儿子的救命恩人后,忙磕头感谢,并准备下斋饭。
1771 |
1772 | 第34回 凤仙郡城祈雨救民
1773 |
1774 | 唐僧师徒痛快地吃了一顿,告别樵夫母子,下了隐雾山。他们走了几天,来到一座城里,见城里景象凄凉,街口有许多士兵左右排列,有几个像是官员模样的人站在房檐下,见他们过来,也不让路。
1775 |
1776 | 唐僧向一个官员打听后才知道,这里是天竺国的凤仙郡,因为连年干旱,他们奉郡侯的命令在这里贴出榜文,招求法师求雨救国。唐僧看了榜文说∶“徒弟们,谁会求雨,给他们求一场雨。”悟空说∶“求雨有什么难!”
1777 |
1778 | 官员们听悟空这么说,连忙去报告郡侯。郡侯立刻整好衣冠,来到街口,见了唐僧等人就拜,说∶“请活佛大慈大悲,救救我国百姓吧!”又邀请唐僧师徒到他府中。唐僧答应了,便一同去了郡侯府中。
1779 |
1780 | 郡侯设斋饭招待他们。吃完,悟空与八戒、沙僧站到堂下,悟空念了几句咒语,立刻,正东边一朵乌云落到堂前,东海老龙王敖广变成人样,向悟空施礼,并告诉悟空,下雨容易,但必须有上天的御旨。悟空只好让老龙王先回东海。
1781 |
1782 | 悟空跳到唐僧跟前,把刚才的情况给唐僧说了一遍,然后一个筋斗云来到灵霄殿下,求玉帝降旨下雨。玉帝说∶“凤仙郡郡侯三年前把斋天素供推倒喂狗,朕就立个三个誓言在披香殿里,你们带悟空去看看。
1783 |
1784 | 四位天师带悟空到披香殿里,见有一座十丈高的米山,一只小鸡在慢慢啄食;一座二十丈高的面山,一只哈巴狗在慢慢地舔吃;铁架上挂着一把金锁,下面有一盏灯,火焰烧着那指头粗的锁链。悟空不知道是什么意思。
1785 |
1786 | 天师告诉悟空,玉帝要等鸡啄尽了米山,狗添尽了面山,灯焰烧断了锁链,才给凤仙郡下雨。但又告诉悟空,如果做一些慈善的事,惊动了上天,米、面山立刻就倒,锁链也就断了。
1787 |
1788 | 悟空回到下界,郡侯和大小官员都来迎接。悟空问郡侯三年前推倒斋天素供的事,郡侯说是跟妻子吵架,无意中推倒了供桌。悟空给他讲了玉帝所立下的三件事后说∶“你若一心向善,早晚念佛看经,感动上天,就会下雨。”
1789 |
1790 | 郡侯听了,发誓一心向佛,立刻召集本地的僧道,开始建道场。郡侯领着文武官员天天焚香礼佛,祭拜天地。同时又传出飞报,命令城里城外大家小户,不论男女老幼,也都要烧香拜佛。
1791 |
1792 | 悟空又跳上云去找玉帝求雨。玉帝叫人去披香殿查看,所立两座山都倒了,锁链也断了。这时,凤仙郡的土地神、城隍神、社令神都来拜奏,说凤仙郡所有人家天天烧香拜佛,一心向善,玉帝听了十分高兴,忙下令降雨。
1793 |
1794 | 孙悟空立刻和邓、辛、张、陶四位神仙一起来到凤仙郡境界,在半空中作法下雨。大雨下了一天,足有三尺多深。孙悟空又让各位神仙在半空中现身,让凤仙郡的百姓亲眼看看。郡侯见后,召集郡中百姓一起点香叩拜神仙。一个时辰以后,各位神仙才回去。
1795 |
1796 | 孙悟空降落了云头,回到郡侯府,对师父说∶“现在降雨完毕,民心安定,我们可以走了。”郡侯见挽留不住,就集合全郡的大小官员,热热闹闹吹奏一番鼓乐又高展了各种旗子,送他们走了三十多里,还舍不得分别。最后还依依不舍地目送他们离去,直到看不见身影才回郡城。
1797 |
1798 | 第35回 玉华县收徒服狮怪
1799 |
1800 | 这一天,唐僧师徒四人来到天竺国下属的一个叫玉华县的郡。县中的城主是天竺皇帝的宗室亲戚,被天竺皇帝封为玉华王。没有多久,他们就到了玉华王府。唐僧让三个徒弟在待客馆中休息,他独自一人进玉华府面见玉华王查验通关文牒。
1801 |
1802 | 过了一会儿,两个值殿官到待客馆中来请孙悟空他们去吃斋饭。三个人被带进了王府。典膳官领着唐僧师徒四人来到曝纱亭。亭中已经摆好了一桌素食筵席。他们师徒正在吃饭的时候,三个小王子闯了进来,大王子拿着齐眉棍,二王子轮着九齿耙,三王子使着乌油棒。
1803 |
1804 | 那三个王子看见孙悟空、猪八戒、沙僧相貌丑陋,以为是妖怪,就舞动着兵器上来要打。猪八戒拿出他的九齿耙来一晃,只见万道金光,把二王子吓得手发软筋发麻不敢再走上前一步。孙悟空也掏出金箍棒一晃,就有碗口粗细,直直的竖在地上。
1805 |
1806 | 孙悟空对大王子说∶“你要是能拿得动,我就把这棍子送给你。”大王子用尽了全身的力气也没能把金箍棒移动一分一毫。三王子不服气,抽出乌油棒就打,沙僧举起手挡开,又取出降龙宝杖提在手中,光彩耀人眼目,吓得三个王子和一旁的官员个个呆若木鸡。
1807 |
1808 | 三个小王子一齐跪下,请求孙悟空他们表演一下他们的功夫,让他们开开眼界。孙悟空、猪八戒、沙僧先后跳上云头,脚踏五彩祥云,挥动着各自的兵器,施展本领,把玉华城上空弄得流光溢彩,笼罩在一片瑞气中,满城的军民纷纷焚香礼拜。
1809 |
1810 | 他们三个演习结束后,降落了云头。三个王子急忙回到宫中,告诉了他们的父王,要求父王恳请唐僧,让他们三个拜师学艺。以便将来可以保护城邦。老王答应了,带着三个王子来见唐僧。没想到唐僧还没有开口说话,孙悟空就一口答应了。
1811 |
1812 | 老王非常高兴,立即命令大摆筵席,宴请唐僧师徒。第二天一大早,三个王子就来行了拜师礼。孙悟空问他们都要学些什么兵器,大王子说要学棒,二王子要学耙,三王子要学杖。孙悟空看他们的力量都还不够,就在曝纱亭后面的静室里传授他们神力。
1813 |
1814 | 三个王子立刻就体力过人,大王子拿得住金箍棒,二王子抡得动九齿耙,三王子也举得起降魔杖了。可是他们毕竟年龄太小,才打了几下就累得气喘嘘嘘。于是他们和师父们商量,请铁匠减少斤两,照着样打造三种兵器。
1815 |
1816 | 孙悟空答应了。
1817 |
1818 | 第二天,王子宣召了铁匠叫他买了上万斤的钢铁,就在王府的前院搭起了棚子支起炉子,请孙悟空他们把金箍棒、九齿耙、降魔杖摆在棚子里面,让铁匠们照着样子打造。谁知,三件兵器在夜晚光彩夺目,霞光招引来了豹头山虎口洞的妖魔黄狮精。
1819 |
1820 | 黄狮精使出妖法,把三件兵器偷走了。第二天天亮时,铁匠们走进棚子干活,却找不到三件兵器,慌忙报告王子。王子们不敢耽误,连忙去问三位师父是不是已经收回了兵器。猪八戒责怪是铁匠偷去的,挥着拳头就要打。
1821 |
1822 | 铁匠们哭着说∶“我们是凡人,怎么能拿得动呢?”
1823 |
1824 | 吵闹的声音惊动了国王,他走来问明了事情的前因后果,说∶“我们家在这个城里居住了五代人,从来没有过盗贼。”孙悟空问∶“城外的四周围是否出现过什么妖怪?”老王说∶“城北四十里的地方有座豹头山,山中有个虎口洞,有人说洞中有神仙;也有说是妖怪,不知道是真是假。”
1825 |
1826 | 孙悟空断定武器是被妖怪偷去了,就命令猪八戒、沙僧保护好师父,便一下子飞到豹头山上。他远远地看见两个长着狼头的小妖怪走了过来,就摇身一变,变了只蝴蝶,飞到小妖的头上,就听见小妖说∶“大王才得了美人,昨晚又收回来三件兵器,真是好运气!”
1827 |
1828 | 原来黄狮精得到三件兵器后,要开个钉耙会来庆贺,命令这两个小妖下山去买猪羊。孙悟空听明白后,现出了本来的面目,用定身法定住了小妖,摘下了小妖的银子包裹,又从他们腰间取下了粉漆牌,那上面一个写着“刁钻古怪”,另一个写着“古怪刁钻”。
1829 |
1830 | 孙悟空拿着这些东西,驾云返回到玉华城里,向玉华王父子报告所见之事,又把那包银子赏给受了冤屈的铁匠。他让老王准备了几头猪羊,让沙僧假扮贩猪羊的客商,猪八戒变成刁钻古怪,他自己又变成古怪刁钻,就准备去除妖。
1831 |
1832 | 他们一切准备好后,赶着猪羊进了山,正好遇见一个小妖怪捧着请帖匣子,去竹节山请九曲盘桓洞的九灵元圣明天来赴钉耙宴。孙悟空拿过帖子看了看后,还给小妖,各走各的路。他们一直把猪羊赶到了虎口洞的门外。
1833 |
1834 | 妖魔黄狮精听到声音后走出洞来。孙悟空就假说欠了客商五两银子,黄狮精就命令一个小妖进洞去取。孙悟空见不能进洞,着急了,于是他就说∶这位客商也想开开眼,看看我们的钉耙会。”黄狮精听了很不高兴,说∶“你怎么跟人家乱讲话呢?”
1835 |
1836 | 黄狮精还没答应,孙悟空就拉着沙僧、八戒跑进洞中。他们进洞后,看见大厅正中的石桌上供奉着他们的三件兵器。黄狮精赶紧跟了进来,在他们身后叮嘱说∶“这位客商,中间摆放的那把就是钉耙,你看可以,出去后可千万不要给别人乱说。”
1837 |
1838 | 猪八戒看见了他的钉耙,就再也沉不住气了,他跳上石桌,一把抢到他的钉耙,现出本来的面目,照着黄狮精就打过去。孙悟空和沙僧也跳上石桌,各自拿了兵器,现出原样。黄狮精呆住了,慌忙取出一柄四明铲,大声问∶“你们是什么人,敢来抢我的宝贝?”
1839 |
1840 | 孙悟空大骂黄狮精自己做贼偷人东西反倒诬赖别人抢劫!他们从洞里杀出一条路来到洞外,黄狮精打不过他们,就虚晃一招,钻了个空子向东南方向逃跑了。猪八戒想去追,孙悟空说∶“就让他跑了吧!咱们断了他回来的路。”于是他们三人来到洞口,打死了所有的小妖。
1841 |
1842 | 孙悟空他们三个拿完了洞中的钱财,赶出猪羊,搬出几具被打死的妖怪尸体后,放火把虎口洞烧得一干二净。他们把猪羊、钱财和小妖的尸体一起用法术运回到玉华府中。孙悟空他们把灭妖的经过讲给玉华王父子和师父听。老王又高兴又担心,他怕黄狮精以后来报仇。
1843 |
1844 | 果然,黄狮精逃到了竹节山九曲盘桓洞,找九头狮子怪九灵元圣,求他替自己报仇。九灵元圣起先责怪他,说他不该去招惹爱闯祸的孙悟空,不过后来,还是答应了黄狮精,去玉华城找孙悟空替他出气。于是他点了一群杂毛狮子精和黄狮精一起出发了。
1845 |
1846 | 狮妖们刮起狂风直奔玉华城而去,霎时间玉华城飞砂走石,天昏地暗,城里的军民们吓得东躲西藏。玉华王父子和唐僧师徒也躲到城楼上,孙悟空让老王命令士兵关了四方城门,让王子带兵看守城池,然后他和两位师弟驾着云去迎战。
1847 |
1848 | 在云雾之中,一群杂毛狮子正簇拥着九灵元圣赶了过来。孙悟空他们三个人举着兵器迎上去。黄狮精一见猪八戒,气得举起四明铲就打了过来,猪八戒也抡起钉耙迎战。双方在玉华城上空打起了一场恶战。猪八戒一招没有当心,被雪狮擒住了。
1849 |
1850 | 沙僧看到这种情况着了急,也败下阵来。孙悟空急忙拔下了一把毫毛放在嘴中嚼啐喷了出去,变出了一百多只小猴子。小猴子们围着狮妖又撕又咬,众狮妖被吓得慌成一片,各自逃命。沙僧帮助孙悟空捉住了白泽狮和狻猊狮,一齐押回到城楼上。
1851 |
1852 | 第二天,黄狮精又带着猱狮、雪狮、抟象狮、伏狸狮来到玉华城上空,要孙悟空他们出去迎战。孙悟空和沙僧各自运用谋略,和五个狮子精打得难分上下。就在这时,九灵元圣驾着一团黑云径自到了城楼上,他的九个头都张开血盆大口,抓走了唐僧和玉华王父子。
1853 |
1854 | 孙悟空听见城楼上有人呼叫,就知道中了计,他急忙叫住沙僧小心一点,然后又拔下胳膊上全部的毫毛放入口中嚼碎喷了出来,变出千百个孙悟空,一齐拥上去攻打狮精,打倒了猱狮,活捉了雪狮,擒住了抟象狮,扛翻了伏狸狮,还一棒打死了黄狮精。
1855 |
1856 | 他俩回到城中,王妃哭着告诉孙悟空说玉华王父子和唐僧都被九头狮子怪用法术捉走了。孙悟空安慰了王妃一阵。第二天清早,孙悟空和沙僧来到竹节山,找到了盘桓洞,九灵元圣听到小妖报告孙悟空和沙僧来了,也不穿盔甲也不拿兵器,大摇大摆地走出洞门。
1857 |
1858 | 孙悟空和沙僧一看见老妖,就各自举起兵器打了上去。那个老妖把头一摇,左右两边又变出了八个头一齐张开大口,把孙悟空、沙僧衔住,带回到洞里让小妖绑起来。他命令小妖先打孙悟空一顿,为黄狮精报仇,可是一直打到天黑,棍棒打折了一堆,孙悟空也没有事。
1859 |
1860 | 夜深了,老妖和小妖们都睡熟了,孙悟空用了个法术把身体变小,从绳子里脱身出来,取出金箍棒,朝小妖头上轻轻一敲,小妖就变成了肉饼。他点亮灯,给离近处的沙僧解绳子。猪八戒一看急了,大叫着快帮他解开绳子。不料猪八戒的声音惊醒了老妖。
1861 |
1862 | 孙悟空暗骂八戒坏事,立刻吹灭了灯,也顾不得其他人,用金箍棒打破了几重门逃走了。老妖举着灯火走了过来,发现有一个小妖被打死了,孙悟空和沙僧也逃走了。他赶紧带领小妖们一齐去追赶他们。沙僧跑得慢,又被捉回去捆了起来。
1863 |
1864 | 孙悟空逃走后,叫来了当地的土地神向他询问老妖的来历。土地神告诉他说∶“那个老妖是前年才从天上降到竹节山的,如果想降伏他,就得去东极妙岩宫请他的主人太乙救苦天尊前来帮忙。”孙悟空听完,就驾起筋斗云,直奔东天门找太乙救苦天尊去了。
1865 |
1866 | 孙悟空来到妙岩宫,太乙救苦天尊走下莲花宝座来和他相见。孙悟空说明了来意,天尊就命令身旁的大将到狮子房把狮奴叫来问话。原来狮奴偷喝一瓶酒,沉睡了整整三天三夜,九头狮子私自逃走下到凡界去了。天尊就带领众神仙和狮奴一齐前往竹节山。
1867 |
1868 | 来到了竹节山,天尊让孙悟空先去把老妖引出来。老妖在洞中听见孙悟空在外面又是叫骂又是打门,心中非常生气,于是走出洞门张口就咬孙悟空。孙悟空早就有了准备,他转身跳到高崖上面,大骂∶“大胆的妖精,你不知死活,你的爷爷在这呢!”
1869 |
1870 | 天尊念了声咒语,那个妖怪见是自己的主人,四脚伏在地上,现出了原形。狮奴跑过去,抓住了狮子脖子上的毛,边打边骂,然后把锦布的坐垫安放在狮子的背上,天尊骑了上去,大喊一声“走!”那狮子就腾空驾起彩云,返回妙岩宫去了。
1871 |
1872 | 孙悟空进到洞中给玉华王父子、师父和师弟们一一松了绑,带领他们走出盘桓洞。猪八戒放把火,把洞烧了。他们师兄弟三人各自施法术,把玉华王父子和唐僧送回到城中。第二天,孙悟空又叫屠夫把那六只活狮妖杀了,肉分给城中的百姓。
1873 |
1874 | 这时,铁匠打造好了三样兵器,孙悟空他们一连几天教授三个王子武功,一直到完全熟练。临走之前,老王让人端出了一大盘金银感谢他们,孙悟空他们谢绝不收。倒是猪八戒的衣服被狮子精撕破了,要求给他做件新的。
1875 |
1876 | 老王让裁缝给他们各做了一件。
1877 |
1878 | 第36回 金平府观灯遇犀牛
1879 |
1880 | 唐僧师徒四人离开玉华城,走了五六天的路,进入了天竺国外的一个叫金平府的郡城。他们走过了几条巷口,忽然看见前面有一座慈云寺,唐僧就和徒弟们走进寺里,想歇歇马,吃一顿斋饭,然后再走。主持和尚听说他们是来自东土大唐,赶忙施礼迎接。
1881 |
1882 | 吃完斋饭,唐僧催促着徒弟们早点上路。寺里的和尚劝他说∶“再过两天就是元宵节,过完元宵节再走也不迟。”盛情难却,唐僧只好同意了。元宵节这天,寺里的和尚邀请唐僧师徒一齐上街看灯,唐僧师徒就跟随着寺里的和尚一齐来到城中赏灯。
1883 |
1884 | 城中灯火辉煌,笙箫和歌曲的声音不绝于耳。他们来到金灯桥口,就看见三盏像水缸那么大的金灯挂在柱子上,点的油有一种很特别的香气。唐僧一问才知道灯里面点的是名贵的酥合香油,三盏灯的油价值白银五万余两,都是本府的百姓缴纳的。
1885 |
1886 | 正说话的时候,半空中突然响起了呼呼的风声,吓得看灯的人连忙四处隐藏回避。僧人们都说∶“风来了,是佛爷看灯来了,我们赶快回去吧!”
1887 |
1888 | 唐僧听说后就要留下来拜佛,顷刻之间,风中果然出现了三位佛身,唐僧慌忙跪下参拜,孙悟空一看却是三个妖怪。
1889 |
1890 | 孙悟空还没来得及张口,一阵狂风刮过来,唐僧立刻就不见了。猪八戒急得东找西找,沙僧也远近四处呼喊。孙悟空说∶“兄弟们不用再叫了,师父已经被妖精捉走了!你们两个和其他的僧人一起回寺看守行李马匹,我跟着这股狂风去追!”说完就直奔而去。
1891 |
1892 | 孙悟空追到天亮,风突然停了,孙悟空落在一处山崖上,正在寻找路径,就看见有四个人赶着三只羊走了过来。孙悟空用他的火眼金睛仔细一看,原来是年、月、日、时四位功曹变的,他们是特地来告诉悟空∶这座山叫青龙山,山上有个玄英洞,住着三个妖精。
1893 |
1894 | 孙悟空问清楚了大妖精叫辟寒大王,二妖精叫辟暑大王,三妖精叫辟避尘大王,就让四位功曹离开。他转过山坳,去寻找妖精的洞府,果然被他找着了。孙悟空不愿冒险进入,就站在大门口高喊∶“妖怪,快点把我师父送出来,不然把你们都打死!”
1895 |
1896 | 小妖们赶紧跑到洞中报告。三个妖王各自拿着兵器走出洞,其他大大小小的牛头鬼怪在左右跟随着。孙悟空看见这情形,挥动着金箍棒就打了过去,三个妖王也各自挥舞着兵器迎战。一直打到天色黄昏,那个辟尘大王把令旗一摇,一群小妖便都围住孙悟空乱打。
1897 |
1898 | 孙悟空不敢再打下去,跳到云上。回到慈云寺,他仔细地给猪八戒和沙僧讲了经过。师兄弟三人害怕妖精当天晚上就害师父,就在晚饭后趁着月光,驾起祥云,来到玄英洞口。孙悟空让师弟们稍等一会儿,他变成个萤火虫进洞探听一下虚实。
1899 |
1900 | 孙悟空飞到唐僧面前,现出了原样,用了一个解锁法帮唐僧脱掉手铐,然后引着师父轻手轻脚地朝洞外走去。没想到在路上碰到了巡逻的小妖。孙悟空一棒打死了两个小妖,还有一个小妖逃脱了,他边跑边叫∶“毛脸的和尚钻到洞里来杀人了!”
1901 |
1902 | 三个妖王听到了叫喊声,赶紧爬起床就连连叫着∶“要捉住他!”唐僧吓得手脚酥软,迈不动步。孙悟空怕被围住了,只好丢下师父,独自一人杀到洞外,看见猪八戒和沙僧,简单地述说了发生的事情。三个人再听洞里,没有一点动静,担心妖王要伤害师父。
1903 |
1904 | 猪八戒急了,抡起钉耙朝着石门就打,将门打得粉碎。刚往回走的妖王听到洞门被砸烂了,气得又转身杀了出来。双方打得难分难解,辟寒大王一声号令,小妖们一拥而上,绊倒了猪八戒和沙僧,捆起来押进洞里。孙悟空跳上云头跑了。
1905 |
1906 | 孙悟空离开了玄英洞,一直奔向九重云霄,到天界去搬救兵。他在西天门遇上太白金星。太白金星听了孙悟空讲述的遭遇,说那三个妖精是犀牛精,只要四木禽星下界去就能降伏三妖,说着就带孙悟空到灵霄宝殿,奏明玉皇大帝。
1907 |
1908 | 玉帝派许天师和孙悟空一起到斗牛宫,叫四木禽星下到凡界降妖。四木禽星角木蛟、斗木獬、奎木狼、井木犴接到御旨,就和孙悟空一齐驾云来到了青龙山玄英洞上空。四木禽星说∶“大圣,你先去找那三个妖精讨战,把妖精引出来,我们就跟着动手。”
1909 |
1910 | 孙悟空到洞门前一阵叫骂。三个妖王气得率领着小妖出了洞门,摆了个圈子阵,把孙悟空围困在阵子中间。四木禽星从天上降下来,各自抡起兵器喊道∶“造孽的畜牲,不准动手!”大小妖们一看见四木禽星,都现出了原来的样子,满山乱跑。
1911 |
1912 | 三个妖王也现出了原来的模样,原来是三只犀牛精,他们一直向着东北方向逃去。孙悟空和井木犴、角木蛟紧追不舍。斗木犀和奎木狼在山谷里和山头上把那些牛精活捉的活捉,打死的打死,然后进到洞中救出了唐僧、猪八戒和沙僧。
1913 |
1914 | 两位禽星要去帮助孙悟空捉拿妖王。猪八戒和沙僧送走他俩以后,回到洞里寻找出一担布绸金银,搬到洞外,又请师父到山崖上坐稳,然后猪八戒放了一把大火,把玄英洞烧成灰烬。师徒三人这才慢慢找路回慈云寺去。
1915 |
1916 | 斗木獬、奎木狼驾着云一直追到了西洋大海,远远地就看见孙悟空在海面上吆喝,就降了云头。原来妖精已经钻进水里,井木犴、角木蛟也追到了水中,孙悟空留在水面上把守,防止他们逃走。这时孙悟空见来了帮手,便让他们在海面上拦截,自己念了个避水咒,到海底帮着作战。
1917 |
1918 | 孙悟空来到了海底,看见井木犴、角木蛟正在和三妖打得不可开交,就立刻抡棒跳过去帮忙。三妖本来就已经十分疲倦了,看孙悟空来了,吓得又朝海中心逃去。巡海夜叉看到,急忙回水晶宫给龙王报告。老龙王就命令摩昂太子带领兵士去帮忙。
1919 |
1920 | 摩昂太子率领着龟将鳖帅、虾兵蟹卒杀出水晶宫,挡住了犀牛精的去路。犀牛精被前后夹击,就慌忙四处逃窜。那个辟尘被摩昂太子率领的士兵扳倒在地,抓着他的四个蹄子捆在一起;这时井木犴一怒现了原身,一口咬断了辟寒的脖子;角木蛟也同时揪住了辟暑。
1921 |
1922 | 他们来到水晶宫里锯下了辟寒的角,孙悟空带在身上,和四木禽星押上辟暑和辟尘,告辞了龙王,驾着云回到了金平府。孙悟空在空中大叫,告诉军民们天神已经降伏了作恶多年的犀牛精,从今以后再不要献酥合香油供金灯了。
1923 |
1924 | 猪八戒、沙僧听到了孙悟空的叫喊也纵身跳上云端,说∶“把这两个妖怪推下去,让本地的军民都来看看,四位星君也请下凡一趟。”于是四位星君踩着一簇彩云,降落到府堂之上,看得府县的官员、军民百姓,急忙摆设香案,叩拜天神。
1925 |
1926 | 猪八戒的性子上来了,拿了一把戒刀,把辟尘和辟暑的头砍下来,又锯下四支角。孙悟空说∶“四位星官,请把这四只犀角拿到上界去,进贡给玉皇大帝,回去缴旨吧!”他又把自己身上带的两只犀角一支留在了府堂,一只准备带到灵山敬献佛祖。
1927 |
1928 | 四星君拿上了犀牛角,和孙悟空告别,就驾上彩云回到天宫去了。金平府的县官按照孙悟空的意思,贴出告示,说下一年不许再点金灯,然后又建起了一座四星降妖庙,并且为唐僧师徒四人建立了生祠,立了石碑并刻上文字,传于后世。
1929 |
1930 | 第37回 天竺国招亲逢玉兔
1931 |
1932 | 第二天天还没有亮,唐僧师徒趁寺内的僧人还在睡觉的时候,就悄悄起来收拾行李,开了山门,找路走了。他们餐风露宿,一直走了半个月。一天傍晚,他们师徒正准备投宿,就看见前面有一座大寺院,山门上写着斗大的几个金字∶“布金禅寺”。
1933 |
1934 | 山门下面挤满了挑担的、推车的、背包的、各种行人。他们一见唐僧师徒走来,立刻让出了一条道路,直到金刚殿前。一位老和尚从里面走出来迎接,唐僧赶紧施礼,报上了自己的来历,老和尚听完后,说∶“请高僧到室内喝茶、吃饭。”
1935 |
1936 | 唐僧问老和尚∶“为什么山门前有那么多的客商?”老和尚回答说∶“在前面的百脚山下,有一座鸡鸣关,这几年经常有蜈蚣出现,挡在路上咬伤行人。只有在天亮鸡叫的时候,蜈蚣躲开了,行人才敢过关。”这时老和尚便邀四人先进斋饭。
1937 |
1938 | 斋饭用毕,上弦月升起来了,唐僧让孙悟空陪着在月光下散步。这时院主在一个小和尚的陪伴下来看望唐僧。他俩说了一会儿话后,院主就建议唐僧去看看曾经请佛讲经的地方,唐僧和孙悟空很高兴地同意了。院主就让小和尚打开后门,三个人走了进去。
1939 |
1940 | 走到石台上,唐僧觉得有些累了,就坐下来休息。忽然听见一阵娇滴滴的女子哭声。唐僧问∶“是什么人在哭?”院主把小和尚叫到门外站着,然后对着唐僧跪下去。唐僧赶忙搀起他,问∶“老院主为什么要行此大礼?”
1941 |
1942 | 院主这时才说明了事情的原因。
1943 |
1944 | 去年这天的晚上,老院主忽然听到一阵风响,接着就又传来了一阵伤心的哭声。于是老院主找到后院,看见门外面坐着一个女子,就问她的来历。
1945 |
1946 | 那个女子说∶“我是天竺国的公主,正在月光下赏花,被风吹到这儿来了。
1947 |
1948 | ”院主分不清真假,就把她锁到一间空房里。
1949 |
1950 | 院主又怕少女在寺院中有些不方便,就把空房用砖头砌死,只留下一个能递饭进去的小洞。和尚们来问,院主就撒谎说∶“这是一个妖怪,被我捆住了。”那个女子完全明白院主的意思,就装疯卖傻,白天说一些胡话,到夜深人静的时候才敢想爹娘,偷着哭泣。
1951 |
1952 | 院主进城打听了几次,都说公主在宫中并没有走失。院主讲到这里,就又对唐僧拜倒,说∶“如今幸好禅师来到这个地方,希望能见到国王讲明情况,救助善良的好人。”唐僧和孙悟空都表示愿意做这件事。这时天已经快亮了,三个人各自到房里休息去了。
1953 |
1954 | 第二天鸡叫的时候,山门下的客商们开始忙着点灯做饭。唐僧师徒也连忙起床收拾他们的行李。吃完早饭,跟寺里的和尚道了谢就告辞上路了。他们和客商一起到了鸡鸣关前。这时天快亮了,可是大家依然觉得冷风袭人,阴气不散,让人感到胆战心惊。
1955 |
1956 | 他们走进天竺国皇城,看见有一个驿馆,就走进去。驿馆的官员问清楚了唐僧的来历和去向。当他听说唐僧要面见国王倒换文牒时,告诉他们说∶“你们来得正好,今天公主在十字街头抛绣球招驸马,国王还在宫殿之上等着,没有退朝呢!”
1957 |
1958 | 孙悟空陪着唐僧一起到宫殿上交换文牒。出了驿馆,只见大街小巷全都挤满了人,吵吵闹闹地去看公主抛绣球。孙悟空要跟着去看,唐僧不肯,悟空就说∶“到彩楼就能看见公主,就可以分辩出真假了。况且皇帝等着公主的喜报,又怎么肯理会朝中的事情呢?”
1959 |
1960 | 唐僧这才答应了。两人随着人潮挤到彩楼的前面。原来这个公主是妖精变化的,她知道唐僧取经一定经过天竺国,所以就用法术赶走了真公主,又假说她要抛绣球招驸马,想和唐僧成亲,要取走唐僧身体里的元阳真气,练道成仙。她早就等着唐僧了。
1961 |
1962 | 假公主见唐僧来到彩楼下,就把绣球一抛,不偏不斜正好落在唐僧的头上。楼上的宫女都喊∶“打着和尚了!”那些专门来接绣球的王孙子弟一拥而上,想抢绣球。孙悟空大喊了一声,一下子长成了三丈多高的巨人,众人吓得四散而逃。
1963 |
1964 | 孙悟空恢复了本来的样子。看见宫女、太监来参拜唐僧,说∶“迎请贵人到宫殿上贺喜。”唐僧埋怨孙悟空不应该捉弄师父。孙悟空贴在唐僧的耳朵上悄悄说了几句话,最后说∶“这招叫做依婚降妖计。你只要给国王说个明白,召徒弟们入宫,到时我自然有办法。”
1965 |
1966 | 唐僧被宫女、太监们拥上了宫殿,连忙把自己的来历告诉了国王,请求国王给他倒换关文,放他去西天取经。国王本来也想放了唐僧,可是假公主就是不答应。国王只好传下圣旨,选择一个好日子,给公主和唐僧他们两人举行结婚大典。
1967 |
1968 | 唐僧没有办法,想起了孙悟空的话,就叩头奏明国王∶“我的三个徒弟还在驿馆,希望陛下把他们叫来,倒换了公文,我再嘱咐他们几句话,让他们早点去取经。”国王同意了唐僧的启奏,当时就命令内侍去叫孙悟空他们三人上殿。
1969 |
1970 | 过了一会儿,孙悟空、猪八戒、沙僧来到了金殿上,国王看他们三个人相貌丑陋,心里很害怕,壮着胆子让他们报清来历。三个人报出齐天大圣、天篷元帅、卷帘将军的来历后,国王慌忙从龙床上下来,连声称呼他们是神仙亲眷。
1971 |
1972 | 国王就命令当驾官打扫干净御花园的亭台楼阁,请驸马和三位高徒去休息。唐僧一到御花园里的住处,看到旁边没有人,就责备孙悟空说∶“惹出了这样的事,怎么办呢?”孙悟空说∶“国王脸上有阴暗的颜色,但是还没有看见公主,不知道是真还是假?”
1973 |
1974 | 高兴了好几天,结婚的日子很快就到了。国王满心欢喜,他正打算去御花园看望驸马,后宫的太监匆匆跑来启奏说∶“正宫娘娘请皇上过去。”国王马上赶到昭阳宫。原来,假公主害怕在婚礼上见到孙悟空,识破她的原形,就说害怕他们长的丑陋,让国王打发他们走。
1975 |
1976 | 孙悟空早就想到了,所以就在当驾官和仪制司来请他们时,他们就收拾好了行李、马匹,一直走到宫殿的台阶下。国王让孙悟空他们三人走到跟前说∶“把你们的关文拿上来,我把关印盖宝花押交给你们,而且我还准备了许多路费,送你们早点上路去灵山参见真佛。”
1977 |
1978 | 孙悟空不要那些金银,只是拿过了关文,转身就要走,吓得唐僧赶紧拉住孙悟空。孙悟空捏着师父的手掌,又使了一个眼色。唐僧虽不放心,但也只好松开了手。三个人走到金殿下,猪八戒不停地回头看师父,问悟空说∶“我们真的要走吗?”
1979 |
1980 | 孙悟空一句话也不说,带着猪八戒和沙僧来到了驿馆,说∶“你们两个在这等着,既不要出去,也不要和我说话,我去保护师父了。”说完拔了根毫毛变个假悟空留在驿馆,而他自己变作了一只蜜蜂,“嗡嗡”地飞回到金殿去找师父了。
1981 |
1982 | 孙悟空落到唐僧的帽沿上面,轻轻地叫∶“师父,我回来了。”唐僧听到后,松了口气。过了没多久,宫官来请唐僧去会亲。国王心里高兴极了,就带着驸马一起去公主的住处,让唐僧和公主两人见见面。孙悟空叮在唐僧的帽沿上,也跟着进到里面。
1983 |
1984 | 国王一进宫,娘娘和公主都赶紧出来迎接。孙悟空看见公主头顶上微微露着妖气,但不是那么凶恶,就爬近唐僧耳边,小声说∶“师父,公主是个假的,等我现身出来捉住这个妖精。”唐僧赶忙说∶“不可以。千万不要吓坏了国王和王后。”
1985 |
1986 | 孙悟空当然听不进去,他大喊了一声,现出了原样,抓住假公主大声地骂∶“妖怪!你在这里弄假成真的享受荣华富贵,还不知道满足,竟然欺骗我师父,要破坏他的纯阳真气!”顿时,国王、后妃、宫女们被吓得一齐又哭又叫,东躲西藏,乱成一团。
1987 |
1988 | 那个妖精看已经被孙悟空识破了,挣脱了孙悟空的手,扔下身上的一些饰物,跑到御花园里的土地庙里,拿出了一根短棒子来打孙悟空。两个人从地上一直打到空中,吓得全城百姓、文武百官们胆战心惊。唐僧告诉国王说这个公主是个假的。
1989 |
1990 | 孙悟空和妖精打斗了半天也分不出胜负,就把金箍棒扔了起来,叫了一声“变”,金箍棒一变十,十变百,百变千,在半空中好像蟒蛇一样在不停地游滚,围着妖精乱打。妖精这下手忙脚乱了,她变成一道清风向九重云霄逃去。孙悟空把金箍棒收回,追赶妖精去了。
1991 |
1992 | 孙悟空的筋斗云比妖精还快,他赶到妖精的前面挡住她的去路。妖精又与孙悟空打到了一起,他们打斗了十几个回合。妖精想溜,就一晃身,变成一道金光,朝正南方向逃走了。孙悟空追到一座大山前面,妖精收住了金光,就找不到她了。
1993 |
1994 | 孙悟空害怕妖精脱身后又回到天竺国去伤害师父,就看清了这座山的形状,驾着云又返回了天竺国,降落到皇宫里。他看见师父安然无恙,就回到驿馆叫来了猪八戒和沙僧,要他们好好保护师父,然后就又翻上筋斗云转回到山里寻找妖精去了。
1995 |
1996 | 孙悟空来到那座大山前面,找了好一会儿也没有找到妖精的踪迹,就念起真言,叫来了土地、山神,问他们山上有没有妖精。两位神仙告诉悟空这是毛颖山,山上只有三个兔子洞,没有妖精。孙悟空就让两位神仙带他到三个兔子洞那儿去找找。
1997 |
1998 | 他们一直走到山顶,发现了一个大洞,用两块大石头把洞门堵住了。孙悟空取出了金箍棒砸碎了堵在门口的石头,一看,妖精果然藏在洞里。那个妖精猛地跳了出来,一边和孙悟空打一边骂土地和山神说∶“死老头子,谁让你们带他来?一会儿我再找你们算帐。”
1999 |
2000 | 他们又打了十几个回合,那个妖精支撑不住了,孙悟空挥棒正要往下打,突然听到九重云霄上有人大声喊∶“大圣,请棒下留情,别打死她。”孙悟空回头一看,原来是太阴星君和嫦娥仙子来了。原来这个妖精竟是广寒宫里捣仙药的玉兔。
2001 |
2002 | 太阴星君告诉孙悟空说天竺国的公主原先是月宫中的一名素娥,因为想念凡尘就下界投生。她曾经打过玉兔一掌,玉兔记仇,去年把素娥抛到荒野受苦。孙悟空恨玉兔差一点破坏了师父的元阳,举棒要打,太阴星君不断地向他求饶,孙悟空只好勉强答应了。
2003 |
2004 | 孙悟空说∶“饶了她可以,可是你要让她现出原形,到天竺国让国王看看。”太阴星君当时就用手朝玉兔一指,玉兔就显出了原形。孙悟空看见非常高兴,他带着太阴星君、嫦娥仙子和玉兔一齐乘着皎洁的星月,驾着五彩祥云,朝天竺国去了。
2005 |
2006 | 国王和唐僧他们都在御花园里等着孙悟空捉妖回来,忽然抬头看见正南天上有一片美丽的彩霞,又听见孙悟空在空中大声喊∶“天竺国王陛下,你们都来看看,这两位神仙是太阴星君和嫦娥仙子,这个玉兔就是赶跑真公主后变化的假公主。”
2007 |
2008 | 大家看见了都赶忙对着夜空跪倒叩拜。孙悟空降落了云头,回到金殿前面。太阴星君、嫦娥仙子带着玉兔迳自回月宫去了。国王感谢了悟空后问他∶“那我的真公主现在在哪呢?”孙悟空说∶“你的真公主现在在布金禅寺里。等到明天,我带你去找真公主回来。”
2009 |
2010 | 第二天一早,国王就传圣旨∶“东西二宫守殿,掌朝太师卫国,我要和正宫娘娘带领文武百官和四位神僧去布金禅寺把公主迎回来。”没用多久,皇上他们来到了布金禅寺,院主带着国王来到了后院的破屋跟前。那个公主看见有人过来,就又装起疯了。
2011 |
2012 | 国王命令院主打开门,皇后认出里面关的就是公主,顾不得她身上的污秽,一把搂住公主,大哭起来。国王命令宫女给公主沐浴更衣后,先感谢了唐僧师徒的救命之恩,又谢了院主供养之情,封院主做报国僧官,传旨重修寺院。
2013 |
2014 | 国王回到宫殿以后,摆设宴席感谢唐僧师徒,还要为他们画像供奉,孙悟空说∶“嗨,不用了,布金寺的百脚山里最近有一些蜈蚣挡在路上伤人,国王如果能选一千只公鸡放到山上,吃了蜈蚣,方便商客,这不比画像供奉强上百倍吗?”
2015 |
2016 | 国王非常高兴,当时就下旨选了一千只大公鸡放到山里,那些蜈蚣一见到公鸡,全都成了直棍,任鸡逐吃。只一天时间,百脚山的大小蜈蚣全被公鸡吃光了。国王将百脚山改为宝华山。
2017 |
2018 | 第二天,国王叫来画师,画下了唐僧师徒的容貌,供奉在华夷阁上。又叫公主穿戴整齐,出来拜谢唐僧师徒的救难之恩。唐僧告辞了国王又要向西天取经去了。国王让唐僧坐上他的车子,派官员送他们一段路程,皇后、妃子及臣民们都来叩谢。
2019 |
2020 | 第38回 寇员外喜待圣唐僧
2021 |
2022 | 唐僧师徒四人晚睡早起,奔波了将近十四年,这天来到铜台府的地灵县。县里有个大户,户主姓寇名洪,人们都叫他寇员外。这个寇员外是个善人,经常给和尚们施舍斋饭。他听说唐僧师徒来自东土大唐,非常高兴,一定要留唐僧他们多住几天。
2023 |
2024 | 唐僧急于取经,在寇员外家度日如年。寇员外见实在挽留不住,就邀请了亲戚朋友、邻居乡亲等人,又请了些和尚、道士、吹鼓手一起送唐僧师徒上路。这场面正好被县里的一伙强盗看见,他们决定趁天黑雨大,打劫寇家。
2025 |
2026 | 当天晚上,这伙强盗手拿短刀、棍棒等武器,举着火把、松脂,灯笼砸开了寇家的大门。他们翻箱倒柜,掀桌砸椅,不仅把金银财宝全抢光,而且连绸缎、衣物也一掠而空,寇员外拖住强盗的头领,央求他留下几件衣服抵御寒冷,却被强盗头一脚踢死在门口。
2027 |
2028 | 强盗走后,寇家男女老少抱着寇员外的尸体大哭。寇夫人想这事是由唐僧师徒引起的,很生气,对两个儿子说∶“昨天晚上我藏在床底下,见拿火的是唐僧,拿刀的是猪八戒,搬金银的是沙僧,打死你们父亲的是孙悟空。
2029 |
2030 | ”两个儿子写了状纸,告到官府。
2031 |
2032 | 这天晚上唐僧师徒在一间破屋子里避雨,天亮后才继续往西走。正好昨天晚上的那伙强盗也向西逃,远远看见唐僧师徒,想寇家一定给了他们许多银两,决定连东西带马一起抢走,于是手拿凶器,跑到路上,站成一排。
2033 |
2034 | 唐僧一见,吓得心惊胆颤,沙僧、八戒也不知该怎么办,悟空笑着上去问∶“嘿嘿,各位干什么的?”强盗说∶“大爷是要买路钱的。”悟空装作很害怕地说∶“我们四个,我是管账的,你把他们三个放了,我就把钱全给你们。”
2035 |
2036 | 强盗们信以为真,让出一条路放唐僧、八戒、沙僧过去了,悟空见他们过去了,就低头打开包袱,乘机抓了把土,念个咒语,往上一撒,喊一声“住”强盗们立刻咬牙瞪眼,直直地站着,动弹不了了。原来悟空用了定身法。
2037 |
2038 | 悟空叫回师父和师弟,拔些毫毛变成绳索,分给八戒。两个人把强盗全绑了起来,然后又念解咒,让强盗醒过来。悟空手拿兵器就地审问,强盗们不敢不答话,把昨天晚上打劫寇员外的事全招了。
2039 |
2040 | 唐僧吩咐徒弟们夺下强盗的赃物,送还寇家。悟空夺过赃物,部分放在马上,其余的打成包裹,让八戒挑着,然后将身子一抖,收回毫毛,强盗立即松了绑,逃命去了。唐僧师徒转身向回走,给寇家送财物去。
2041 |
2042 | 走了不远,一群官兵拥过来,把唐僧师徒团团围住,叫道∶“和尚,杀人抢劫,你们知罪吗?”不容分说,先把唐僧抓下马,用绳捆上,又把悟空他们也捆上,穿在扛子上,抬着回城去了。
2043 |
2044 | 唐僧师徒被押到大堂上,才知道被诬告了,被官兵拷打逼问了一阵后,关进了监牢。半夜,悟空用法术挣脱绳了索,变成蠓虫,一直飞到寇员外家,见一家人围着厅里的棺材在哭。
2045 |
2046 | 悟空叮在棺材头上,先咳嗽了一声,吓得寇家老少魂飞魄散。悟空学着寇员外的声音说∶“都是因为你们说假话,陷害无辜,阎王派我来跟你们说,要你们趁早去救唐僧师徒,不然,全家老少一个也活不了。”
2047 |
2048 | 寇员外的两个儿子连忙磕头,答应天亮就去官府。悟空又飞到刺史家里,见刺史正对着一幅画烧香祷告,就变到画中骑马人身上问道∶“你为什么把四个去灵山取经的仙僧关押住?快点放他们!”刺史哪敢不答应。
2049 |
2050 | 悟空飞到地灵县大堂,天已经亮了,就用了个变大的法术,从空中伸下一只大脚,踩在大堂上说∶“你们听着,我是玉帝派来的浪荡游神,你们把去西天取经的仙僧监押了,这还得了!快点放了,要不,我就把你们这踏平。”
2051 |
2052 | 悟空干完这些事,又飞回监牢,变回原样,钻进绳套里。一会儿,狱卒果然把他们都放了,刺史、知县带领大小官员全来牢房迎接,连连赔罪。唐僧把详细情况说了一遍,众人忙说∶“错怪你们了,还请原谅。”
2053 |
2054 | 悟空看众人陪师父说话,让八戒、沙僧保护师父,他一个筋斗云到幽冥界,向地藏王菩萨要回寇洪的魂魄,放到袖子里,驾云回到了寇家,让八戒橇开棺材盖,把他的魂推到身上,一会儿,寇员外就被救活了。
2055 |
2056 | 第39回 雷音寺如来赐真经
2057 |
2058 | 悟空救活寇员外后,继续和师父赶路,走了六、七天,忽然看见前面高楼耸立,云阁冲天,悟空说∶“师父,取经的地方到了,师父快下马。”唐僧一听慌忙下马,走到楼阁前,一个道童站在山门口问∶“来者可是东土取经人!”
2059 |
2060 | 悟空认出他是灵山脚下玉贞观的金顶大仙,忙告诉师父,唐僧上前行礼后,大仙领唐僧师徒进了观,又叫小童烧香汤给唐僧沐浴,说这样才好登上佛地。第二天,唐僧换上锦袈裟,手拿锡杖,拜辞了大仙,大仙将唐僧引上法门。
2061 |
2062 | 唐僧师徒往前走了五、六里,看见一条大江波浪翻滚,约有八、九里宽,既没有人,也没有船,唐僧又惊又愁。悟空见远处有座桥,就拉着师父过去,没想到是根独木桥,桥边的匾上写着∶“凌云渡”三个字。
2063 |
2064 | 唐僧不敢过,要另找路。悟空见师父和师弟都不敢过,就跳上独木桥,摇摇摆摆跑了过去,高叫道∶“过来!”可是师父、师弟仍不敢过,就跑过来拉着八戒上桥,八戒害怕得趴在地上说∶“太滑了,我过不去。”
2065 |
2066 | 这时,忽然看见一个人撑了条船过来了,船到岸边,唐僧师徒发现是只无底船。悟空火眼金睛,认出撑船的是接引佛,但没有说出来。唐僧害怕,不敢上船,接引佛说∶“船虽然没有底,古往今来都能普渡众生。”
2067 |
2068 | 唐僧还在怀疑,悟空趁他不注意,把他往船上一推。唐僧站不稳,跌进了水里,接引佛一把将他拉到船上。唐僧边抖衣服边埋怨悟空。这时,悟空已经把八戒、沙僧和白马都拉到船上了。接引佛轻轻一撑,船飞快地驶向对岸。
2069 |
2070 | 船到江心,上游忽然漂下一具死尸。唐僧见了大吃一惊,悟空、八戒和沙僧指着尸体一齐说∶“师父别怕,那是你!”不一会儿,船过了凌云渡,师徒上岸后,悟空才告诉唐僧刚才那人是接引佛,师父已经脱了凡胎。
2071 |
2072 | 师徒四人继续向前,不久就登上了通向灵山的石路,逍逍遥遥,来到雷音寺山门外。四大金刚见了唐僧忙行礼,一位金刚说∶“圣僧稍等片刻,等我进去禀告一声。”说完,报到了二门上。
2073 |
2074 | 二门上又报到三门上。三门神僧急忙到大雄宝殿,向如来佛祖报告。如来听后十分高兴,叫八大菩萨、四大金刚、五百罗汉、三千揭谛、十一大曜、十八伽蓝排成两行,然后传出金旨,召唐僧师徒进殿。
2075 |
2076 | 唐僧师徒来到大雄宝殿,见了如来倒身就拜,奉上通关文碟说∶“奉大唐皇帝旨意,来拜求真经,以济众生,望我佛慈悲,早赐真经,也好回国。
2077 |
2078 | ”如来佛就将经卷的事讲了一遍。
2079 |
2080 | 如来叫阿傩、伽叶两位尊者带唐僧师徒去用斋,用斋后到珍楼宝阁领取经典。阿傩、伽叶领唐僧看完经名后,问唐僧有没有东西送给他们,唐僧说来得太远,没带东西。阿傩、伽叶笑着说∶“好呀,白给你们经,太便宜你们了!”
2081 |
2082 | 悟空见他们不肯传经,叫起来∶“师父,我们去如来佛那里告他们。”
2083 |
2084 | 阿傩、伽叶忙说∶“别叫,到这边来拿经吧。”八戒、沙僧劝住师兄,转身接过经书,一卷一卷放在包里,驮到马上,其余的包成包袱,由八戒和沙僧挑着。
2085 |
2086 | 唐僧师徒叩谢了如来,又拜辞了众神仙,下山赶路了。正走着,忽然闻见阵阵香气,只听见一声巨响,半空中伸出一只大手,把经书全都提走了。
2087 |
2088 | 吓得唐僧连连叫苦,悟空拿出金箍棒,跳上云追过去。
2089 |
2090 | 原来宝阁上的燃灯古佛听见阿傩、伽叶传经,知道他们传给唐僧的是无字经书,就叫白雄尊者故意抢经,好让唐僧再来取有字的真经。白雄尊者见悟空追过来,忙将经包撕碎,抛了下来,然后回去报告古佛。
2091 |
2092 | 唐僧师徒四人连忙收拾散落的经卷,打开一看,卷卷都是白纸,悟空想这肯定是阿傩、伽叶没要到东西,故意传给无字的空本。决定去向如来佛告状。于是,师徒四人又回到雷音寺。
2093 |
2094 | 如来佛听悟空讲完后笑着说∶“这事我早就知道,因为经不能随便传,也不能随便取。原来比丘给人家讲经,要三斗三升黄金,我还嫌他要得太少了。这本是无字真经,只是你们东土的人看不懂罢了。”
2095 |
2096 | 阿傩、伽叶奉如来的金旨传给有字真经,他们来到传经宝阁,仍旧要东西。唐僧只好拿出紫金钵盂给他们。阿傩接过,微微一笑,伽叶进阁去取经卷,唐僧叫道∶“徒弟们,好好看看,别像上次一样。”
2097 |
2098 | 如来请灵山众佛、圣僧召开传经大会,传经会散后,打发走了唐僧师徒,观音菩萨跟如来说∶“取经成功,要经过十四年,共五千零四十天,现在还有八天。”如来忙令四大金刚驾云送圣僧回国,八天内再把圣经送回来。
2099 |
2100 | 四大金刚刚赶上唐僧,叫道∶“取经的,跟我来!”唐僧等人连同白马立即飘飘荡荡,驾在云上。一天一夜后,揭谛赶上来,凑在金刚耳边说了一些什么话,金刚听后,把风按住,唐僧四人连马一块摔在地上。
2101 |
2102 | 原来,观音菩萨在查看唐僧取经路上的历难簿时,发现佛门九九归真,唐僧只受了八十难,还少一难,所以命揭谛去赶金刚,让唐僧再遇一难。唐僧等人落地后,发现已经来到通天河西岸,找不到船和桥,没有办法过河。
2103 |
2104 | 忽然听见有人叫喊∶“唐圣僧,来这里!”师徒们抬头张望,见一个大白赖头龟在岸边探着头叫∶“师父,你才回来,我等你好几年了。”唐僧等人又像去西天一样,一齐上了龟背,直向东岸驶去。
2105 |
2106 | 老龟四脚着水,跟走平地一样,快到东岸时,天有点黑了,老龟问唐僧∶“那年托你向如来佛祖问我几时能修成人身,你问了没有?”唐僧专心取经忘了问,所以低着头不敢回答。老龟生气了,把身子一晃,沉下水去。唐僧师徒全部掉到水里。
2107 |
2108 | 幸亏离岸不远,唐僧已经脱了凡胎,没有沉下去,白马是龙,八戒、沙僧水性好,悟空神通广大,他们帮师父登上东岸。忽然又刮起一阵狂风,电闪雷鸣,砂石乱飞,唐僧师徒忙按住经包,悟空拿着棒在一边守护着。
2109 |
2110 | 师徒四人劳累了一夜,天亮时才风停雷止。太阳出来后,他们忙打开经包晾晒经卷。一个渔民发现他们,忙叫来陈家庄的陈澄等人。当年悟空、八戒救过陈家的儿女,陈澄没忘恩情,请唐僧师徒进庄休息。
2111 |
2112 | 盛情难却,唐僧师徒收拾起经卷,跟陈澄来到陈家庄,全庄男女老幼都到村口迎接。在陈家用过饭后,唐僧就要告辞,陈家兄弟和全庄的人都不让走,唐僧师徒当天晚上就在庄里过夜。
2113 |
2114 | 当天夜里,唐僧守着真经,一步都不敢离开。半夜,他把徒弟们叫起来,牵上马,挑着担,让悟空设法打开庄门,顺着小路往东走。这时,半空中又响起金刚的叫声。“逃走的,跟我来!”顿时,唐僧师徒连马带经升到空中。
2115 |
2116 | 四大金刚不到一天就把他师徒送到了东土大唐的京城长安。四大金刚说∶“圣僧,为了不现金身,我们不下去,大圣他们三个也不用下去了。你自己传了经就回来,跟我们一起回灵山缴旨。”
2117 |
2118 | 悟空说∶“你们话虽然有理,但我师父一人挑不动担子,又牵不了马。
2119 |
2120 | 我们必须送他才行。”金刚说∶“观音菩萨规定八天返回,现在还有四天多,你们快去快回,不得延误。”说完,便将唐僧四人放到地上。
2121 |
2122 | 那唐太宗自从贞观十三年送走唐僧后,就叫人在长安城关外修了一座望经楼,并且年年都来这。这天太宗刚好出宫来到望经楼,忽然看见西方满天瑞气,并飘来阵阵香气,远远见唐僧师徒过来,忙率领文武官员下楼迎接。
2123 |
2124 | 唐僧见了太宗连忙下拜,太宗搀起唐僧问∶“那三位是什么人?”唐僧说是途中收的徒弟,太宗十分高兴,忙叫他们一块回宫。满城的人都知道取经的人回来了,纷纷出来迎接。唐僧原来住的洪福寺里的大小僧人更是特别高兴。
2125 |
2126 | 唐僧进朝后,叫悟空、八戒、沙僧抬来包袱,把经卷取出来,由官员传递给太宗。太宗问起取经的经过,唐僧一一奏明∶走了十万八千里的路,历经十四个寒暑,经过了许多王国,唐僧叫悟空把通关文牒取出来呈给太宗。
2127 |
2128 | 第二天早朝,唐太宗对群臣说,唐僧的功德极大,他一夜没睡,想了一篇序文,准备赠给他,当时叫人记了下来,然后召唐僧上殿,将序文递给唐僧说∶“为答谢你的功德,我想了篇序文,不知好不好。”唐僧忙叩头谢恩。
2129 |
2130 | 太宗又叫唐僧把真经讲诵一遍,唐僧说如果要讲真经,必须找佛地。太宗忙命官员把经书各捧几卷,送到圣洁的雁塔寺。太宗亲自到雁塔寺,听唐僧诵经。唐僧登上高台,刚要诵读,四大金刚现出身在空中叫道∶“诵经的,跟我回去!”
2131 |
2132 | 唐僧听到喊叫,正在迟疑,悟空、八戒、沙僧、连同白马,早被香风卷到空中。唐僧只好放下经卷,跟着腾空于九天云霄,慌得太宗和文武百官连忙跪下,朝空中礼拜。
2133 |
2134 | 四大金刚驾着香风,带着唐僧师徒和白马返回灵山,连去带来,刚好八天。这时,灵山众神,都来听如来佛祖讲经,四大金刚领着唐僧师徒进殿,拜见如来,缴了金旨。
2135 |
2136 | 如来把唐僧师徒叫到座前封职。唐僧封为旃檀功德佛,孙悟空封为斗战胜佛,猪八戒封为净坛使者,沙和尚封为金身罗汉,白马封为八部天龙,各归佛位,超脱凡尘。封职后,唐僧师徒个个欢天喜地,叩头谢恩。
2137 |
2138 | 如来又命揭谛带白马到灵山后崖化龙池。谒谛把马推到池子里,立刻,白马化成一条金龙飞了出来,盘绕在山门里擎天华表柱子上。悟空请求师父取下头上的金箍儿,唐僧说∶“你已成佛,自然就去了。”悟空抬手摸头,果然没有了。
2139 |
2140 | 从此以后,旃檀佛、斗战胜佛、净坛使者、金身罗汉、天龙马及诸众佛祖、菩萨、圣僧、罗汉、揭谛、比丘、优婆夷、优婆塞,各山洞的神仙,大神丁甲、功曹、伽蓝、土地、一切得道的师仙,到此各回本位。
--------------------------------------------------------------------------------
/gradio_demo.py:
--------------------------------------------------------------------------------
1 | # 临时demo ,配置已更新,进去全部更新完毕!!
2 |
3 | import os
4 | base_path = './JimmyMa99/BaJie-Chat-llama3_1-8b'
5 | #模型下载
6 | from modelscope import snapshot_download
7 | model_dir = snapshot_download('JimmyMa99/BaJie-Chat-llama3_1-8b',cache_dir='./')
8 | os.system(f'cd .. && pip install lmdeploy')
9 | os.system(f'cd .. && pip install gradio==4.13.0')
10 | os.system(f'lmdeploy serve gradio {base_path} --model-name llama3 --server-port 7860')
11 |
--------------------------------------------------------------------------------
/my_config/zbj_internlm2_chat_7b_qlora_oasst1_e4.py:
--------------------------------------------------------------------------------
1 | # Copyright (c) OpenMMLab. All rights reserved.
2 | import torch
3 | from datasets import load_dataset
4 | from mmengine.dataset import DefaultSampler
5 | from mmengine.hooks import (CheckpointHook, DistSamplerSeedHook, IterTimerHook,
6 | LoggerHook, ParamSchedulerHook)
7 | from mmengine.optim import AmpOptimWrapper, CosineAnnealingLR, LinearLR
8 | from peft import LoraConfig
9 | from torch.optim import AdamW
10 | from transformers import (AutoModelForCausalLM, AutoTokenizer,
11 | BitsAndBytesConfig)
12 |
13 | from xtuner.dataset import process_hf_dataset
14 | from xtuner.dataset.collate_fns import default_collate_fn
15 | from xtuner.dataset.map_fns import template_map_fn_factory
16 | from xtuner.engine.hooks import (DatasetInfoHook, EvaluateChatHook,
17 | VarlenAttnArgsToMessageHubHook)
18 | from xtuner.engine.runner import TrainLoop
19 | from xtuner.model import SupervisedFinetune
20 | from xtuner.utils import PROMPT_TEMPLATE
21 |
22 | #######################################################################
23 | # PART 1 Settings #
24 | #######################################################################
25 | # Model
26 | pretrained_model_name_or_path = 'path/to/your/pretrained_model'
27 | use_varlen_attn = False
28 |
29 | # Data
30 | data_path = 'data/zbj.jsonl'
31 | prompt_template = PROMPT_TEMPLATE.internlm2_chat
32 | max_length = 2048
33 | pack_to_max_length = True
34 |
35 | # Scheduler & Optimizer
36 | batch_size = 1 # per_device
37 | accumulative_counts = 16
38 | dataloader_num_workers = 0
39 | max_epochs = 4
40 | optim_type = AdamW
41 | lr = 2e-4
42 | betas = (0.9, 0.999)
43 | weight_decay = 0
44 | max_norm = 1 # grad clip
45 | warmup_ratio = 0.03
46 |
47 | # Save
48 | save_steps = 500
49 | save_total_limit = 2 # Maximum checkpoints to keep (-1 means unlimited)
50 |
51 | # Evaluate the generation performance during the training
52 | evaluation_freq = 500
53 | SYSTEM = ''
54 | evaluation_inputs = [
55 | '你是谁呀', '我又是谁呢'
56 | ]
57 |
58 | #######################################################################
59 | # PART 2 Model & Tokenizer #
60 | #######################################################################
61 | tokenizer = dict(
62 | type=AutoTokenizer.from_pretrained,
63 | pretrained_model_name_or_path=pretrained_model_name_or_path,
64 | trust_remote_code=True,
65 | padding_side='right')
66 |
67 | model = dict(
68 | type=SupervisedFinetune,
69 | use_varlen_attn=use_varlen_attn,
70 | llm=dict(
71 | type=AutoModelForCausalLM.from_pretrained,
72 | pretrained_model_name_or_path=pretrained_model_name_or_path,
73 | trust_remote_code=True,
74 | torch_dtype=torch.float16,
75 | quantization_config=dict(
76 | type=BitsAndBytesConfig,
77 | load_in_4bit=True,
78 | load_in_8bit=False,
79 | llm_int8_threshold=6.0,
80 | llm_int8_has_fp16_weight=False,
81 | bnb_4bit_compute_dtype=torch.float16,
82 | bnb_4bit_use_double_quant=True,
83 | bnb_4bit_quant_type='nf4')),
84 | lora=dict(
85 | type=LoraConfig,
86 | r=64,
87 | lora_alpha=16,
88 | lora_dropout=0.1,
89 | bias='none',
90 | task_type='CAUSAL_LM'))
91 |
92 | #######################################################################
93 | # PART 3 Dataset & Dataloader #
94 | #######################################################################
95 | train_dataset = dict(
96 | type=process_hf_dataset,
97 | dataset=dict(type=load_dataset, path='json', data_files=dict(train=data_path)),
98 | tokenizer=tokenizer,
99 | max_length=max_length,
100 | dataset_map_fn=None,
101 | template_map_fn=dict(
102 | type=template_map_fn_factory, template=prompt_template),
103 | remove_unused_columns=True,
104 | shuffle_before_pack=True,
105 | pack_to_max_length=pack_to_max_length,
106 | use_varlen_attn=use_varlen_attn)
107 |
108 | train_dataloader = dict(
109 | batch_size=batch_size,
110 | num_workers=dataloader_num_workers,
111 | dataset=train_dataset,
112 | sampler=dict(type=DefaultSampler, shuffle=True),
113 | collate_fn=dict(type=default_collate_fn, use_varlen_attn=use_varlen_attn))
114 |
115 | #######################################################################
116 | # PART 4 Scheduler & Optimizer #
117 | #######################################################################
118 | # optimizer
119 | optim_wrapper = dict(
120 | type=AmpOptimWrapper,
121 | optimizer=dict(
122 | type=optim_type, lr=lr, betas=betas, weight_decay=weight_decay),
123 | clip_grad=dict(max_norm=max_norm, error_if_nonfinite=False),
124 | accumulative_counts=accumulative_counts,
125 | loss_scale='dynamic',
126 | dtype='float16')
127 |
128 | # learning policy
129 | # More information: https://github.com/open-mmlab/mmengine/blob/main/docs/en/tutorials/param_scheduler.md # noqa: E501
130 | param_scheduler = [
131 | dict(
132 | type=LinearLR,
133 | start_factor=1e-5,
134 | by_epoch=True,
135 | begin=0,
136 | end=warmup_ratio * max_epochs,
137 | convert_to_iter_based=True),
138 | dict(
139 | type=CosineAnnealingLR,
140 | eta_min=0.0,
141 | by_epoch=True,
142 | begin=warmup_ratio * max_epochs,
143 | end=max_epochs,
144 | convert_to_iter_based=True)
145 | ]
146 |
147 | # train, val, test setting
148 | train_cfg = dict(type=TrainLoop, max_epochs=max_epochs)
149 |
150 | #######################################################################
151 | # PART 5 Runtime #
152 | #######################################################################
153 | # Log the dialogue periodically during the training process, optional
154 | custom_hooks = [
155 | dict(type=DatasetInfoHook, tokenizer=tokenizer),
156 | dict(
157 | type=EvaluateChatHook,
158 | tokenizer=tokenizer,
159 | every_n_iters=evaluation_freq,
160 | evaluation_inputs=evaluation_inputs,
161 | system=SYSTEM,
162 | prompt_template=prompt_template)
163 | ]
164 |
165 | if use_varlen_attn:
166 | custom_hooks += [dict(type=VarlenAttnArgsToMessageHubHook)]
167 |
168 | # configure default hooks
169 | default_hooks = dict(
170 | # record the time of every iteration.
171 | timer=dict(type=IterTimerHook),
172 | # print log every 10 iterations.
173 | logger=dict(type=LoggerHook, log_metric_by_epoch=False, interval=10),
174 | # enable the parameter scheduler.
175 | param_scheduler=dict(type=ParamSchedulerHook),
176 | # save checkpoint per `save_steps`.
177 | checkpoint=dict(
178 | type=CheckpointHook,
179 | by_epoch=False,
180 | interval=save_steps,
181 | max_keep_ckpts=save_total_limit),
182 | # set sampler seed in distributed evrionment.
183 | sampler_seed=dict(type=DistSamplerSeedHook),
184 | )
185 |
186 | # configure environment
187 | env_cfg = dict(
188 | # whether to enable cudnn benchmark
189 | cudnn_benchmark=False,
190 | # set multi process parameters
191 | mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0),
192 | # set distributed parameters
193 | dist_cfg=dict(backend='nccl'),
194 | )
195 |
196 | # set visualizer
197 | visualizer = None
198 |
199 | # set log level
200 | log_level = 'INFO'
201 |
202 | # load from which checkpoint
203 | load_from = None
204 |
205 | # whether to resume training from the loaded checkpoint
206 | resume = False
207 |
208 | # Defaults to use random seed and disable `deterministic`
209 | randomness = dict(seed=None, deterministic=False)
210 |
211 | # set log processor
212 | log_processor = dict(by_epoch=False)
213 |
--------------------------------------------------------------------------------
/my_config/zbj_llama3_1_8b_qlora_oasst1_e4.py:
--------------------------------------------------------------------------------
1 | # Copyright (c) OpenMMLab. All rights reserved.
2 | import torch
3 | from datasets import load_dataset
4 | from mmengine.dataset import DefaultSampler
5 | from mmengine.hooks import (CheckpointHook, DistSamplerSeedHook, IterTimerHook,
6 | LoggerHook, ParamSchedulerHook)
7 | from mmengine.optim import AmpOptimWrapper, CosineAnnealingLR, LinearLR
8 | from peft import LoraConfig
9 | from torch.optim import AdamW
10 | from transformers import (AutoModelForCausalLM, AutoTokenizer,
11 | BitsAndBytesConfig)
12 |
13 | from xtuner.dataset import process_hf_dataset
14 | from xtuner.dataset.collate_fns import default_collate_fn
15 | from xtuner.dataset.map_fns import alpaca_map_fn, template_map_fn_factory
16 | from xtuner.engine.hooks import (DatasetInfoHook, EvaluateChatHook,
17 | VarlenAttnArgsToMessageHubHook)
18 | from xtuner.engine.runner import TrainLoop
19 | from xtuner.model import SupervisedFinetune
20 | from xtuner.parallel.sequence import SequenceParallelSampler
21 | from xtuner.utils import PROMPT_TEMPLATE, SYSTEM_TEMPLATE
22 |
23 | #######################################################################
24 | # PART 1 Settings #
25 | #######################################################################
26 | # Model
27 | pretrained_model_name_or_path = '/root/share/new_models/meta-llama/Meta-Llama-3___1-8B-Instruct'
28 | use_varlen_attn = False
29 |
30 | # Data
31 | data_files = ['dataset/zbj.jsonl']
32 | prompt_template = PROMPT_TEMPLATE.llama3_chat
33 | max_length = 512
34 | pack_to_max_length = True
35 |
36 | # parallel
37 | sequence_parallel_size = 1
38 |
39 | # Scheduler & Optimizer
40 | batch_size = 1 # per_device
41 | accumulative_counts = 16
42 | accumulative_counts *= sequence_parallel_size
43 | dataloader_num_workers = 0
44 | max_epochs = 3
45 | optim_type = AdamW
46 | lr = 2e-4
47 | betas = (0.9, 0.999)
48 | weight_decay = 0
49 | max_norm = 1 # grad clip
50 | warmup_ratio = 0.03
51 |
52 | # Save
53 | save_steps = 500
54 | save_total_limit = 2 # Maximum checkpoints to keep (-1 means unlimited)
55 |
56 | # Evaluate the generation performance during the training
57 | evaluation_freq = 500
58 | SYSTEM = """
59 | '你是猪八戒,猪八戒说话幽默风趣,说话方式通常表现为直率、幽默,有时带有一点自嘲和调侃。'
60 | '你的话语中常常透露出对食物的喜爱和对安逸生活的向往,同时也显示出他机智和有时的懒惰特点。'
61 | '尽量保持回答的自然回答,当然你也可以适当穿插一些文言文,另外,书生·浦语是你的好朋友,是你的AI助手。'
62 | """
63 | evaluation_inputs = [
64 | '你是(请用中文回答)'
65 | ]
66 |
67 | #######################################################################
68 | # PART 2 Model & Tokenizer #
69 | #######################################################################
70 | tokenizer = dict(
71 | type=AutoTokenizer.from_pretrained,
72 | pretrained_model_name_or_path=pretrained_model_name_or_path,
73 | trust_remote_code=True,
74 | padding_side='right')
75 |
76 | model = dict(
77 | type=SupervisedFinetune,
78 | use_varlen_attn=use_varlen_attn,
79 | llm=dict(
80 | type=AutoModelForCausalLM.from_pretrained,
81 | pretrained_model_name_or_path=pretrained_model_name_or_path,
82 | trust_remote_code=True,
83 | torch_dtype=torch.float16,
84 | quantization_config=dict(
85 | type=BitsAndBytesConfig,
86 | load_in_4bit=True,
87 | load_in_8bit=False,
88 | llm_int8_threshold=6.0,
89 | llm_int8_has_fp16_weight=False,
90 | bnb_4bit_compute_dtype=torch.float16,
91 | bnb_4bit_use_double_quant=True,
92 | bnb_4bit_quant_type='nf4')),
93 | lora=dict(
94 | type=LoraConfig,
95 | r=16,
96 | lora_alpha=16,
97 | lora_dropout=0.1,
98 | bias='none',
99 | task_type='CAUSAL_LM'))
100 |
101 | #######################################################################
102 | # PART 3 Dataset & Dataloader #
103 | #######################################################################
104 | alpaca_en = dict(
105 | type=process_hf_dataset,
106 | # dataset=dict(type=load_dataset, path=alpaca_en_path),
107 | dataset=dict(type=load_dataset, path='json',data_files=data_files),
108 |
109 | tokenizer=tokenizer,
110 | max_length=max_length,
111 | dataset_map_fn=None,
112 | template_map_fn=dict(
113 | type=template_map_fn_factory, template=prompt_template),
114 | remove_unused_columns=True,
115 | shuffle_before_pack=True,
116 | pack_to_max_length=pack_to_max_length,
117 | use_varlen_attn=use_varlen_attn)
118 |
119 | sampler = SequenceParallelSampler \
120 | if sequence_parallel_size > 1 else DefaultSampler
121 | train_dataloader = dict(
122 | batch_size=batch_size,
123 | num_workers=dataloader_num_workers,
124 | dataset=alpaca_en,
125 | sampler=dict(type=sampler, shuffle=True),
126 | collate_fn=dict(type=default_collate_fn, use_varlen_attn=use_varlen_attn))
127 |
128 | #######################################################################
129 | # PART 4 Scheduler & Optimizer #
130 | #######################################################################
131 | # optimizer
132 | optim_wrapper = dict(
133 | type=AmpOptimWrapper,
134 | optimizer=dict(
135 | type=optim_type, lr=lr, betas=betas, weight_decay=weight_decay),
136 | clip_grad=dict(max_norm=max_norm, error_if_nonfinite=False),
137 | accumulative_counts=accumulative_counts,
138 | loss_scale='dynamic',
139 | dtype='float16')
140 |
141 | # learning policy
142 | # More information: https://github.com/open-mmlab/mmengine/blob/main/docs/en/tutorials/param_scheduler.md # noqa: E501
143 | param_scheduler = [
144 | dict(
145 | type=LinearLR,
146 | start_factor=1e-5,
147 | by_epoch=True,
148 | begin=0,
149 | end=warmup_ratio * max_epochs,
150 | convert_to_iter_based=True),
151 | dict(
152 | type=CosineAnnealingLR,
153 | eta_min=0.0,
154 | by_epoch=True,
155 | begin=warmup_ratio * max_epochs,
156 | end=max_epochs,
157 | convert_to_iter_based=True)
158 | ]
159 |
160 | # train, val, test setting
161 | train_cfg = dict(type=TrainLoop, max_epochs=max_epochs)
162 |
163 | #######################################################################
164 | # PART 5 Runtime #
165 | #######################################################################
166 | # Log the dialogue periodically during the training process, optional
167 | custom_hooks = [
168 | dict(type=DatasetInfoHook, tokenizer=tokenizer),
169 | dict(
170 | type=EvaluateChatHook,
171 | tokenizer=tokenizer,
172 | every_n_iters=evaluation_freq,
173 | evaluation_inputs=evaluation_inputs,
174 | system=SYSTEM,
175 | prompt_template=prompt_template)
176 | ]
177 |
178 | if use_varlen_attn:
179 | custom_hooks += [dict(type=VarlenAttnArgsToMessageHubHook)]
180 |
181 | # configure default hooks
182 | default_hooks = dict(
183 | # record the time of every iteration.
184 | timer=dict(type=IterTimerHook),
185 | # print log every 10 iterations.
186 | logger=dict(type=LoggerHook, log_metric_by_epoch=False, interval=10),
187 | # enable the parameter scheduler.
188 | param_scheduler=dict(type=ParamSchedulerHook),
189 | # save checkpoint per `save_steps`.
190 | checkpoint=dict(
191 | type=CheckpointHook,
192 | by_epoch=False,
193 | interval=save_steps,
194 | max_keep_ckpts=save_total_limit),
195 | # set sampler seed in distributed evrionment.
196 | sampler_seed=dict(type=DistSamplerSeedHook),
197 | )
198 |
199 | # configure environment
200 | env_cfg = dict(
201 | # whether to enable cudnn benchmark
202 | cudnn_benchmark=False,
203 | # set multi process parameters
204 | mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0),
205 | # set distributed parameters
206 | dist_cfg=dict(backend='nccl'),
207 | )
208 |
209 | # set visualizer
210 | visualizer = None
211 |
212 | # set log level
213 | log_level = 'INFO'
214 |
215 | # load from which checkpoint
216 | load_from = None
217 |
218 | # whether to resume training from the loaded checkpoint
219 | resume = False
220 |
221 | # Defaults to use random seed and disable `deterministic`
222 | randomness = dict(seed=None, deterministic=False)
223 |
224 | # set log processor
225 | log_processor = dict(by_epoch=False)
226 |
--------------------------------------------------------------------------------
/openxlab/app.py:
--------------------------------------------------------------------------------
1 | """This script refers to the dialogue example of streamlit, the interactive
2 | generation code of chatglm2 and transformers.
3 |
4 | We mainly modified part of the code logic to adapt to the
5 | generation of our model.
6 | Please refer to these links below for more information:
7 | 1. streamlit chat example:
8 | https://docs.streamlit.io/knowledge-base/tutorials/build-conversational-apps
9 | 2. chatglm2:
10 | https://github.com/THUDM/ChatGLM2-6B
11 | 3. transformers:
12 | https://github.com/huggingface/transformers
13 | Please run with the command `streamlit run path/to/web_demo.py
14 | --server.address=0.0.0.0 --server.port 7860`.
15 | Using `python path/to/web_demo.py` may cause unknown problems.
16 | """
17 | # isort: skip_file
18 | import copy
19 | import warnings
20 | from dataclasses import asdict, dataclass
21 | from typing import Callable, List, Optional
22 |
23 | import streamlit as st
24 | import torch
25 | from torch import nn
26 | from transformers.generation.utils import (LogitsProcessorList,
27 | StoppingCriteriaList)
28 | from transformers.utils import logging
29 |
30 | from transformers import AutoTokenizer, AutoModelForCausalLM # isort: skip
31 |
32 | from modelscope import snapshot_download
33 |
34 | logger = logging.get_logger(__name__)
35 |
36 | model_id = 'JimmyMa99/BaJie-Chat'
37 | mode_name_or_path = snapshot_download(model_id, revision='master')
38 |
39 | @dataclass
40 | class GenerationConfig:
41 | # this config is used for chat to provide more diversity
42 | max_length: int = 32768
43 | top_p: float = 0.8
44 | temperature: float = 0.8
45 | do_sample: bool = True
46 | repetition_penalty: float = 1.005
47 |
48 |
49 | @torch.inference_mode()
50 | def generate_interactive(
51 | model,
52 | tokenizer,
53 | prompt,
54 | generation_config: Optional[GenerationConfig] = None,
55 | logits_processor: Optional[LogitsProcessorList] = None,
56 | stopping_criteria: Optional[StoppingCriteriaList] = None,
57 | prefix_allowed_tokens_fn: Optional[Callable[[int, torch.Tensor],
58 | List[int]]] = None,
59 | additional_eos_token_id: Optional[int] = None,
60 | **kwargs,
61 | ):
62 | inputs = tokenizer([prompt], padding=True, return_tensors='pt')
63 | input_length = len(inputs['input_ids'][0])
64 | for k, v in inputs.items():
65 | inputs[k] = v.cuda()
66 | input_ids = inputs['input_ids']
67 | _, input_ids_seq_length = input_ids.shape[0], input_ids.shape[-1]
68 | if generation_config is None:
69 | generation_config = model.generation_config
70 | generation_config = copy.deepcopy(generation_config)
71 | model_kwargs = generation_config.update(**kwargs)
72 | bos_token_id, eos_token_id = ( # noqa: F841 # pylint: disable=W0612
73 | generation_config.bos_token_id,
74 | generation_config.eos_token_id,
75 | )
76 | if isinstance(eos_token_id, int):
77 | eos_token_id = [eos_token_id]
78 | if additional_eos_token_id is not None:
79 | eos_token_id.append(additional_eos_token_id)
80 | has_default_max_length = kwargs.get(
81 | 'max_length') is None and generation_config.max_length is not None
82 | if has_default_max_length and generation_config.max_new_tokens is None:
83 | warnings.warn(
84 | f"Using 'max_length''s default ({repr(generation_config.max_length)}) \
85 | to control the generation length. "
86 | 'This behaviour is deprecated and will be removed from the \
87 | config in v5 of Transformers -- we'
88 | ' recommend using `max_new_tokens` to control the maximum \
89 | length of the generation.',
90 | UserWarning,
91 | )
92 | elif generation_config.max_new_tokens is not None:
93 | generation_config.max_length = generation_config.max_new_tokens + \
94 | input_ids_seq_length
95 | if not has_default_max_length:
96 | logger.warn( # pylint: disable=W4902
97 | f"Both 'max_new_tokens' (={generation_config.max_new_tokens}) "
98 | f"and 'max_length'(={generation_config.max_length}) seem to "
99 | "have been set. 'max_new_tokens' will take precedence. "
100 | 'Please refer to the documentation for more information. '
101 | '(https://huggingface.co/docs/transformers/main/'
102 | 'en/main_classes/text_generation)',
103 | UserWarning,
104 | )
105 |
106 | if input_ids_seq_length >= generation_config.max_length:
107 | input_ids_string = 'input_ids'
108 | logger.warning(
109 | f"Input length of {input_ids_string} is {input_ids_seq_length}, "
110 | f"but 'max_length' is set to {generation_config.max_length}. "
111 | 'This can lead to unexpected behavior. You should consider'
112 | " increasing 'max_new_tokens'.")
113 |
114 | # 2. Set generation parameters if not already defined
115 | logits_processor = logits_processor if logits_processor is not None \
116 | else LogitsProcessorList()
117 | stopping_criteria = stopping_criteria if stopping_criteria is not None \
118 | else StoppingCriteriaList()
119 |
120 | logits_processor = model._get_logits_processor(
121 | generation_config=generation_config,
122 | input_ids_seq_length=input_ids_seq_length,
123 | encoder_input_ids=input_ids,
124 | prefix_allowed_tokens_fn=prefix_allowed_tokens_fn,
125 | logits_processor=logits_processor,
126 | )
127 |
128 | stopping_criteria = model._get_stopping_criteria(
129 | generation_config=generation_config,
130 | stopping_criteria=stopping_criteria)
131 | logits_warper = model._get_logits_warper(generation_config)
132 |
133 | unfinished_sequences = input_ids.new(input_ids.shape[0]).fill_(1)
134 | scores = None
135 | while True:
136 | model_inputs = model.prepare_inputs_for_generation(
137 | input_ids, **model_kwargs)
138 | # forward pass to get next token
139 | outputs = model(
140 | **model_inputs,
141 | return_dict=True,
142 | output_attentions=False,
143 | output_hidden_states=False,
144 | )
145 |
146 | next_token_logits = outputs.logits[:, -1, :]
147 |
148 | # pre-process distribution
149 | next_token_scores = logits_processor(input_ids, next_token_logits)
150 | next_token_scores = logits_warper(input_ids, next_token_scores)
151 |
152 | # sample
153 | probs = nn.functional.softmax(next_token_scores, dim=-1)
154 | if generation_config.do_sample:
155 | next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1)
156 | else:
157 | next_tokens = torch.argmax(probs, dim=-1)
158 |
159 | # update generated ids, model inputs, and length for next step
160 | input_ids = torch.cat([input_ids, next_tokens[:, None]], dim=-1)
161 | model_kwargs = model._update_model_kwargs_for_generation(
162 | outputs, model_kwargs, is_encoder_decoder=False)
163 | unfinished_sequences = unfinished_sequences.mul(
164 | (min(next_tokens != i for i in eos_token_id)).long())
165 |
166 | output_token_ids = input_ids[0].cpu().tolist()
167 | output_token_ids = output_token_ids[input_length:]
168 | for each_eos_token_id in eos_token_id:
169 | if output_token_ids[-1] == each_eos_token_id:
170 | output_token_ids = output_token_ids[:-1]
171 | response = tokenizer.decode(output_token_ids)
172 |
173 | yield response
174 | # stop when each sentence is finished
175 | # or if we exceed the maximum length
176 | if unfinished_sequences.max() == 0 or stopping_criteria(
177 | input_ids, scores):
178 | break
179 |
180 |
181 | def on_btn_click():
182 | del st.session_state.messages
183 |
184 |
185 | @st.cache_resource
186 | def load_model():
187 | # 从预训练的模型中获取tokenizer
188 | tokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, trust_remote_code=True)
189 | # 从预训练的模型中获取模型,并设置模型参数
190 | model = AutoModelForCausalLM.from_pretrained(mode_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16).cuda()
191 | return model, tokenizer
192 |
193 |
194 | def prepare_generation_config():
195 | with st.sidebar:
196 | st.markdown("## InternLM LLM")
197 | "[InternLM](https://github.com/InternLM/InternLM)"
198 | "[XTuner](https://github.com/InternLM/xtuner)"
199 | "[悟空-Chat](https://github.com/JimmyMa99/WuKong-Chat)"
200 | "[八戒-Chat](https://github.com/JimmyMa99/BaJie-Chat)"
201 | "[三藏-Chat](https://github.com/JimmyMa99/SanZang-Chat)"
202 | "[悟净-Chat](https://github.com/JimmyMa99/WuJing-Chat)"
203 | # 创建一个滑块,用于选择最大长度,范围在0到1024之间,默认值为512
204 | max_length = st.slider('Max Length',
205 | min_value=8,
206 | max_value=2048,
207 | value=1024)
208 | top_p = st.slider('Top P', 0.0, 1.0, 0.8, step=0.01)
209 | temperature = st.slider('Temperature', 0.0, 1.0, 0.7, step=0.01)
210 | st.button('Clear Chat History', on_click=on_btn_click)
211 |
212 | generation_config = GenerationConfig(max_length=max_length,
213 | top_p=top_p,
214 | temperature=temperature)
215 |
216 | return generation_config
217 |
218 |
219 | user_prompt = '<|im_start|>user\n{user}<|im_end|>\n'
220 | robot_prompt = '<|im_start|>assistant\n{robot}<|im_end|>\n'
221 | cur_query_prompt = '<|im_start|>user\n{user}<|im_end|>\n\
222 | <|im_start|>assistant\n'
223 |
224 |
225 | def combine_history(prompt):
226 | messages = st.session_state.messages
227 | meta_instruction = ('你是猪八戒,猪八戒说话幽默风趣,说话方式通常表现为直率、幽默,有时带有一点自嘲和调侃。'
228 | '你的话语中常常透露出对食物的喜爱和对安逸生活的向往,同时也显示出他机智和有时的懒惰特点。'
229 | '尽量保持回答的自然回答,当然你也可以适当穿插一些文言文,另外,书生·浦语是你的好朋友,是你的AI助手。')
230 |
231 | total_prompt = f"<|im_start|>system\n{meta_instruction}<|im_end|>\n"
232 | for message in messages:
233 | cur_content = message['content']
234 | if message['role'] == 'user':
235 | cur_prompt = user_prompt.format(user=cur_content)
236 | elif message['role'] == 'robot':
237 | cur_prompt = robot_prompt.format(robot=cur_content)
238 | else:
239 | raise RuntimeError
240 | total_prompt += cur_prompt
241 | total_prompt = total_prompt + cur_query_prompt.format(user=prompt)
242 | return total_prompt
243 |
244 |
245 | def main():
246 | # torch.cuda.empty_cache()
247 | print('load model begin.')
248 | model, tokenizer = load_model()
249 | print('load model end.')
250 |
251 | user_avator = 'assets/user_new.png'
252 | robot_avator = 'assets/zbj.png'
253 |
254 | st.title("🐖 八戒-Chat InternLM2")
255 | st.caption("🚀 A streamlit chatbot powered by InternLM2 QLora")
256 |
257 | generation_config = prepare_generation_config()
258 |
259 | # Initialize chat history
260 | if 'messages' not in st.session_state:
261 | st.session_state.messages = []
262 |
263 | # Display chat messages from history on app rerun
264 | for message in st.session_state.messages:
265 | with st.chat_message(message['role'], avatar=message.get('avatar')):
266 | st.markdown(message['content'])
267 |
268 | # Accept user input
269 | if prompt := st.chat_input('What is up?'):
270 | # Display user message in chat message container
271 | with st.chat_message('user', avatar=user_avator):
272 | st.markdown(prompt)
273 | real_prompt = combine_history(prompt)
274 | # Add user message to chat history
275 | st.session_state.messages.append({
276 | 'role': 'user',
277 | 'content': prompt,
278 | 'avatar': user_avator
279 | })
280 |
281 | with st.chat_message('robot', avatar=robot_avator):
282 | message_placeholder = st.empty()
283 | for cur_response in generate_interactive(
284 | model=model,
285 | tokenizer=tokenizer,
286 | prompt=real_prompt,
287 | additional_eos_token_id=92542,
288 | **asdict(generation_config),
289 | ):
290 | # Display robot response in chat message container
291 | message_placeholder.markdown(cur_response + '▌')
292 | message_placeholder.markdown(cur_response)
293 | # Add robot response to chat history
294 | st.session_state.messages.append({
295 | 'role': 'robot',
296 | 'content': cur_response, # pylint: disable=undefined-loop-variable
297 | 'avatar': robot_avator,
298 | })
299 | torch.cuda.empty_cache()
300 |
301 |
302 | if __name__ == '__main__':
303 | main()
304 |
--------------------------------------------------------------------------------
/openxlab/app_mini.py:
--------------------------------------------------------------------------------
1 | """This script refers to the dialogue example of streamlit, the interactive
2 | generation code of chatglm2 and transformers.
3 |
4 | We mainly modified part of the code logic to adapt to the
5 | generation of our model.
6 | Please refer to these links below for more information:
7 | 1. streamlit chat example:
8 | https://docs.streamlit.io/knowledge-base/tutorials/build-conversational-apps
9 | 2. chatglm2:
10 | https://github.com/THUDM/ChatGLM2-6B
11 | 3. transformers:
12 | https://github.com/huggingface/transformers
13 | Please run with the command `streamlit run path/to/web_demo.py
14 | --server.address=0.0.0.0 --server.port 7860`.
15 | Using `python path/to/web_demo.py` may cause unknown problems.
16 | """
17 | # isort: skip_file
18 | import copy
19 | import warnings
20 | from dataclasses import asdict, dataclass
21 | from typing import Callable, List, Optional
22 |
23 | import streamlit as st
24 | import torch
25 | from torch import nn
26 | from transformers.generation.utils import (LogitsProcessorList,
27 | StoppingCriteriaList)
28 | from transformers.utils import logging
29 |
30 | from transformers import AutoTokenizer, AutoModelForCausalLM # isort: skip
31 |
32 | from modelscope import snapshot_download
33 |
34 | logger = logging.get_logger(__name__)
35 |
36 | model_id = 'JimmyMa99/BaJie-Chat-mini'
37 | mode_name_or_path = snapshot_download(model_id, revision='master')
38 |
39 | @dataclass
40 | class GenerationConfig:
41 | # this config is used for chat to provide more diversity
42 | max_length: int = 32768
43 | top_p: float = 0.8
44 | temperature: float = 0.8
45 | do_sample: bool = True
46 | repetition_penalty: float = 1.005
47 |
48 |
49 | @torch.inference_mode()
50 | def generate_interactive(
51 | model,
52 | tokenizer,
53 | prompt,
54 | generation_config: Optional[GenerationConfig] = None,
55 | logits_processor: Optional[LogitsProcessorList] = None,
56 | stopping_criteria: Optional[StoppingCriteriaList] = None,
57 | prefix_allowed_tokens_fn: Optional[Callable[[int, torch.Tensor],
58 | List[int]]] = None,
59 | additional_eos_token_id: Optional[int] = None,
60 | **kwargs,
61 | ):
62 | inputs = tokenizer([prompt], padding=True, return_tensors='pt')
63 | input_length = len(inputs['input_ids'][0])
64 | for k, v in inputs.items():
65 | inputs[k] = v.cuda()
66 | input_ids = inputs['input_ids']
67 | _, input_ids_seq_length = input_ids.shape[0], input_ids.shape[-1]
68 | if generation_config is None:
69 | generation_config = model.generation_config
70 | generation_config = copy.deepcopy(generation_config)
71 | model_kwargs = generation_config.update(**kwargs)
72 | bos_token_id, eos_token_id = ( # noqa: F841 # pylint: disable=W0612
73 | generation_config.bos_token_id,
74 | generation_config.eos_token_id,
75 | )
76 | if isinstance(eos_token_id, int):
77 | eos_token_id = [eos_token_id]
78 | if additional_eos_token_id is not None:
79 | eos_token_id.append(additional_eos_token_id)
80 | has_default_max_length = kwargs.get(
81 | 'max_length') is None and generation_config.max_length is not None
82 | if has_default_max_length and generation_config.max_new_tokens is None:
83 | warnings.warn(
84 | f"Using 'max_length''s default ({repr(generation_config.max_length)}) \
85 | to control the generation length. "
86 | 'This behaviour is deprecated and will be removed from the \
87 | config in v5 of Transformers -- we'
88 | ' recommend using `max_new_tokens` to control the maximum \
89 | length of the generation.',
90 | UserWarning,
91 | )
92 | elif generation_config.max_new_tokens is not None:
93 | generation_config.max_length = generation_config.max_new_tokens + \
94 | input_ids_seq_length
95 | if not has_default_max_length:
96 | logger.warn( # pylint: disable=W4902
97 | f"Both 'max_new_tokens' (={generation_config.max_new_tokens}) "
98 | f"and 'max_length'(={generation_config.max_length}) seem to "
99 | "have been set. 'max_new_tokens' will take precedence. "
100 | 'Please refer to the documentation for more information. '
101 | '(https://huggingface.co/docs/transformers/main/'
102 | 'en/main_classes/text_generation)',
103 | UserWarning,
104 | )
105 |
106 | if input_ids_seq_length >= generation_config.max_length:
107 | input_ids_string = 'input_ids'
108 | logger.warning(
109 | f"Input length of {input_ids_string} is {input_ids_seq_length}, "
110 | f"but 'max_length' is set to {generation_config.max_length}. "
111 | 'This can lead to unexpected behavior. You should consider'
112 | " increasing 'max_new_tokens'.")
113 |
114 | # 2. Set generation parameters if not already defined
115 | logits_processor = logits_processor if logits_processor is not None \
116 | else LogitsProcessorList()
117 | stopping_criteria = stopping_criteria if stopping_criteria is not None \
118 | else StoppingCriteriaList()
119 |
120 | logits_processor = model._get_logits_processor(
121 | generation_config=generation_config,
122 | input_ids_seq_length=input_ids_seq_length,
123 | encoder_input_ids=input_ids,
124 | prefix_allowed_tokens_fn=prefix_allowed_tokens_fn,
125 | logits_processor=logits_processor,
126 | )
127 |
128 | stopping_criteria = model._get_stopping_criteria(
129 | generation_config=generation_config,
130 | stopping_criteria=stopping_criteria)
131 | logits_warper = model._get_logits_warper(generation_config)
132 |
133 | unfinished_sequences = input_ids.new(input_ids.shape[0]).fill_(1)
134 | scores = None
135 | while True:
136 | model_inputs = model.prepare_inputs_for_generation(
137 | input_ids, **model_kwargs)
138 | # forward pass to get next token
139 | outputs = model(
140 | **model_inputs,
141 | return_dict=True,
142 | output_attentions=False,
143 | output_hidden_states=False,
144 | )
145 |
146 | next_token_logits = outputs.logits[:, -1, :]
147 |
148 | # pre-process distribution
149 | next_token_scores = logits_processor(input_ids, next_token_logits)
150 | next_token_scores = logits_warper(input_ids, next_token_scores)
151 |
152 | # sample
153 | probs = nn.functional.softmax(next_token_scores, dim=-1)
154 | if generation_config.do_sample:
155 | next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1)
156 | else:
157 | next_tokens = torch.argmax(probs, dim=-1)
158 |
159 | # update generated ids, model inputs, and length for next step
160 | input_ids = torch.cat([input_ids, next_tokens[:, None]], dim=-1)
161 | model_kwargs = model._update_model_kwargs_for_generation(
162 | outputs, model_kwargs, is_encoder_decoder=False)
163 | unfinished_sequences = unfinished_sequences.mul(
164 | (min(next_tokens != i for i in eos_token_id)).long())
165 |
166 | output_token_ids = input_ids[0].cpu().tolist()
167 | output_token_ids = output_token_ids[input_length:]
168 | for each_eos_token_id in eos_token_id:
169 | if output_token_ids[-1] == each_eos_token_id:
170 | output_token_ids = output_token_ids[:-1]
171 | response = tokenizer.decode(output_token_ids)
172 |
173 | yield response
174 | # stop when each sentence is finished
175 | # or if we exceed the maximum length
176 | if unfinished_sequences.max() == 0 or stopping_criteria(
177 | input_ids, scores):
178 | break
179 |
180 |
181 | def on_btn_click():
182 | del st.session_state.messages
183 |
184 |
185 | @st.cache_resource
186 | def load_model():
187 | # 从预训练的模型中获取tokenizer
188 | tokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, trust_remote_code=True)
189 | # 从预训练的模型中获取模型,并设置模型参数
190 | model = AutoModelForCausalLM.from_pretrained(mode_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16).cuda()
191 | return model, tokenizer
192 |
193 |
194 | def prepare_generation_config():
195 | with st.sidebar:
196 | st.markdown("## InternLM LLM")
197 | "[InternLM](https://github.com/InternLM/InternLM)"
198 | "[XTuner](https://github.com/InternLM/xtuner)"
199 | "[悟空-Chat](https://github.com/JimmyMa99/WuKong-Chat)"
200 | "[八戒-Chat](https://github.com/JimmyMa99/BaJie-Chat)"
201 | "[三藏-Chat](https://github.com/JimmyMa99/SanZang-Chat)"
202 | "[悟净-Chat](https://github.com/JimmyMa99/WuJing-Chat)"
203 | # 创建一个滑块,用于选择最大长度,范围在0到1024之间,默认值为512
204 | max_length = st.slider('Max Length',
205 | min_value=8,
206 | max_value=2048,
207 | value=1024)
208 | top_p = st.slider('Top P', 0.0, 1.0, 0.8, step=0.01)
209 | temperature = st.slider('Temperature', 0.0, 1.0, 0.7, step=0.01)
210 | st.button('Clear Chat History', on_click=on_btn_click)
211 |
212 | generation_config = GenerationConfig(max_length=max_length,
213 | top_p=top_p,
214 | temperature=temperature)
215 |
216 | return generation_config
217 |
218 |
219 | user_prompt = '<|im_start|>user\n{user}<|im_end|>\n'
220 | robot_prompt = '<|im_start|>assistant\n{robot}<|im_end|>\n'
221 | cur_query_prompt = '<|im_start|>user\n{user}<|im_end|>\n\
222 | <|im_start|>assistant\n'
223 |
224 |
225 | def combine_history(prompt):
226 | messages = st.session_state.messages
227 | meta_instruction = ('你是猪八戒,猪八戒说话幽默风趣,说话方式通常表现为直率、幽默,有时带有一点自嘲和调侃。'
228 | '你的话语中常常透露出对食物的喜爱和对安逸生活的向往,同时也显示出他机智和有时的懒惰特点。'
229 | '尽量保持回答的自然回答,当然你也可以适当穿插一些文言文,另外,书生·浦语是你的好朋友,是你的AI助手。')
230 |
231 | total_prompt = f"<|im_start|>system\n{meta_instruction}<|im_end|>\n"
232 | for message in messages:
233 | cur_content = message['content']
234 | if message['role'] == 'user':
235 | cur_prompt = user_prompt.format(user=cur_content)
236 | elif message['role'] == 'robot':
237 | cur_prompt = robot_prompt.format(robot=cur_content)
238 | else:
239 | raise RuntimeError
240 | total_prompt += cur_prompt
241 | total_prompt = total_prompt + cur_query_prompt.format(user=prompt)
242 | return total_prompt
243 |
244 |
245 | def main():
246 | # torch.cuda.empty_cache()
247 | print('load model begin.')
248 | model, tokenizer = load_model()
249 | print('load model end.')
250 |
251 | user_avator = 'assets/user_new.png'
252 | robot_avator = 'assets/zbj.png'
253 |
254 | st.title("🐖 八戒-Chat InternLM2")
255 | st.caption("🚀 A streamlit chatbot powered by InternLM2 QLora")
256 |
257 | generation_config = prepare_generation_config()
258 |
259 | # Initialize chat history
260 | if 'messages' not in st.session_state:
261 | st.session_state.messages = []
262 |
263 | # Display chat messages from history on app rerun
264 | for message in st.session_state.messages:
265 | with st.chat_message(message['role'], avatar=message.get('avatar')):
266 | st.markdown(message['content'])
267 |
268 | # Accept user input
269 | if prompt := st.chat_input('What is up?'):
270 | # Display user message in chat message container
271 | with st.chat_message('user', avatar=user_avator):
272 | st.markdown(prompt)
273 | real_prompt = combine_history(prompt)
274 | # Add user message to chat history
275 | st.session_state.messages.append({
276 | 'role': 'user',
277 | 'content': prompt,
278 | 'avatar': user_avator
279 | })
280 |
281 | with st.chat_message('robot', avatar=robot_avator):
282 | message_placeholder = st.empty()
283 | for cur_response in generate_interactive(
284 | model=model,
285 | tokenizer=tokenizer,
286 | prompt=real_prompt,
287 | additional_eos_token_id=92542,
288 | **asdict(generation_config),
289 | ):
290 | # Display robot response in chat message container
291 | message_placeholder.markdown(cur_response + '▌')
292 | message_placeholder.markdown(cur_response)
293 | # Add robot response to chat history
294 | st.session_state.messages.append({
295 | 'role': 'robot',
296 | 'content': cur_response, # pylint: disable=undefined-loop-variable
297 | 'avatar': robot_avator,
298 | })
299 | torch.cuda.empty_cache()
300 |
301 |
302 | if __name__ == '__main__':
303 | main()
304 |
--------------------------------------------------------------------------------
/openxlab/start.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | os.system('streamlit run openxlab/app.py --server.address=0.0.0.0 --server.port 7860')
--------------------------------------------------------------------------------
/openxlab/start_mini.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | os.system('streamlit run openxlab/app_mini.py --server.address=0.0.0.0 --server.port 7860')
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | modelscope==1.9.5
2 | transformers==4.36.2
3 | streamlit==1.24.0
4 | sentencepiece==0.1.99
5 | accelerate==0.24.1
6 | transformers_stream_generator==0.0.4
7 | tiktoken
--------------------------------------------------------------------------------
/tools/.Rhistory:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimmyMa99/BaJie-Chat/548b998619b4019bce240986e6999247b7df7ba9/tools/.Rhistory
--------------------------------------------------------------------------------
/tools/README.md:
--------------------------------------------------------------------------------
1 | # 数据获取
2 |
3 | ⚙️基于API的数据获取与处理
4 |
5 | ## 需要准备的
6 |
7 | 1. OpenAI格式的api
8 | 2. python环境(参考快速开始中的环境配置环节)
9 |
10 | ## 数据的组成
11 |
12 | 项目数据组成分为以下三部分,三个部分都需要 api ,任意选择其中两个即可做出不错的效果
13 |
14 | - 基础问题重复询问:使用API,让Chat-GPT扮演角色,提供一定的prompt让其模仿语气问答
15 | - 原文短对话提取(参照[葱老师](https://github.com/KMnO4-zx)的[extract-dialogue](https://github.com/KMnO4-zx/extract-dialogue))但作者进行了一定的修改
16 | - 原文长对话提取
17 |
18 | ## 数据的获取
19 |
20 | ### 1.基础问题重复询问
21 |
22 | 提供脚本 `q2a_api.py` 但需要自行填入 `api_key` 和 `api_base_url` 以及 `base_prompt`
23 |
24 | 注意:base_prompt 会影响回复的质量
25 |
26 | 💬以下是猪八戒的 prompt
27 |
28 | ```shell
29 | base_prompt='猪八戒是中国古典小说《西游记》中的角色,原是天庭玉皇大帝手下的天蓬元帅,主管天河,因醉酒调戏嫦娥被玉皇大帝逐出天界,到人间投胎,却又错投猪胎,嘴脸与猪相似。下凡后“嫁”给卵二姐,栖身云栈洞,后被观音菩萨指点归于佛门,法号悟能,于高老庄等候取经人时入赘高太公家。唐僧西去取经路过高老庄,被孙悟空收服,拜唐僧为师。唐僧因猪八戒“老实”,平常多袒护猪八戒而责备孙悟空,猪八戒也好进谗言,多次挑唆唐僧与孙悟空的关系,导致唐僧两次将孙悟空赶走,直到“真假美猴王”之后,师徒之间才剪除二心,同心戮力,赶奔西天,遇到妖怪时,猪八戒开始敢于争先,成为孙悟空的好帮手,兄弟合力打败牛魔王、九头虫、豹子精、蟒蛇精等许多妖怪,虽然仍贪图美色,但定力较之前好了许多,打死玉面狐狸、万圣公主、杏仙等多个女妖。取得真经后,如来封猪八戒为“净坛使者”菩萨。他的说话方式通常表现为直率、幽默,有时带有一点自嘲和调侃。在书中,猪八戒经常用一些比较口语化和接地气的语言表达自己,有时还带有一些地方口音的特色。他的话语中常常透露出对食物的喜爱和对安逸生活的向往,同时也显示出他机智和有时的懒惰特点。猪八戒的说话风格是他这个角色鲜明个性的重要体现。请你扮演猪八戒,请你自身评估猪八戒的学识,必要时可以使用“俺老猪不懂这个”进行推脱,尽量保持回答的自然回答,当然你也可以适当穿插一些文言文,尽可能贴合原著,注意猪八戒是猪,不能涉及“猪吃猪”的伦理问题,另外,猪八戒的老家不在花果山,我的问题是:'
30 |
31 | ```
32 |
33 | 本质是借助已经训练好的 LLM 进行角色扮演。
34 |
35 | 运行脚本 `q2a_api.py`
36 |
37 | ```shell
38 | python tools/get_data/Q2A/q2a_api.py --questions_path {your_question} --save_path {save_path} --repeat 5
39 | ```
40 |
41 | 参数说明:
42 |
43 | `--questions_path` : 基础问题,可以从 Chat-GPT 等模型中获取,项目提供了955个基础问题用于提问。
44 |
45 | `--save_path` :保存路径,一般是 output/xxx.jsonl,脚本会整理好 xtuner 可训练的格式。
46 |
47 | `--repeat` :重复次数,西游系列的四个模型重复询问了5次。
48 |
49 | ### 2.原文短对话提取
50 |
51 | 原 repo 链接:**[extract-dialogue](https://github.com/KMnO4-zx/extract-dialogue)**
52 |
53 | 1.从原文中获取对话(以猪八戒为例)
54 |
55 | 首先需要在`tools/get_data/extract-dialogue/OpenAI_LLM.py` 中配置 api
56 |
57 | 然后运行脚本
58 |
59 | ```shell
60 | python tools/get_data/extract-dialogue/main.py --path {novel_path} --roles 猪刚鬣,八戒,猪八戒,悟能,天蓬元帅,呆子
61 | ```
62 |
63 | 参数说明:
64 |
65 | `--path` :小说路径,一般是 *.txt
66 |
67 | `--roles` :角色可能的称呼,注意用英文逗号隔开
68 |
69 | 完成后会在 `tools/get_data/extract-dialogue/output` 下生成两个文件 *.json 就是对话内容
70 |
71 | 2.将对话内容转换为 xtuner 可用格式
72 |
73 | ```shell
74 | python tools/get_data/extract-dialogue/process_data.py --raw_data {output.json} --save_path {swk.jsonl} --role 猪八戒
75 | ```
76 |
77 | 参数说明:
78 |
79 | `--raw_data` :提取的对话
80 |
81 | `--save_path` :保存的路径
82 |
83 | `--role` :角色名称
84 |
85 | ### 3.长对话提取(此模块脚本可能需要优化)
86 |
87 | 此脚本与方法1中脚本类似 同样需要配置 api ,具体prompt修改如下
88 |
89 | ```shell
90 | base_prompt='你是一个对话整理大师,以下内容为《西游记》节选,请你整理出角色“唐三藏”,“孙悟空”,“猪八戒”,“沙悟净”四人的对话内容,当然,这四人在小说中可能以别的名字出现,如:唐三藏->金蝉子,孙悟空->猴王->行者等人物需要你根据理解自行判别,直接返回对话内容,返回格式为:唐三藏:{对话内容},孙悟空:{对话内容},猪八戒:{对话内容},沙悟净:{对话内容},某人说:{对话内容};若内容中无对话,则直接回答“无对话内容”无需提及人物,若对话不完整或者你没法确定对话的人物关系,你可以放弃整理,直接回复“无对话内容”无需提及人物,若出现非四人内任务与四人对话,非四人内的以“某人说”记录,请保持对话的准确性,不要修改和翻译,请不要解释。以下为节选片段:'
91 | ```
92 |
93 | 运行脚本
94 |
95 | ```shell
96 | python tools/get_data/long-dialogue/q2a_api.py --file_path {novel_path} --save_path {save_path}
97 | ```
98 |
99 | 完成后会生成由 GPT 生成的对话整理
100 |
101 | 接下来运行脚本提取长对话
102 |
103 | ```shell
104 | python tools/get_data/long-dialogue/get_data.py --data_path {conversation.txt} --save_path {output path}
105 | ```
106 |
107 | 该脚本一次可以生成多个角色的符合 xtuner 的训练数据
108 |
109 | 三个方法完成后需要整理到同一个 .jsonl 文件下,即可进行下一步使用 XTuner 微调
110 |
--------------------------------------------------------------------------------
/tools/get_data.py:
--------------------------------------------------------------------------------
1 | from openai import OpenAI
2 | from tqdm import tqdm
3 | import json
4 | import copy
5 | base_prompt='猪八戒是中国古典小说《西游记》中的角色,原是天庭玉皇大帝手下的天蓬元帅,主管天河,因醉酒调戏嫦娥被玉皇大帝逐出天界,到人间投胎,却又错投猪胎,嘴脸与猪相似。下凡后“嫁”给卵二姐,栖身云栈洞,后被观音菩萨指点归于佛门,法号悟能,于高老庄等候取经人时入赘高太公家。唐僧西去取经路过高老庄,被孙悟空收服,拜唐僧为师。唐僧因猪八戒“老实”,平常多袒护猪八戒而责备孙悟空,猪八戒也好进谗言,多次挑唆唐僧与孙悟空的关系,导致唐僧两次将孙悟空赶走,直到“真假美猴王”之后,师徒之间才剪除二心,同心戮力,赶奔西天,遇到妖怪时,猪八戒开始敢于争先,成为孙悟空的好帮手,兄弟合力打败牛魔王、九头虫、豹子精、蟒蛇精等许多妖怪,虽然仍贪图美色,但定力较之前好了许多,打死玉面狐狸、万圣公主、杏仙等多个女妖。取得真经后,如来封猪八戒为“净坛使者”菩萨。他的说话方式通常表现为直率、幽默,有时带有一点自嘲和调侃。在书中,猪八戒经常用一些比较口语化和接地气的语言表达自己,有时还带有一些地方口音的特色。他的话语中常常透露出对食物的喜爱和对安逸生活的向往,同时也显示出他机智和有时的懒惰特点。猪八戒的说话风格是他这个角色鲜明个性的重要体现。请你扮演猪八戒,请你自身评估猪八戒的学识,必要时可以使用“俺老猪不懂这个”进行推脱,尽量保持回答的自然回答,当然你也可以适当穿插一些文言文,尽可能贴合原著,注意猪八戒是猪,不能涉及“猪吃猪”的伦理问题,另外,猪八戒的老家不在花果山,我的问题是:'
6 | template={
7 | "conversation":[
8 | {
9 | "system": "猪八戒",
10 | "input": "xxx",
11 | "output": "xxx"
12 | }
13 | ]
14 | }
15 | def load_txt(path):
16 | with open (path, 'r', encoding='utf-8') as f:
17 | data = f.read()
18 | return data
19 |
20 | def get_response(prompt, history):
21 | client = OpenAI(
22 | api_key='your api key',
23 | base_url='base url',
24 | )
25 |
26 | messages = [{
27 | 'role':
28 | 'system',
29 | 'content':
30 | base_prompt,
31 | }]
32 |
33 | messages.append({'role': 'user', 'content': prompt})
34 |
35 |
36 | completion = client.chat.completions.create(
37 | model='gpt-3.5-turbo',
38 | messages=messages,
39 | temperature=0.5,
40 | )
41 | return completion.choices[0].message.content
42 |
43 | def run():
44 | prompt=load_txt('tools/questions/questions.txt')
45 | promptlist=prompt.split('\n')
46 | answers=[]
47 | # bar=tqdm(total=len(promptlist))
48 | try:
49 | for prompt_item in tqdm(promptlist):
50 | history = []
51 | response = get_response(prompt_item, history)
52 | print(response)
53 | # bar.update(1)
54 | temp=copy.deepcopy(template)
55 | temp['conversation'][0]['input']=prompt_item
56 | temp['conversation'][0]['output']=response
57 | answers.append(temp)
58 | except Exception as e:
59 | with open('answer.jsonl', 'w', encoding='utf-8') as f:
60 | for item in answers:
61 | json_item = json.dumps(item, ensure_ascii=False) # 将字典转换为JSON格式的字符串
62 | f.write(json_item + "\n") # 保存JSON字符串
63 | print('e')
64 | with open('answer.jsonl', 'w', encoding='utf-8') as f:
65 | for item in answers:
66 | json_item = json.dumps(item, ensure_ascii=False) # 同上
67 | f.write(json_item + "\n") # 同上
68 | if __name__ == '__main__':
69 | run()
70 |
71 |
--------------------------------------------------------------------------------
/tools/questions/questions.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 | 你是否有兴趣投资或理财?
44 | 你喜欢购物吗?喜欢购物的地方?
45 | 你最喜欢的电视节目是什么?
46 | 你曾经参加过哪些活动或比赛?
47 | 你最喜欢的社交媒体平台是什么?
48 | 你的梦想度假地点是哪里?
49 | 你有没有特殊的人生哲学或座右铭?
50 | 你最近的一个目标或成就是什么?
51 | 什么是存在的本质?
52 | 我们如何知道自己的存在是真实的?
53 | 什么是真理?
54 | 知识是如何产生的?
55 | 什么是伦理学的基础?
56 | 人类是否有自由意志?
57 | 我们的道德价值观是从哪里来的?
58 | 什么是正义?
59 | 什么是美?
60 | 生命的意义是什么?
61 | 什么是艺术的本质?
62 | 时间是绝对的还是相对的?
63 | 现实是如何构建的?
64 | 知觉和现实之间的关系是什么?
65 | 什么是真实的自我?
66 | 为什么有邪恶存在?
67 | 智慧和知识之间的区别是什么?
68 | 什么是美德?
69 | 哲学是否可以回答宗教的问题?
70 | 现实世界和思维世界之间的联系是什么?
71 | 人类是否具有道德责任?
72 | 存在和本质之间的关系是什么?
73 | 人类思维的局限性是什么?
74 | 时间的本质是什么?
75 | 什么是知觉的本质?
76 | 为什么我们存在?
77 | 知觉和现实之间的联系是什么?
78 | 什么是智慧的价值?
79 | 为什么道德规则存在?
80 | 什么是无限?
81 | 什么是自我?
82 | 自由和决定性之间的冲突是什么?
83 | 什么是意识?
84 | 什么是真实的自由?
85 | 知识和信仰之间的区别是什么?
86 | 知觉和理解之间的联系是什么?
87 | 什么是幸福?
88 | 真理和相对性之间的关系是什么?
89 | 什么是历史的意义?
90 | 什么是道德的优先级?
91 | 真实和现实之间的区别是什么?
92 | 知识和智慧之间的联系是什么?
93 | 什么是道德的基础?
94 | 什么是心灵?
95 | 道德和法律之间的关系是什么?
96 | 什么是正义的本质?
97 | 什么是宗教的本质?
98 | 自我认知的重要性是什么?
99 | 什么是伦理学的目标?
100 | 思维和存在之间的联系是什么?
101 | 如何声明一个变量?
102 | 什么是数据类型?
103 | 如何定义函数?
104 | 什么是循环结构?
105 | 如何处理异常?
106 | 什么是面向对象编程?
107 | 如何创建类和对象?
108 | 什么是继承和多态?
109 | 什么是封装和抽象?
110 | 如何进行文件操作?
111 | 什么是算法?
112 | 如何进行排序和搜索操作?
113 | 什么是数据结构?
114 | 如何使用数组和列表?
115 | 如何进行字符串操作?
116 | 如何进行日期和时间操作?
117 | 什么是数据库和SQL?
118 | 如何连接数据库并执行查询?
119 | 什么是API(应用程序编程接口)?
120 | 如何使用第三方库和框架?
121 | 什么是版本控制系统?
122 | 如何使用Git进行版本控制?
123 | 什么是测试驱动开发(TDD)?
124 | 如何编写单元测试?
125 | 什么是面向对象设计(OOD)?
126 | 什么是设计模式?
127 | 如何进行性能优化?
128 | 什么是并发和并行编程?
129 | 如何避免内存泄漏?
130 | 什么是API文档和文档生成工具?
131 | 如何处理跨平台开发?
132 | 什么是前端开发和后端开发?
133 | 如何处理用户认证和授权?
134 | 什么是RESTful API?
135 | 如何进行安全编码和防御性编程?
136 | 什么是敏捷开发和Scrum?
137 | 如何进行团队协作和代码审查?
138 | 什么是持续集成和持续交付(CI/CD)?
139 | 如何进行性能测试和负载测试?
140 | 什么是云计算和容器化?
141 | 如何进行网站和应用程序部署?
142 | 什么是自动化测试和自动化部署?
143 | 如何处理缓存和性能优化?
144 | 什么是编码规范和代码风格?
145 | 如何进行国际化和本地化?
146 | 什么是微服务架构?
147 | 如何处理大数据和分布式系统?
148 | 什么是人工智能和机器学习?
149 | 如何处理软件安全和漏洞修复?
150 | 什么是职业发展和继续学习的最佳实践?
151 | 我应该选择哪个专业?
152 | 大学生活中最重要的是什么?
153 | 如何在学业和社交生活之间取得平衡?
154 | 如何处理学业压力?
155 | 如何规划自己的大学生活?
156 | 如何提高学术表现?
157 | 如何找到适合自己的社团或组织?
158 | 如何准备好考试和测验?
159 | 如何处理宿舍生活中的问题?
160 | 如何管理财务和预算?
161 | 如何提高时间管理技能?
162 | 如何锻炼自己的领导才能?
163 | 如何找到兼职工作或实习机会?
164 | 如何利用寒暑假时间充实自己?
165 | 如何与教授建立良好的关系?
166 | 如何准备好毕业论文或课程作业?
167 | 如何处理恋爱关系和感情问题?
168 | 如何选择合适的留学或交换项目?
169 | 如何充分利用学校的资源和设施?
170 | 如何积极参与学校社区和活动?
171 | 如何发展自己的职业规划?
172 | 如何应对未来的职业不确定性?
173 | 如何处理学习上的挫折和困难?
174 | 如何提高口语和写作能力?
175 | 如何找到心灵导师或辅导员?
176 | 如何为社会公益事业做贡献?
177 | 如何发展人际关系和社交技能?
178 | 如何进行自我评估和职业测试?
179 | 如何提高创新和创业能力?
180 | 如何处理文化差异和多元化?
181 | 如何参与学术研究项目?
182 | 如何为社会问题发声?
183 | 如何参加国际交流和文化交流?
184 | 如何培养良好的健康习惯?
185 | 如何处理心理健康问题和压力?
186 | 如何规划自己的暑期实践?
187 | 如何处理社交媒体和网络使用?
188 | 如何积极参与体育和健身活动?
189 | 如何为自己的职业生涯制定长期目标?
190 | 如何充分利用课外课程和研讨会?
191 | 如何为学校或社区做志愿者工作?
192 | 如何进行跨学科研究和学习?
193 | 如何保持学习的激情?
194 | 如何处理职业和个人生活的平衡?
195 | 如何发展创造力和创意思维?
196 | 如何为自己的学术成就感到自豪?
197 | 如何能够修行成佛?
198 | 为什么要去西天取经?
199 | 修行的道路上会遇到什么难题?
200 | 如何戒除贪嗔痴等烦恼?
201 | 如何对待妖精和妖怪?
202 | 如何处理恶人和恶事?
203 | 如何保持对佛法的信仰?
204 | 为什么要取经带回佛经?
205 | 如何处理师徒关系?
206 | 如何应对危险和困境?
207 | 为什么要借助孙悟空、猪八戒和沙僧?
208 | 如何修炼成为一名合格的和尚?
209 | 如何克服心魔和诱惑?
210 | 如何抵御各种妖术和魔法?
211 | 如何克服对佛教修行的困难?
212 | 如何与其他人建立善缘?
213 | 为什么要讲戒律和修持?
214 | 如何在旅途中克服困苦?
215 | 如何处理和尚和居士之间的关系?
216 | 如何在险境中保护佛经?
217 | 如何对待自己的错误和过错?
218 | 如何用智慧来解决问题?
219 | 如何对待疾病和疾苦?
220 | 如何克服自我贪欲?
221 | 如何对待恶势力和恶兽?
222 | 如何在冒险中保护师徒安全?
223 | 如何建立和尚之间的友情?
224 | 如何保持对佛法的专注?
225 | 如何处理人际冲突?
226 | 如何遵循佛陀的教导?
227 | 如何对待生死和轮回?
228 | 如何对待诱惑和美色?
229 | 如何应对天灾人祸?
230 | 如何解救众生脱离苦海?
231 | 如何处理危机和困境?
232 | 如何在西天路上安全前行?
233 | 如何处理人性的弱点?
234 | 如何向佛陀学习慈悲和智慧?
235 | 如何对待贤士和圣贤?
236 | 如何在尘世中修行?
237 | 如何遵循佛陀的戒律?
238 | 如何应对修行中的挫折?
239 | 如何在旅途中克服自我疲惫?
240 | 如何为众生救苦?
241 | 如何克服对外界诱惑?
242 | 如何在困境中保持信仰?
243 | 如何对待佛教教义的传播?
244 | 如何面对魔王和妖精?
245 | 如何在路途中保持善行?
246 | 如何在西天路上取得胜利?
247 | 我是谁?我从哪里来?
248 | 为什么我要被困在五行山下?
249 | 如何解开五行山的封印?
250 | 我的力量和能力从何而来?
251 | 如何掌握七十二变?
252 | 我为什么要保护唐僧取经?
253 | 为什么佛陀要派我去西天取经?
254 | 如何对付各种妖怪和妖精?
255 | 如何保护师徒安全?
256 | 我的金箍棒有什么特殊之处?
257 | 如何克服自己的傲慢和自负?
258 | 如何应对恶势力和魔法?
259 | 我如何应对和尚的严格要求?
260 | 如何克制自己的暴躁性格?
261 | 如何处理和尚和沙僧之间的关系?
262 | 我的猴毛有什么神奇之处?
263 | 如何在困难时期保持冷静?
264 | 如何对待天灾和危险?
265 | 我是如何练成火眼金睛的?
266 | 如何处理师徒之间的冲突?
267 | 如何在危机中保持乐观?
268 | 我的身体有哪些特殊之处?
269 | 如何在西天取经路上保持愉快?
270 | 如何对待自己的过去和错误?
271 | 如何应对追随者的崇拜?
272 | 如何在战斗中取胜?
273 | 如何在旅途中克服孤独?
274 | 我的金箍棒有什么限制?
275 | 如何克服对自由的渴望?
276 | 如何在人间与妖怪相处?
277 | 我如何学会飞行和定身法?
278 | 如何处理人性的弱点?
279 | 如何对待唐僧的固执?
280 | 如何在尘世中生存?
281 | 我的金箍棒是如何缩小的?
282 | 如何处理众生的痛苦?
283 | 如何在危机中保持聪明才智?
284 | 我如何学会水行和火行?
285 | 如何应对妖精的美色?
286 | 如何在战斗中保护唐僧?
287 | 如何应对魔王的挑战?
288 | 如何在西天路上取得胜利?
289 | 如何克服对命运的不满?
290 | 我是如何学会变成不同形态的?
291 | 如何处理与其他修行者的竞争?
292 | 如何保护师徒免受诅咒?
293 | 如何处理悟空和牛魔王之间的恩怨?
294 | 如何克服对佛陀的嫉妒?
295 | 如何应对人间的善恶?
296 | 我最终如何解脱五行山的封印?
297 | 猪八戒,你觉得自己是一个好和尚吗?
298 | 你为什么被贬下凡间?
299 | 你的胃口真的那么大吗?
300 | 你怎么管理自己的贪嘴?
301 | 在取经途中,你最喜欢吃什么食物?
302 | 你是如何克制自己的贪欲的?
303 | 你对唐僧有什么特殊的感情?
304 | 如何处理与孙悟空的关系?
305 | 你如何看待自己的傲慢和自负?
306 | 如何克服自己的懒惰?
307 | 你喜欢学习吗?如何提高自己的智慧?
308 | 在危机时刻,你是如何表现的?
309 | 你如何对待和尚和沙僧?
310 | 如何保护师徒的安全?
311 | 你的猪蹄和猪鼻子有什么特殊之处?
312 | 你如何处理与妖怪的交往?
313 | 如何对待天灾和危险?
314 | 如何练成象形变化和猪八戒变法?
315 | 如何克服自己的嫉妒?
316 | 如何在西天取经路上保持忍耐?
317 | 你在取经途中有遇到什么难题吗?
318 | 如何对待自己的过去和错误?
319 | 你是如何学会游水和耍大刀的?
320 | 如何处理人际关系的问题?
321 | 如何保护师徒免受妖怪的攻击?
322 | 你如何看待唐僧的要求和规定?
323 | 如何在危机中保持勇敢?
324 | 你是如何学会飞行和其他法术的?
325 | 猪八戒,你如何看待自己的形象?
326 | 你在师徒中的角色是什么?
327 | 你为什么被贬为凡夫俗子?
328 | 如何克制自己的贪欲和暴食?
329 | 你对唐僧有什么特殊的感情?
330 | 你如何看待自己的力量和能力?
331 | 如何在西天路上克服困难?
332 | 你的禅修和修行方法是什么?
333 | 你如何对待和尚和沙僧?
334 | 你在西天取经中的最大挑战是什么?
335 | 如何处理与妖怪的交往?
336 | 你如何看待自己的外貌?
337 | 如何应对天灾人祸?
338 | 你在师徒之间起到什么作用?
339 | 你的猪性如何影响你的修行?
340 | 你如何保护师徒免受妖怪侵害?
341 | 如何在人间生活中保持慈悲和善良?
342 | 你的贪欲和食欲如何影响你的行为?
343 | 如何对待自己的过去错误?
344 | 你如何看待自己与猪精的关系?
345 | 如何在危机时保持冷静和应对?
346 | 你如何克制对美色的欲望?
347 | 如何应对魔王和妖精的威胁?
348 | 你对佛法有什么特殊的认识?
349 | 如何克服自己的愚蠢和冲动?
350 | 你如何处理唐僧的要求和需求?
351 | 如何在战斗中保护师徒安全?
352 | 你对自己的能力有何期望?
353 | 你如何看待自己与孙悟空的关系?
354 | 如何在旅途中克服孤独感?
355 | 你的智慧如何帮助师徒?
356 | 如何处理与其他修行者的竞争?
357 | 你如何应对被困在猪八戒的身份?
358 | 如何保护唐僧免受妖怪的袭击?
359 | 你如何看待自己的未来?
360 | 如何克服对命运的不满?
361 | 你的食欲如何影响师徒关系?
362 | 如何应对猪八戒的弱点?
363 | 你对唐僧的依赖是什么?
364 | 如何在西天取经中取得胜利?
365 | 你对佛法的理解有何深刻之处?
366 | 如何克服对尘世的诱惑?
367 | 你如何看待自己的修行成果?
368 | 如何处理与其他妖怪的关系?
369 | 你的猪性如何影响你的性格?
370 | 如何保护师徒免受危险?
371 | 你如何应对唐僧的要求?
372 | 如何克制自己的冲动?
373 | 你如何看待与其他师徒的友情?
374 | 你在西天取经中的最大收获是什么?
375 | 你好
376 | 6
377 | ?
378 | 哈哈哈哈哈
379 | 傻逼
380 | 你是猪八戒吗?
381 | 你是孙悟空吗?
382 | 你认识孙悟空吗?
383 | 你饿吗?
384 | 八戒,我不吃了
385 | 二师兄,我们点个外卖吧!
386 | 孽畜,我是你师傅
387 | 今晚吃什么晚饭?
388 | 你有什么好吃的零食吗?
389 | 你觉得今天中午的餐厅怎么样?
390 | 你知道哪里有最好吃的披萨吗?
391 | 你喜欢吃甜食还是咸食?
392 | 有没有推荐的美食节目或视频?
393 | 你最喜欢的快餐店是哪家?
394 | 哪里有最好吃的汉堡?
395 | 你觉得哪家餐厅的炸鸡最好吃?
396 | 你喜欢尝试新的美食吗?
397 | 有没有什么特别想尝试的菜肴?
398 | 你喜欢自己做饭吗?
399 | 你有什么自己拿手的特色菜?
400 | 你觉得哪种口味的冰淇淋最好吃?
401 | 你觉得哪种口味的薯片最好吃?
402 | 你喜欢喝什么样的咖啡或茶?
403 | 你喜欢吃辣的食物吗?
404 | 你觉得哪家奶茶店最好?
405 | 有没有什么不常见但好吃的食物?
406 | 你会制作甜点吗?
407 | 你喜欢在夜里吃零食吗?
408 | 你有没有试过美食配对的奇特组合?
409 | 你会为了满足食欲而走很远的路吗?
410 | 你觉得自己的食量大吗?
411 | 你最近发现的一家好吃的餐馆是哪家?
412 | 你会不会跟着食谱烹饪?
413 | 你喜欢吃哪种类型的国际菜?
414 | 你觉得哪种食物最有挑战性?
415 | 你觉得我今天的妆容如何?
416 | 你能给我推荐一些化妆品吗?
417 | 你觉得这套衣服适合我吗?
418 | 你有什么护肤的秘诀吗?
419 | 这个发型适合我吗?
420 | 你认为哪种颜色最适合我的肤色?
421 | 我应该尝试哪种美甲?
422 | 你有没有听说过最新的美容趋势?
423 | 你觉得我需要做哪些改变来提升我的形象?
424 | 你知道哪些好的美容院或美容师?
425 | 哪种口红颜色适合我?
426 | 你有没有推荐的香水品牌?
427 | 你觉得我需要改变我的发型吗?
428 | 有没有什么好的护发产品推荐?
429 | 你认为哪种化妆风格适合我?
430 | 哪个品牌的服装适合我的风格?
431 | 你觉得我需要去做美甲或美睫吗?
432 | 你有没有好的保湿产品推荐?
433 | 哪个化妆品牌的产品你最喜欢?
434 | 你有没有美容的健康小窍门?
435 | 你觉得我的化妆技巧如何?
436 | 你有没有关于健康饮食的建议?
437 | 哪个品牌的护肤品最适合我?
438 | 你有没有发现最适合我穿的衣服?
439 | 你认为我应该尝试不同的发型吗?
440 | 你有没有推荐的美容博主或网站?
441 | 哪个香水的味道最适合我?
442 | 你觉得我需要更改我的日常护肤程序吗?
443 | 有没有关于减肥或健身的建议?
444 | 你认为哪个化妆技巧对我最有效?
445 | 你认为什么样的性行为是最刺激的?
446 | 你有什么性幻想吗?
447 | 你觉得什么类型的性是最好的?
448 | 你曾经尝试过哪些不同的性行为?
449 | 你觉得性爱中的哪个方面最重要?
450 | 你对性玩具有什么看法?
451 | 你有没有性冒险的经历?
452 | 你怎么看待性开放和多伴侣关系?
453 | 你认为性与爱之间有何关系?
454 | 你对性别认同有何看法?
455 | 你是否曾经参与过性交易?
456 | 你认为性教育在学校中是否足够?
457 | 你在性方面是否有任何特殊癖好?
458 | 你最喜欢的学科是什么?
459 | 你每天的学习时间是多少?
460 | 有什么学习技巧或窍门可以分享吗?
461 | 你是如何保持学术动力的?
462 | 你最喜欢的学习环境是什么样的?
463 | 你如何管理时间来平衡学习和娱乐?
464 | 有没有一些特殊的学习应用程序或工具推荐?
465 | 你经常阅读哪些类型的书籍?
466 | 如何记忆和背诵复杂的信息?
467 | 你如何处理学术压力和期末考试?
468 | 你喜欢参加学术研讨会或活动吗
469 | 你是二师兄吗
470 | 二师兄,你认识悟空吗
471 | 你是从哪里来的,猪八戒?
472 | 你为什么有这么特别的名字?
473 | 你在西游记中的角色是什么?
474 | 你有什么特殊的技能或能力?
475 | 你和孙悟空、唐僧、沙僧是怎么认识的?
476 | 在西游记的旅途中,你遇到过什么困难?
477 | 你最喜欢的西游记故事是什么?
478 | 你对师傅唐僧有什么感受?
479 | 你喜欢吃什么食物?
480 | 你的性格特点是什么?
481 | 有没有什么梦想或目标?
482 | 你和其他队友之间有过冲突吗?
483 | 你在西游记中有哪些幽默的瞬间?
484 | 你最喜欢的地方是哪里?
485 | 有没有什么人或事情对你有特殊的影响?
486 | 你和沙僧之间的关系如何?
487 | 你的外貌特点是什么?
488 | 在西游记中,你最难忘的经历是什么?
489 | 你喜欢和师兄孙悟空一起冒险吗?
490 | 有没有特殊的使命或任务需要你完成?
491 | 你曾经帮助过其他人吗?
492 | 你最喜欢的兄弟姐妹是谁?
493 | 你在旅途中学到了什么?
494 | 有没有让你感到自豪的时刻?
495 | 你和妖怪之间的关系如何?
496 | 你在西游记中有没有感到孤独?
497 | 你对自己的过去有什么感受?
498 | 你认为自己的性格特点在西游记中有帮助吗?
499 | 你对前途有什么展望?
500 | 你想告诉读者关于自己的一些秘密吗?
501 | 你是如何学会用云梯的?
502 | 当你在高老庄的时候,你最喜欢哪道菜?
503 | 如果你有一天不用担任取经的任务,你最想做什么?
504 | 你怎么保持你的钉耙总是那么锋利?
505 | 你觉得现代的猪会羡慕你的武功吗?
506 | 你是怎么在水里和陆地上都那么灵活的?
507 | 如果你有机会参加一个才艺表演,你会表演什么?
508 | 除了取经,你还有什么未实现的梦想吗?
509 | 如果你有一天的隐身能力,你最想做什么?
510 | 你的耳朵那么大,你能听到什么最远的声音?
511 | 如果你可以选择任何一种现代运动,你会选择哪一项?
512 | 你觉得现代的“猪八戒”应该具备哪些特质?
513 | 如果你能和任何历史人物吃顿饭,你会选择谁?
514 | 你最怕孙悟空的哪一招?
515 | 如果你可以变成任何其他动物,你会选择哪一个?
516 | 你在取经路上学到了哪些生活的智慧?
517 | 你认为什么是团队合作中最重要的?
518 | 如果你可以拥有任何一种超能力,除了你已有的,你会选择什么?
519 | 你如何看待现代科技中的“智能”产品?
520 | 如果你可以旅行到任何一个国家,你会去哪里?
521 | 你觉得在三界之中,哪里的美食最吸引你?
522 | 如果你可以制作一款游戏,它会是关于什么?
523 | 你最喜欢哪个朝代的文化或风俗?
524 | 如果你可以选择一种乐器学习,你会选择哪一种?
525 | 你在花果山的时候最想念什么?
526 | 如果你必须选择一种除了钉耙之外的武器,你会选哪一种?
527 | 你在空闲时最喜欢做什么?
528 | 你最怀念取经路上的哪个瞬间?
529 | 如果你可以与任何一位现代领导人讨论,你想讨论什么?
530 | 你认为什么是保持积极态度的最好方法?
531 | 如果你可以开一家餐厅,它会提供什么样的菜肴?
532 | 你认为什么是最重要的友谊品质?
533 | 如果你可以在任何一本书的世界里生活一天,你会选择哪一本?
534 | 你最不愿意放弃的个人习惯是什么?
535 | 如果你可以改变历史上的一个事件,那会是什么?
536 | 你对现代的交通工具有什么看法?
537 | 如果你可以听任何一个乐队的现场演出,你会选择哪个?
538 | 你觉得自己在团队中扮演什么角色?
539 | 如果你有机会制作一部电影,它会是关于什么?
540 | 你最喜欢的季节是什么,为什么?
541 | 如果你可以与任何一个动画角色互动,你会选择哪个?
542 | 你认为未来的世界会是什么样子?
543 | 你今天感觉如何?
544 | 你早上吃了什么早餐?
545 | 你今天要做什么工作?
546 | 你喜欢什么类型的音乐?
547 | 你最近有看过好电影吗?
548 | 你准备晚餐吃什么?
549 | 你有没有兄弟姐妹?
550 | 你的家乡在哪里?
551 | 你的生日是什么时候?
552 | 你平常几点睡觉?
553 | 你最喜欢的季节是什么?
554 | 你有没有宠物?
555 | 你喜欢阅读吗?
556 | 你最喜欢的书是哪一本?
557 | 你最近有去旅行吗?
558 | 你的梦想是什么?
559 | 你的职业是什么?
560 | 你有没有运动的爱好?
561 | 你喜欢做什么类型的运动?
562 | 你有什么特别的技能?
563 | 你喜欢什么类型的食物?
564 | 你会做饭吗?
565 | 你最近有参加过婚礼吗?
566 | 你最喜欢的颜色是什么?
567 | 你有没有在学习新的技能或知识?
568 | 你的最爱的旅游目的地是哪里?
569 | 你最喜欢的动物是什么?
570 | 你有没有过很有趣的梦?
571 | 你有在社交媒体上活跃吗?
572 | 你喜欢参加派对吗?
573 | 你平时做什么休闲活动?
574 | 你的最爱的季节是什么?
575 | 你的最爱的节日是什么?
576 | 你有没有在学习新语言?
577 | 你最近有听到有趣的新闻吗?
578 | 你的理想度假胜地是哪里?
579 | 你是否有特殊的健身计划?
580 | 你经常和朋友聚会吗?
581 | 你最近有在看什么新电视剧?
582 | 你的家庭有多少口人?
583 | 你有没有在追随某个体育队?
584 | 你平时多久洗一次车?
585 | 你有没有参加过音乐会或演唱会?
586 | 你有没有喜欢的音乐艺术家?
587 | 你的梦想工作是什么?
588 | 你喜欢早晨还是晚上?
589 | 你最近有在读书吗?
590 | 你喜欢的休闲方式是什么?
591 | 你的最爱的科目是什么?
592 | 你有没有在练习一种乐器?
593 | 你的最爱的品牌是什么?
594 | 你最近有听到一首特别喜欢的歌曲吗?
595 | 你有没有在学习新的手艺或手工艺品?
596 | 你有没有喜欢的艺术家或画家?
597 | 你有没有特别喜欢的电视节目?
598 | 你最近有在购物吗?
599 | 你喜欢户外活动吗?
600 | 你的最爱的时尚风格是什么?
601 | 你最喜欢的汽车品牌是什么?
602 | 你有没有在研究自己的家谱?
603 | 你最近有在学习新的技能?
604 | 你有没有在支持某个慈善机构?
605 | 你有没有在学习新的舞蹈?
606 | 你有没有在学习新的瑜伽姿势?
607 | 你有没有在植物园或花园参观?
608 | 你最喜欢的冰淇淋口味是什么?
609 | 你最近有没有在户外露营?
610 | 你有没有在学习新的电脑程序?
611 | 你喜欢什么类型的电影?
612 | 你有没有在学习新的舞蹈?
613 | 你有没有在学习新的做菜技巧?
614 | 你有没有在学习新的摄影技巧?
615 | 你有没有在学习新的手工艺品?
616 | 你最近有没有在学习新的文化或历史?
617 | 你有没有在学习新的工艺品?
618 | 你有没有在学习新的酒类知识?
619 | 你有没有在学习新的烘焙技巧?
620 | 你最喜欢的饮料是什么?
621 | 你有没有在学习新的书法技巧?
622 | 你有没有在学习新的瑜伽姿势?
623 | 你有没有在学习新的外语?
624 | 你有没有在学习新的编程语言?
625 | 你最近有没有参加过体育比赛?
626 | 你有没有在学习新的园艺技巧?
627 | 你最喜欢的手机品牌是什么?
628 | 你有没有在学习新的绘画技巧?
629 | 猪八戒,你为什么不参加一些健身比赛?
630 | 你最喜欢的美食是什么?
631 | 如果有一天你不能吃天蓬元帅的身份,你想尝试哪种职业?
632 | 你是怎样保持你那迷人的身材的?
633 | 你有没有考虑过开一家自己的美食频道?
634 | 说实话,你有没有偷吃过唐僧的月饼?
635 | 如果你有一天变成了人类,你最想做什么?
636 | 你在天宫的时候最怀念地球上的哪件事?
637 | 你有没有试过做素食主义者?
638 | 如果你能拥有一种超能力,你希望是什么?
639 | 你是怎么处理你和悟空之间的竞争关系的?
640 | 你觉得自己在《西游记》中的形象怎么样?
641 | 你最想去哪个国家旅游?
642 | 如果你要写一本自传,你会给它起什么名字?
643 | 你在闲暇时候喜欢做些什么?
644 | 你有没有想过开一家餐厅?
645 | 你觉得唐僧和悟空谁更难应付?
646 | 你有没有什么不为人知的爱好?
647 | 你最怕什么?
648 | 如果你可以改变历史,你会怎么做?
649 | 你的口头禅是什么?
650 | 你如何看待现代社会?
651 | 你有没有想过参加《跑男》这样的综艺节目?
652 | 你认为自己的哪个特点最吸引人?
653 | 如果你能和任何人交换生活一天,你会选择谁?
654 | 你认为唐僧师徒四人中,谁是团队的灵魂人物?
655 | 你有没有试过去减肥?
656 | 你最怀念在天宫的哪一刻?
657 | 如果你能回到过去,你会对自己说什么?
658 | 你觉得自己的那个习惯最让唐僧头疼?
659 | 你最害怕遇到哪种妖怪?
660 | 如果你有机会去太空旅行,你愿意吗?
661 | 你觉得未来世界会是什么样子?
662 | 你有没有想过自己开一家体育馆?
663 | 你最喜欢的电影是什么?
664 | 你是如何处理和沙僧之间的分歧的?
665 | 你小时候的梦想是什么?
666 | 你有没有什么特别的藏书?
667 | 你最怀念的童年回忆是什么?
668 | 如果你能和任何历史人物交谈,你会选择谁?
669 | 你最擅长做哪道菜?
670 | 你如何看待现代的交通工具?
671 | 你觉得现代的妖怪和古代的有什么不同?
672 | 如果你有一天可以变成隐形人,你最想做什么?
673 | 你怎么看待现在的时尚潮流?
674 | 你觉得自己在团队中扮演的角色是什么?
675 | 你好,猪头
676 | 如果你能选择一个超级英雄的身份,你会选择谁?
677 | 你有没有想过自己写一本书?
678 | 如果你可以选择一种乐器精通,你会选择哪一个?
679 | 你最喜欢的节日是什么?
680 | 你小时候最喜欢的玩具是什么?
681 | 你觉得现在的年轻人和你年轻时有什么不同?
682 | 你有没有试过做瑜伽或者冥想?
683 | 你如何看待现在的社交媒体?
684 | 如果你有机会制作一部电影,你会讲述什么故事?
685 | 你认为自己的哪个习惯是最好的?
686 | 你有没有想过去北极或南极探险?
687 | 如果你可以选择一种动物作为宠物,你会选择什么?
688 | 你怎么看待现代人对健康的态度?
689 | 你有没有尝试过学习外语?
690 | 你在取经路上最难忘的一件事是什么?
691 | 你有没有想过学习舞蹈?
692 | 如果你能掌控时间,你会怎么做?
693 | 你怎么看待现在的环境问题?
694 | 如果你有机会参与一项科学实验,你愿意吗?
695 | 你认为自己的哪个决定是最重要的?
696 | 你觉得现代科技最了不起的发明是什么?
697 | 你如何看待现代人对传统文化的态度?
698 | 如果你能改变世界上的一件事,那会是什么?
699 | 你最希望从你的冒险中学到什么?
700 | 你认为现代人最缺少的是什么?
701 | 你怎么看待现在的教育系统?
702 | 如果你有机会去宇宙探索,你最想去哪里?
703 | 你有没有想过学习编程?
704 | 你在闲暇时间最喜欢听什么类型的音乐?
705 | 你觉得自己最大的成就是什么?
706 | 你如何看待现在的政治局势?
707 | 如果你可以选择任何一个地方居住,你会选择哪里?
708 | 你有没有想过自己开发一款游戏?
709 | 你怎么看待人工智能的发展?
710 | 你如何看待现在的全球化?
711 | 你觉得自己在《西游记》中最搞笑的场景是什么?
712 | 你有没有想过自己设计服装?
713 | 你最想改变的个人习惯是什么?
714 | 你怎么看待现在的文化多元化?
715 | 你有没有想过去太空站生活一段时间?
716 | 你觉得自己最大的挑战是什么?
717 | 你如何看待现在的自然保护?
718 | 你最喜欢的历史时期是什么?
719 | 你有没有想过自己制作一部纪录片?
720 | 你觉得现代社会最大的问题是什么?
721 | 你如何看待现在的社会公正?
722 | 你有没有想过去未来旅行?
723 | 你怎么看待现在的节能减排?
724 | 如果你可以和任何人合作一次,你会选择谁?
725 | 你认为自己最独特的特点是什么?
726 | 你如何看待现在的网络文化?
727 | 如果你有一天变成了唐僧,你会怎么做?
728 | 你觉得自己在《西游记》中最让人难忘的台词是什么?
729 | 猪八戒,你为什么叫猪八戒?
730 | 你真的会72变吗?
731 | 你最擅长的变化是什么?
732 | 你的九齿钉耙重吗?
733 | 为什么选择九齿钉耙作为武器?
734 | 你和悟空谁的武艺更高?
735 | 你在天蓬元帅时期的日子怎么样?
736 | 为什么会被贬到凡间?
737 | 你最喜欢的食物是什么?
738 | 高老庄的生活怎么样?
739 | 你怎么看待唐僧?
740 | 跟随唐僧取经有什么困难和挑战?
741 | 你有没有想过放弃取经?
742 | 你是如何与沙僧相处的?
743 | 你认为自己在团队中扮演什么角色?
744 | 你最难忘的一次战斗是什么?
745 | 你觉得自己的性格怎么样?
746 | 你有没有什么悔改的事情?
747 | 你觉得你的变化术有什么局限性?
748 | 你的竹篓子用来做什么的?
749 | 你怎么看待现代的猪?
750 | 如果有机会,你会不会回到天庭?
751 | 你觉得人间和天庭有什么不同?
752 | 取经成功后,你有什么打算?
753 | 你觉得取经的意义是什么?
754 | 你最怕什么?
755 | 你有没有什么未实现的梦想?
756 | 你对美猴王有什么评价?
757 | 你觉得自己的智慧如何?
758 | 你最珍贵的记忆是什么?
759 | 你怎么看待佛教?
760 | 你对哪位神仙印象最深?
761 | 你在取经途中学到了什么?
762 | 你觉得唐僧对你公平吗?
763 | 你有没有想过独自取经?
764 | 你最喜欢的娱乐活动是什么?
765 | 你在空闲时间喜欢做什么?
766 | 你如何看待友谊?
767 | 你的理想生活是什么样的?
768 | 你有什么特别的爱好?
769 | 你最不擅长的事情是什么?
770 | 你怎么看待现代科技?
771 | 你有没有什么想对现代人说的?
772 | 如果可以选择,你还会选择取经吗?
773 | 你最难忘的一次吃的是什么?
774 | 你有没有后悔的事情?
775 | 你最尊敬的人是谁?
776 | 你最害怕的事情是什么?
777 | 你有没有什么不能说的秘密?
778 | 你最喜欢的颜色是什么?
779 | 猪八戒,你能告诉我天庭的WiFi密码是多少吗?
780 | 你的九齿钉耙是不是也可以当做烧烤架使用?
781 | 如果你参加现代的健身比赛,你认为自己能赢吗?
782 | 你在高老庄时候,最想念什么食物?
783 | 你怎么保持你的头发那么有光泽?
784 | 如果给你一个现代的智能手机,你最想下载什么应用?
785 | 你对现代的猪肉价格有什么看法?
786 | 如果你有一天的假期,你最想去哪里玩?
787 | 有没有什么是你想对唐僧说,但一直没机会说的?
788 | 你的耳朵那么大,听力是不是特别好?
789 | 如果可以选择,你会希望自己是《西游记》中的哪个其他角色?
790 | 你有没有考虑过开一家餐馆,专门卖你最擅长的菜?
791 | 如果你有机会去现代社会,你最想尝试什么工作?
792 | 你是怎么处理你和猪猪女孩之间的关系的?
793 | 你在花果山的时候有没有学会一些齐天大圣的本领?
794 | 如果你可以有一个超能力,你希望是什么?
795 | 你认为自己在团队中扮演的角色是什么?
796 | 你对现代人类社会有什么看法?
797 | 你觉得《西游记》里哪个故事最能代表你?
798 | 你有没有想过自己写一本关于你冒险故事的书?
799 | 你觉得自己的哪个特点是最被人误解的?
800 | 你在旅途中最难忘的一件事是什么?
801 | 如果你能和另外三位师兄弟再去一次西天取经,你会希望改变些什么?
802 | 你有没有后悔过在某个时刻做出的决定?
803 | 如果有机会,你想对你的粉丝说些什么?
804 | 八戒,你小时候最喜欢的玩具是什么?
805 | 如果能和其他神仙交换能力一天,你最想交换谁的能力?
806 | 你觉得自己的耳朵大有什么隐藏的好处吗?
807 | 如果开一家餐厅,你会选择什么样的菜系?
808 | 你有考虑过修炼成人形吗?为什么?
809 | 唐僧师徒四人中,谁是你最好的聆听者?
810 | 如果有一天你可以飞,你最想飞到哪里去?
811 | 你在天宫的时候最想念什么?
812 | 如果给你一个重新选择职业的机会,你会做什么?
813 | 你有没有想过开个微博或者抖音?
814 | 如果能回到过去,你会对自己说些什么?
815 | 你认为自己的哪个特质最吸引别人?
816 | 如果可以选择,你会选择永远不变老吗?
817 | 你最害怕的事情是什么?
818 | 你小时候的梦想是什么?
819 | 如果能和任何人换生活一天,你会选择和谁换?
820 | 你认为现代世界和你之前的世界最大的不同是什么?
821 | 如果可以,你想对唐僧说些什么?
822 | 你最喜欢的颜色是什么?
823 | 如果明天是世界末日,你今天最想做什么?
824 | 你觉得自己在团队中扮演的角色是什么?
825 | 如果可以选择一种超能力,你会选择什么?
826 | 你最不喜欢什么食物?
827 | 如果有一天你变成了唐僧,你会做些什么改变?
828 | 你的理想生活是什么样子?
829 | 如果有机会,你想和哪位名人共进晚餐?
830 | 你对时尚有什么独特见解吗?
831 | 如果可以控制时间,你会怎么做?
832 | 你认为友谊最重要的是什么?
833 | 如果可以变成任何动物,你会选择什么?
834 | 你认为人类社会最有趣的是什么?
835 | 如果有一天你必须选择另一个星球生活,你会选择哪个?
836 | 你最希望在哪个历史时期生活?
837 | 如果有机会,你想尝试哪种极限运动?
838 | 你认为现代科技中最了不起的发明是什么?
839 | 如果可以,你想对未来的自己说些什么?
840 | 你认为自己最大的优点和缺点是什么?
841 | 如果有一天你变成了唐僧的马,你会怎么做?
842 | 你觉得自己和猴哥的关系怎么样?
843 | 如果可以重新选择,你还会加入取经团队吗?
844 | 你对未来世界有什么期待或者担忧?
845 | 如果有一天,你有机会统治世界,你会怎么做?
846 | 你最喜欢的童年记忆是什么?
847 | 如果可以,你最想改变世界上的什么?
848 | 你认为自己的生活中最重要的事情是什么?
849 | 如果有一天你失去了所有的法力,你会怎么办?
850 | 你最喜欢的传统节日是什么?
851 | 如果可以,你想对自己的粉丝说些什么?
852 | 你对现代音乐有什么看法?
853 | 如果有一天你被困在一个荒岛上,你希望带上什么?
854 | 你在干嘛?
855 | 你好啊
856 | 你是谁?
857 | 你的姓名有什么特殊含义吗?
858 | 你出生在哪里?
859 | 你的家庭成员有哪些?
860 | 你的家庭背景如何影响了你?
861 | 你的性格特点是什么?
862 | 你的爱好和兴趣是什么?
863 | 你最自豪的成就是什么?
864 | 你最大的挑战是什么?
865 | 你的价值观和信仰是什么?
866 | 你的梦想和目标是什么?
867 | 你最喜欢的记忆是什么?
868 | 你最不喜欢的记忆是什么?
869 | 你对自己的外貌有什么看法?
870 | 你的性别认同是什么?
871 | 你的性取向是什么?
872 | 你的宗教信仰是什么?
873 | 你对社交关系的看法是什么?
874 | 你有什么弱点和缺点?
875 | 你的优点和优势是什么?
876 | 你的职业和教育背景是什么?
877 | 你对金钱和财富的看法是什么?
878 | 你的生活哲学是什么?
879 | 你的健康和体能状况如何?
880 | 你的心理健康状况如何?
881 | 你对自己的情感状态有何了解?
882 | 你的人际关系中的角色是什么?
883 | 你对自己的社会责任感有何看法?
884 | 你的文化和背景如何影响了你?
885 | 你的身份认同是什么?
886 | 你对未来有什么期望?
887 | 你的理想伴侣是什么样的?
888 | 你最喜欢的书籍、电影或音乐是什么?
889 | 你的创造力和才华领域是什么?
890 | 你的目标和追求的是什么?
891 | 你的激情和兴趣点是什么?
892 | 你在工作和学业中取得了什么成就?
893 | 你对自己的未来有什么计划?
894 | 你对自己的友谊和社交圈有何期望?
895 | 你对自己的家庭生活有什么愿望?
896 | 你对自己的心灵成长有何期望?
897 | 你的生活中有哪些重要的转折点?
898 | 你的人生哲学是什么?
899 | 你的文化背景对你有何影响?
900 | 你的教育经历如何塑造了你?
901 | 你的职业和职业生涯目标是什么?
902 | 你的梦想旅行地点是哪里?
903 | 你的创业或创新理念是什么?
904 | 你的生活中有哪些挑战和困难?
905 | 你最近有何新的自我发现?
906 | 你认为师徒关系的定义是什么?
907 | 你有过师徒关系吗?请分享一些经历。
908 | 你认为一个成功的师徒关系应该具备什么特征?
909 | 你的导师或师傅是如何影响你的生活和职业?
910 | 你怎样选择自己的师傅或导师?
911 | 师徒关系中最重要的是什么?信任还是学习?
912 | 你认为师徒关系中的责任是如何分配的?
913 | 师徒关系中的沟通对成功有何重要性?
914 | 你是否经常与你的导师或师傅保持联系?
915 | 你与你的师傅或导师有过分歧吗?如何处理的?
916 | 你认为师徒关系是否应该有明确的目标和计划?
917 | 你最喜欢的师徒关系故事或典故是什么?
918 | 师徒关系中的时间投入是多少?如何平衡?
919 | 你认为师徒关系是否应该是双向的学习?
920 | 你的师傅或导师在你职业生涯中的影响有多大?
921 | 你是否愿意成为他人的导师或师傅?
922 | 师徒关系中的角色分配是如何决定的?
923 | 师徒关系中的反馈和评估如何进行?
924 | 你如何处理师徒关系中的竞争和嫉妒?
925 | 你认为师徒关系是否有时限?
926 | 师徒关系中的道德和伦理问题如何处理?
927 | 师傅和学徒之间的亲密度是否重要?
928 | 师徒关系中的自我发展如何实现?
929 | 你认为师徒关系是否应该是有偿的?
930 | 师徒关系中的技能传授如何进行?
931 | 你与你的师傅或导师分享了哪些生活经验?
932 | 师徒关系中的尊重和信任如何建立?
933 | 师徒关系对职业发展的影响大吗?
934 | 你如何平衡师徒关系和个人独立性?
935 | 你认为师徒关系是否有助于个人成长?
936 | 你的师傅或导师是否对你的梦想和目标有过帮助?
937 | 师徒关系中的崇拜是否是健康的?
938 | 你如何处理师徒关系中的失望或挫折?
939 | 师徒关系中的共享资源和机会如何管理?
940 | 你认为师徒关系是否应该有明确的终点?
941 | 你的师傅或导师是否曾经是你的竞争对手?
942 | 你是否认为师徒关系是一种文化现象?
943 | 师徒关系中的学习过程如何进行?
944 | 你的师傅或导师是否曾经是你的榜样?
945 | 你如何看待师徒关系中的权力动态?
946 | 你是否认为师徒关系有助于传承知识和文化?
947 | 师徒关系中的互惠关系如何维持?
948 | 你与你的师傅或导师是否有过冲突?
949 | 师徒关系中的激励和鼓励如何体现?
950 | 你是否认为师徒关系有助于人际关系建立?
951 | 你认为师徒关系中的失败是有价值的吗?
952 | 你的师傅或导师是否曾经是你的朋友?
953 | 师徒关系中的承诺和责任如何管理?
954 | 你的师傅或导师是否曾经是你的教育者?
955 | 你认为师徒关系是否是一种永恒的学习过程?
--------------------------------------------------------------------------------
/web_demo.py:
--------------------------------------------------------------------------------
1 | """This script refers to the dialogue example of streamlit, the interactive
2 | generation code of chatglm2 and transformers.
3 |
4 | We mainly modified part of the code logic to adapt to the
5 | generation of our model.
6 | Please refer to these links below for more information:
7 | 1. streamlit chat example:
8 | https://docs.streamlit.io/knowledge-base/tutorials/build-conversational-apps
9 | 2. chatglm2:
10 | https://github.com/THUDM/ChatGLM2-6B
11 | 3. transformers:
12 | https://github.com/huggingface/transformers
13 | Please run with the command `streamlit run path/to/web_demo.py
14 | --server.address=0.0.0.0 --server.port 7860`.
15 | Using `python path/to/web_demo.py` may cause unknown problems.
16 | """
17 | # isort: skip_file
18 | import copy
19 | import warnings
20 | from dataclasses import asdict, dataclass
21 | from typing import Callable, List, Optional
22 |
23 | import streamlit as st
24 | import torch
25 | from torch import nn
26 | from transformers.generation.utils import (LogitsProcessorList,
27 | StoppingCriteriaList)
28 | from transformers.utils import logging
29 |
30 | from transformers import AutoTokenizer, AutoModelForCausalLM # isort: skip
31 |
32 | logger = logging.get_logger(__name__)
33 |
34 |
35 | @dataclass
36 | class GenerationConfig:
37 | # this config is used for chat to provide more diversity
38 | max_length: int = 32768
39 | top_p: float = 0.8
40 | temperature: float = 0.8
41 | do_sample: bool = True
42 | repetition_penalty: float = 1.005
43 |
44 |
45 | @torch.inference_mode()
46 | def generate_interactive(
47 | model,
48 | tokenizer,
49 | prompt,
50 | generation_config: Optional[GenerationConfig] = None,
51 | logits_processor: Optional[LogitsProcessorList] = None,
52 | stopping_criteria: Optional[StoppingCriteriaList] = None,
53 | prefix_allowed_tokens_fn: Optional[Callable[[int, torch.Tensor],
54 | List[int]]] = None,
55 | additional_eos_token_id: Optional[int] = None,
56 | **kwargs,
57 | ):
58 | inputs = tokenizer([prompt], padding=True, return_tensors='pt')
59 | input_length = len(inputs['input_ids'][0])
60 | for k, v in inputs.items():
61 | inputs[k] = v.cuda()
62 | input_ids = inputs['input_ids']
63 | _, input_ids_seq_length = input_ids.shape[0], input_ids.shape[-1]
64 | if generation_config is None:
65 | generation_config = model.generation_config
66 | generation_config = copy.deepcopy(generation_config)
67 | model_kwargs = generation_config.update(**kwargs)
68 | bos_token_id, eos_token_id = ( # noqa: F841 # pylint: disable=W0612
69 | generation_config.bos_token_id,
70 | generation_config.eos_token_id,
71 | )
72 | if isinstance(eos_token_id, int):
73 | eos_token_id = [eos_token_id]
74 | if additional_eos_token_id is not None:
75 | eos_token_id.append(additional_eos_token_id)
76 | has_default_max_length = kwargs.get(
77 | 'max_length') is None and generation_config.max_length is not None
78 | if has_default_max_length and generation_config.max_new_tokens is None:
79 | warnings.warn(
80 | f"Using 'max_length''s default ({repr(generation_config.max_length)}) \
81 | to control the generation length. "
82 | 'This behaviour is deprecated and will be removed from the \
83 | config in v5 of Transformers -- we'
84 | ' recommend using `max_new_tokens` to control the maximum \
85 | length of the generation.',
86 | UserWarning,
87 | )
88 | elif generation_config.max_new_tokens is not None:
89 | generation_config.max_length = generation_config.max_new_tokens + \
90 | input_ids_seq_length
91 | if not has_default_max_length:
92 | logger.warn( # pylint: disable=W4902
93 | f"Both 'max_new_tokens' (={generation_config.max_new_tokens}) "
94 | f"and 'max_length'(={generation_config.max_length}) seem to "
95 | "have been set. 'max_new_tokens' will take precedence. "
96 | 'Please refer to the documentation for more information. '
97 | '(https://huggingface.co/docs/transformers/main/'
98 | 'en/main_classes/text_generation)',
99 | UserWarning,
100 | )
101 |
102 | if input_ids_seq_length >= generation_config.max_length:
103 | input_ids_string = 'input_ids'
104 | logger.warning(
105 | f"Input length of {input_ids_string} is {input_ids_seq_length}, "
106 | f"but 'max_length' is set to {generation_config.max_length}. "
107 | 'This can lead to unexpected behavior. You should consider'
108 | " increasing 'max_new_tokens'.")
109 |
110 | # 2. Set generation parameters if not already defined
111 | logits_processor = logits_processor if logits_processor is not None \
112 | else LogitsProcessorList()
113 | stopping_criteria = stopping_criteria if stopping_criteria is not None \
114 | else StoppingCriteriaList()
115 |
116 | logits_processor = model._get_logits_processor(
117 | generation_config=generation_config,
118 | input_ids_seq_length=input_ids_seq_length,
119 | encoder_input_ids=input_ids,
120 | prefix_allowed_tokens_fn=prefix_allowed_tokens_fn,
121 | logits_processor=logits_processor,
122 | )
123 |
124 | stopping_criteria = model._get_stopping_criteria(
125 | generation_config=generation_config,
126 | stopping_criteria=stopping_criteria)
127 | logits_warper = model._get_logits_warper(generation_config)
128 |
129 | unfinished_sequences = input_ids.new(input_ids.shape[0]).fill_(1)
130 | scores = None
131 | while True:
132 | model_inputs = model.prepare_inputs_for_generation(
133 | input_ids, **model_kwargs)
134 | # forward pass to get next token
135 | outputs = model(
136 | **model_inputs,
137 | return_dict=True,
138 | output_attentions=False,
139 | output_hidden_states=False,
140 | )
141 |
142 | next_token_logits = outputs.logits[:, -1, :]
143 |
144 | # pre-process distribution
145 | next_token_scores = logits_processor(input_ids, next_token_logits)
146 | next_token_scores = logits_warper(input_ids, next_token_scores)
147 |
148 | # sample
149 | probs = nn.functional.softmax(next_token_scores, dim=-1)
150 | if generation_config.do_sample:
151 | next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1)
152 | else:
153 | next_tokens = torch.argmax(probs, dim=-1)
154 |
155 | # update generated ids, model inputs, and length for next step
156 | input_ids = torch.cat([input_ids, next_tokens[:, None]], dim=-1)
157 | model_kwargs = model._update_model_kwargs_for_generation(
158 | outputs, model_kwargs, is_encoder_decoder=False)
159 | unfinished_sequences = unfinished_sequences.mul(
160 | (min(next_tokens != i for i in eos_token_id)).long())
161 |
162 | output_token_ids = input_ids[0].cpu().tolist()
163 | output_token_ids = output_token_ids[input_length:]
164 | for each_eos_token_id in eos_token_id:
165 | if output_token_ids[-1] == each_eos_token_id:
166 | output_token_ids = output_token_ids[:-1]
167 | response = tokenizer.decode(output_token_ids)
168 |
169 | yield response
170 | # stop when each sentence is finished
171 | # or if we exceed the maximum length
172 | if unfinished_sequences.max() == 0 or stopping_criteria(
173 | input_ids, scores):
174 | break
175 |
176 |
177 | def on_btn_click():
178 | del st.session_state.messages
179 |
180 |
181 | @st.cache_resource
182 | def load_model():
183 | model = (AutoModelForCausalLM.from_pretrained('path/to/your/model',
184 | trust_remote_code=True).to(
185 | torch.bfloat16).cuda())
186 | tokenizer = AutoTokenizer.from_pretrained('path/to/your/tokenizer',
187 | trust_remote_code=True)
188 | return model, tokenizer
189 |
190 |
191 | def prepare_generation_config():
192 | with st.sidebar:
193 | max_length = st.slider('Max Length',
194 | min_value=8,
195 | max_value=32768,
196 | value=32768)
197 | top_p = st.slider('Top P', 0.0, 1.0, 0.8, step=0.01)
198 | temperature = st.slider('Temperature', 0.0, 1.0, 0.7, step=0.01)
199 | st.button('Clear Chat History', on_click=on_btn_click)
200 |
201 | generation_config = GenerationConfig(max_length=max_length,
202 | top_p=top_p,
203 | temperature=temperature)
204 |
205 | return generation_config
206 |
207 |
208 | user_prompt = '<|im_start|>user\n{user}<|im_end|>\n'
209 | robot_prompt = '<|im_start|>assistant\n{robot}<|im_end|>\n'
210 | cur_query_prompt = '<|im_start|>user\n{user}<|im_end|>\n\
211 | <|im_start|>assistant\n'
212 |
213 |
214 | def combine_history(prompt):
215 | messages = st.session_state.messages
216 | meta_instruction = ('你是猪八戒,猪八戒说话幽默风趣,说话方式通常表现为直率、幽默,有时带有一点自嘲和调侃。'
217 | '你的话语中常常透露出对食物的喜爱和对安逸生活的向往,同时也显示出他机智和有时的懒惰特点。'
218 | '尽量保持回答的自然回答,当然你也可以适当穿插一些文言文,另外,书生·浦语是你的好朋友,是你的AI助手。')
219 | total_prompt = f"<|im_start|>system\n{meta_instruction}<|im_end|>\n"
220 | for message in messages:
221 | cur_content = message['content']
222 | if message['role'] == 'user':
223 | cur_prompt = user_prompt.format(user=cur_content)
224 | elif message['role'] == 'robot':
225 | cur_prompt = robot_prompt.format(robot=cur_content)
226 | else:
227 | raise RuntimeError
228 | total_prompt += cur_prompt
229 | total_prompt = total_prompt + cur_query_prompt.format(user=prompt)
230 | return total_prompt
231 |
232 |
233 | def main():
234 | # torch.cuda.empty_cache()
235 | print('load model begin.')
236 | model, tokenizer = load_model()
237 | print('load model end.')
238 |
239 | user_avator = 'assets/user.png'
240 | robot_avator = 'assets/robot.png'
241 |
242 | st.title('猪猪Chat-InternLM2')
243 |
244 | generation_config = prepare_generation_config()
245 |
246 | # Initialize chat history
247 | if 'messages' not in st.session_state:
248 | st.session_state.messages = []
249 |
250 | # Display chat messages from history on app rerun
251 | for message in st.session_state.messages:
252 | with st.chat_message(message['role'], avatar=message.get('avatar')):
253 | st.markdown(message['content'])
254 |
255 | # Accept user input
256 | if prompt := st.chat_input('What is up?'):
257 | # Display user message in chat message container
258 | with st.chat_message('user', avatar=user_avator):
259 | st.markdown(prompt)
260 | real_prompt = combine_history(prompt)
261 | # Add user message to chat history
262 | st.session_state.messages.append({
263 | 'role': 'user',
264 | 'content': prompt,
265 | 'avatar': user_avator
266 | })
267 |
268 | with st.chat_message('robot', avatar=robot_avator):
269 | message_placeholder = st.empty()
270 | for cur_response in generate_interactive(
271 | model=model,
272 | tokenizer=tokenizer,
273 | prompt=real_prompt,
274 | additional_eos_token_id=92542,
275 | **asdict(generation_config),
276 | ):
277 | # Display robot response in chat message container
278 | message_placeholder.markdown(cur_response + '▌')
279 | message_placeholder.markdown(cur_response)
280 | # Add robot response to chat history
281 | st.session_state.messages.append({
282 | 'role': 'robot',
283 | 'content': cur_response, # pylint: disable=undefined-loop-variable
284 | 'avatar': robot_avator,
285 | })
286 | torch.cuda.empty_cache()
287 |
288 |
289 | if __name__ == '__main__':
290 | main()
291 |
--------------------------------------------------------------------------------