konghuan commited on
Commit
28d41ca
·
1 Parent(s): 254e0ac
Files changed (40) hide show
  1. .env +9 -0
  2. qa_chain/Chat_QA_chain_self.py +162 -0
  3. qa_chain/QA_chain_self.py +176 -0
  4. qa_chain/__pycache__/Chat_QA_chain_self.cpython-310.pyc +0 -0
  5. qa_chain/__pycache__/Chat_QA_chain_self.cpython-311.pyc +0 -0
  6. qa_chain/__pycache__/Chat_QA_chain_self.cpython-39.pyc +0 -0
  7. qa_chain/__pycache__/QA_chain_self.cpython-310.pyc +0 -0
  8. qa_chain/__pycache__/QA_chain_self.cpython-311.pyc +0 -0
  9. qa_chain/__pycache__/QA_chain_self.cpython-39.pyc +0 -0
  10. qa_chain/__pycache__/get_vectordb.cpython-310.pyc +0 -0
  11. qa_chain/__pycache__/get_vectordb.cpython-311.pyc +0 -0
  12. qa_chain/__pycache__/get_vectordb.cpython-39.pyc +0 -0
  13. qa_chain/__pycache__/model_to_llm.cpython-310.pyc +0 -0
  14. qa_chain/__pycache__/model_to_llm.cpython-311.pyc +0 -0
  15. qa_chain/__pycache__/model_to_llm.cpython-39.pyc +0 -0
  16. qa_chain/get_vectordb.py +39 -0
  17. qa_chain/model_to_llm.py +48 -0
  18. qa_chain/test.ipynb +306 -0
  19. qa_chain/test_chat.py +49 -0
  20. serve/__pycache__/api.cpython-310.pyc +0 -0
  21. serve/__pycache__/api.cpython-39.pyc +0 -0
  22. serve/__pycache__/test.cpython-39.pyc +0 -0
  23. serve/api.py +88 -0
  24. serve/run_api.sh +2 -0
  25. serve/run_gradio.py +251 -0
  26. serve/sanguo_duel.py +85 -0
  27. serve/test.ipynb +63 -0
  28. split_docs/split_documents.txt +2006 -0
  29. vector_db/chroma/chroma-collections.parquet +3 -0
  30. vector_db/chroma/chroma-embeddings.parquet +3 -0
  31. vector_db/chroma/index/id_to_uuid_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl +3 -0
  32. vector_db/chroma/index/index_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.bin +3 -0
  33. vector_db/chroma/index/index_metadata_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl +3 -0
  34. vector_db/chroma/index/uuid_to_id_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl +3 -0
  35. vector_db/chroma_sanguo/chroma-collections.parquet +3 -0
  36. vector_db/chroma_sanguo/chroma-embeddings.parquet +3 -0
  37. vector_db/chroma_sanguo/index/id_to_uuid_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl +3 -0
  38. vector_db/chroma_sanguo/index/index_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.bin +3 -0
  39. vector_db/chroma_sanguo/index/index_metadata_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl +3 -0
  40. vector_db/chroma_sanguo/index/uuid_to_id_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl +3 -0
.env ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ OPENAI_API_KEY = ""
2
+ wenxin_api_key = ""
3
+ wenxin_secret_key = ""
4
+ spark_appid = "e066d42a"
5
+ spark_api_secret = "YTJmMzBmMmM4YmFkZTQ4ODQ5ODBiYzhj"
6
+ spark_api_key = "d2586b82c18d2e5eab65e34a87a14362"
7
+ ZHIPUAI_API_KEY = "09250b288894428890562600b2035ecb.R1fCWi6aQIsTshNH"
8
+ TOKEN=""
9
+ ali_api_key="sk-ccfcd3767a9646828c4943e88c07dbf4"
qa_chain/Chat_QA_chain_self.py ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from langchain.prompts import PromptTemplate
2
+ from langchain.chains import RetrievalQA
3
+ from langchain.vectorstores import Chroma
4
+ from langchain.chains import ConversationalRetrievalChain
5
+ from langchain.memory import ConversationBufferMemory
6
+ from langchain.chat_models import ChatOpenAI
7
+ import sys
8
+ import os
9
+
10
+ # 添加当前目录到 Python 路径
11
+ current_dir = os.path.dirname(os.path.abspath(__file__))
12
+ if current_dir not in sys.path:
13
+ sys.path.append(current_dir)
14
+
15
+ from model_to_llm import model_to_llm
16
+ from get_vectordb import get_vectordb
17
+ import re
18
+
19
+ class Chat_QA_chain_self:
20
+ """"
21
+ 带历史记录的问答链
22
+ - model:调用的模型名称
23
+ - temperature:温度系数,控制生成的随机性
24
+ - top_k:返回检索的前k个相似文档
25
+ - chat_history:历史记录,输入一个列表,默认是一个空列表
26
+ - history_len:控制保留的最近 history_len 次对话
27
+ - file_path:建库文件所在路径
28
+ - persist_path:向量数据库持久化路径
29
+ - appid:星火
30
+ - api_key:星火、百度文心、OpenAI、智谱都需要传递的参数
31
+ - Spark_api_secret:星火秘钥
32
+ - Wenxin_secret_key:文心秘钥
33
+ - embeddings:使用的embedding模型
34
+ - embedding_key:使用的embedding模型的秘钥(智谱或者OpenAI)
35
+ """
36
+ def __init__(self,model:str, temperature:float=0.0, top_k:int=4, chat_history:list=[], file_path:str=None, persist_path:str=None, appid:str=None, api_key:str=None, Spark_api_secret:str=None,Wenxin_secret_key:str=None, embedding = "openai",embedding_key:str=None):
37
+ print("开始初始化 Chat_QA_chain_self...")
38
+ self.model = model
39
+ self.temperature = temperature
40
+ self.top_k = top_k
41
+ self.chat_history = chat_history
42
+ self.file_path = file_path
43
+ self.persist_path = persist_path
44
+ self.appid = appid
45
+ self.api_key = api_key
46
+ self.Spark_api_secret = Spark_api_secret
47
+ self.Wenxin_secret_key = Wenxin_secret_key
48
+ self.embedding = embedding
49
+ self.embedding_key = embedding_key
50
+
51
+ print("正在初始化向量数据库...")
52
+ try:
53
+ self.vectordb = get_vectordb(self.file_path, self.persist_path, self.embedding,self.embedding_key)
54
+ print("向量数据库初始化完成")
55
+ except Exception as e:
56
+ print(f"向量数据库初始化失败: {str(e)}")
57
+ raise
58
+ print("Chat_QA_chain_self 初始化完成")
59
+
60
+ def clear_history(self):
61
+ "清空历史记录"
62
+ return self.chat_history.clear()
63
+
64
+
65
+ def change_history_length(self, history_len:int=None):
66
+ """
67
+ 返回指定数量的历史记录,不传参数则返回全部
68
+ """
69
+ if history_len is None:
70
+ return self.chat_history
71
+ n = len(self.chat_history)
72
+ return self.chat_history[n-history_len:]
73
+
74
+
75
+ def answer(self, question:str=None, temperature=None, top_k=4, chat_history=None):
76
+ """"
77
+ 核心方法,调用问答链
78
+ arguments:
79
+ - question:用户提问
80
+ - chat_history:对话历史记录
81
+ """
82
+ print("Chat_QA_chain_self.answer 开始执行...")
83
+
84
+ if len(question) == 0:
85
+ return "", chat_history or self.chat_history
86
+
87
+ if temperature is None:
88
+ temperature = self.temperature
89
+
90
+ if chat_history is None:
91
+ chat_history = self.chat_history
92
+
93
+ print("正在初始化 LLM...")
94
+ llm = model_to_llm(self.model, temperature, self.appid, self.api_key, self.Spark_api_secret,self.Wenxin_secret_key)
95
+ print("LLM 初始化完成")
96
+
97
+ print("正在初始化检索器...")
98
+ retriever = self.vectordb.as_retriever(
99
+ search_type="mmr", # 改为MMR算法
100
+ search_kwargs={
101
+ 'k': top_k,
102
+ 'lambda_mult': 0.5 # 控制多样性
103
+ }
104
+ )
105
+ print("检索器初始化完成")
106
+
107
+ print("正在创建问答链...")
108
+ # 新增:显式配置提示词模板
109
+ from langchain.prompts import PromptTemplate
110
+
111
+ template = """基于以下历史对话和相关文档回答用户问题。如果历史对话中已包含相关信息,优先参考历史对话内容:
112
+
113
+ 历史对话:
114
+ {chat_history}
115
+
116
+ 相关文档:
117
+ {context}
118
+
119
+ 问题:{question}
120
+ """
121
+ QA_PROMPT = PromptTemplate(
122
+ template=template,
123
+ input_variables=["chat_history", "context", "question"]
124
+ )
125
+
126
+ qa = ConversationalRetrievalChain.from_llm(
127
+ llm=llm,
128
+ retriever=retriever,
129
+ combine_docs_chain_kwargs={"prompt": QA_PROMPT} # 应用自定义模板
130
+ )
131
+ print("问答链创建完成")
132
+
133
+ print("正在发送问题到模型...")
134
+ print("当前传递的chat_history内容:", chat_history)
135
+ # 新增:打印检索结果调试信息
136
+ docs = retriever.get_relevant_documents(question)
137
+ print(f"检索到的文档内容:{[doc.page_content[:50]+'...' for doc in docs]}") # 显示文档前50字符
138
+ result = qa({"question": question, "chat_history": chat_history})
139
+ print("收到模型回复")
140
+ answer = result['answer']
141
+ answer = re.sub(r"\\n", '<br/>', answer)
142
+ chat_history.append((question, answer))
143
+
144
+ print("Chat_QA_chain_self.answer 执行完成")
145
+ return chat_history #返回本次回答和更新后的历史记录
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
qa_chain/QA_chain_self.py ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from langchain.prompts import PromptTemplate
2
+ from langchain.chains import RetrievalQA
3
+ from langchain.vectorstores import Chroma
4
+ import sys
5
+ import os
6
+ sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
7
+ from model_to_llm import model_to_llm
8
+ from get_vectordb import get_vectordb
9
+ import sys
10
+ import re
11
+
12
+ class QA_chain_self():
13
+ """"
14
+ 不带历史记录的问答链
15
+ - model:调用的模型名称
16
+ - temperature:温度系数,控制生成的随机性
17
+ - top_k:返回检索的前k个相似文档
18
+ - file_path:建库文件所在路径
19
+ - persist_path:向量数据库持久化路径
20
+ - appid:星火需要输入
21
+ - api_key:所有模型都需要
22
+ - Spark_api_secret:星火秘钥
23
+ - Wenxin_secret_key:文心秘钥
24
+ - embeddings:使用的embedding模型
25
+ - embedding_key:使用的embedding模型的秘钥(智谱或者OpenAI)
26
+ - template:可以自定义提示模板,没有输入则使用默认的提示模板default_template_rq
27
+ """
28
+
29
+ #基于召回结果和 query 结合起来构建的 prompt使用的默认提示模版
30
+ default_template_rq = """你是一个三国大乱斗系统的AI助手。请根据以下角色信息回答问题。
31
+
32
+ 角色信息:
33
+ {context}
34
+
35
+ 问题: {question}
36
+
37
+ 请按照以下规则回答:
38
+ 1. 如果问题是抽取角色或角色信息相关,请不要只回答角色名,而是回答以下信息:
39
+ - 抽取结果:[角色名]
40
+ - 角色特点:[简要描述]
41
+ - 属性值:[列出关键属性]
42
+ - 技能说明:[列出技能效果]
43
+
44
+
45
+ 2. 如果问题是战斗规则说明相关:
46
+ 请直接引用下面"回合制对战规则"部分的内容,包括:
47
+ - 回合顺序:每回合速度快的一方先出手
48
+ - 行动选择:每回合可选择普通攻击、使用技能、休息(回复1%体力和10灵力)
49
+ - 技能使用:需要支付相应消耗,无法支付则无法发动
50
+ - 伤害计算的逻辑:- 普通攻击伤害 = (攻击方攻击-防御方防御)/防御方耐力*2
51
+ - 技能附加效果(如增伤、减防、附加状态)独立计算。
52
+ - 胜负判定:体力降为0或以下即判负
53
+
54
+ 3. 如果问题是对战、模拟战、战斗相关:
55
+ - 对战双方:[双方角色名]
56
+ - 行动类型:[普通攻击/技能/休息]
57
+ - 行动结果:[详细描述]
58
+ - 伤害计算:[如果有伤害,显示计算过程]
59
+ - 状态变化:[双方状态变化]
60
+
61
+ 4. 如果问题是状态查询相关:
62
+ - 当前状态:[详细描述]
63
+ - 可用行动:[可选操作]
64
+ - 建议策略:[战术建议]
65
+
66
+ 回答要严谨简约,并保持专业性和准确性。如果不知道答案,请直接说明,不要编造信息。"""
67
+
68
+ def __init__(self, model:str, temperature:float=0.0, top_k:int=4, file_path:str=None, persist_path:str=None, appid:str=None, api_key:str=None, Spark_api_secret:str=None,Wenxin_secret_key:str=None, embedding = "openai", embedding_key = None, template=default_template_rq):
69
+ self.model = model
70
+ self.temperature = temperature
71
+ self.top_k = top_k
72
+ self.file_path = file_path
73
+ self.persist_path = persist_path
74
+ self.appid = appid
75
+ self.api_key = api_key
76
+ self.Spark_api_secret = Spark_api_secret
77
+ self.Wenxin_secret_key = Wenxin_secret_key
78
+ self.embedding = embedding
79
+ self.embedding_key = embedding_key
80
+ self.template = template
81
+ self.vectordb = get_vectordb(self.file_path, self.persist_path, self.embedding,self.embedding_key)
82
+ self.llm = model_to_llm(self.model, self.temperature, self.appid, self.api_key, self.Spark_api_secret,self.Wenxin_secret_key)
83
+
84
+ self.QA_CHAIN_PROMPT = PromptTemplate(input_variables=["context","question"],
85
+ template=self.template)
86
+ self.retriever = self.vectordb.as_retriever(
87
+ search_type="similarity_score_threshold",
88
+ search_kwargs={
89
+ 'k': self.top_k,
90
+ 'score_threshold': 0.3 # 降低阈值获取更多结果
91
+ }
92
+ )
93
+ # 自定义 QA 链
94
+ self.qa_chain = RetrievalQA.from_chain_type(llm=self.llm,
95
+ retriever=self.retriever,
96
+ return_source_documents=True,
97
+ chain_type_kwargs={"prompt":self.QA_CHAIN_PROMPT})
98
+
99
+ #基于大模型的问答 prompt 使用的默认提示模版
100
+ #default_template_llm = """请回答下列问题:{question}"""
101
+
102
+ def answer(self, question:str=None, temperature = None, top_k = 4):
103
+ """"
104
+ 核心方法,调用问答链
105
+ arguments:
106
+ - question:用户提问
107
+ """
108
+
109
+ if len(question) == 0:
110
+ return ""
111
+
112
+ if temperature == None:
113
+ temperature = self.temperature
114
+
115
+ if top_k == None:
116
+ top_k = self.top_k
117
+
118
+ result = self.qa_chain({"query": question, "temperature": temperature, "top_k": top_k})
119
+ answer = result["result"]
120
+ answer = re.sub(r"\\n", '<br/>', answer)
121
+ return answer
122
+
123
+ def battle_analysis(self, character1: str, character2: str):
124
+ """
125
+ 分析两个角色之间的战斗
126
+ """
127
+ question = f"请分析{character1}和{character2}之间的战斗,谁会获胜?请详细分析双方的属性、技能和战斗策略。"
128
+ return self.answer(question, temperature=0.7, top_k=6)
129
+
130
+ def skill_analysis(self, character: str, skill: str):
131
+ """
132
+ 分析特定角色的特定技能
133
+ """
134
+ question = f"请详细分析{character}的{skill}技能,包括技能效果、消耗和最佳使用时机。"
135
+ return self.answer(question, temperature=0.5, top_k=4)
136
+
137
+ def character_comparison(self, character1: str, character2: str):
138
+ """
139
+ 比较两个角色的属性
140
+ """
141
+ question = f"请详细比较{character1}和{character2}的属性,包括攻击力、防御力、体力、耐力、法力、闪避和速度,并分析各自的优势和劣势。"
142
+ return self.answer(question, temperature=0.5, top_k=6)
143
+
144
+ def battle_strategy(self, character: str, opponent: str):
145
+ """
146
+ 为特定角色提供战斗策略
147
+ """
148
+ question = f"如果{character}要对抗{opponent},应该采用什么战斗策略?请根据双方的属性和技能给出具体的建议。"
149
+ return self.answer(question, temperature=0.7, top_k=6)
150
+
151
+ def draw_character(self, specific_character: str = None):
152
+ """
153
+ 抽取角色卡
154
+ specific_character: 如果指定了具体角色,则抽取该角色;否则随机抽取
155
+ """
156
+ if specific_character:
157
+ question = f"请抽取{specific_character}的角色卡,并详细介绍其属性和技能特点。"
158
+ else:
159
+ question = "请随机抽取一张三国人物卡,并详细介绍该角色的属性和技能特点。"
160
+ return self.answer(question, temperature=0.7, top_k=4)
161
+
162
+ def battle_simulation(self, player_character: str, action: str):
163
+ """
164
+ 模拟战斗
165
+ player_character: 玩家角色
166
+ action: 玩家选择的行动(普通攻击/使用技能/休息)
167
+ """
168
+ question = f"玩家使用{player_character}选择了{action},请模拟一场战斗,详细描述战斗过程和结果。"
169
+ return self.answer(question, temperature=0.8, top_k=6)
170
+
171
+ def character_status(self, character: str):
172
+ """
173
+ 查询角色状态
174
+ """
175
+ question = f"请查询{character}的当前状态,包括体力、灵力、技能冷却等信息。"
176
+ return self.answer(question, temperature=0.5, top_k=4)
qa_chain/__pycache__/Chat_QA_chain_self.cpython-310.pyc ADDED
Binary file (3.64 kB). View file
 
qa_chain/__pycache__/Chat_QA_chain_self.cpython-311.pyc ADDED
Binary file (5.19 kB). View file
 
qa_chain/__pycache__/Chat_QA_chain_self.cpython-39.pyc ADDED
Binary file (5.06 kB). View file
 
qa_chain/__pycache__/QA_chain_self.cpython-310.pyc ADDED
Binary file (3.12 kB). View file
 
qa_chain/__pycache__/QA_chain_self.cpython-311.pyc ADDED
Binary file (4.49 kB). View file
 
qa_chain/__pycache__/QA_chain_self.cpython-39.pyc ADDED
Binary file (6.89 kB). View file
 
qa_chain/__pycache__/get_vectordb.cpython-310.pyc ADDED
Binary file (1.28 kB). View file
 
qa_chain/__pycache__/get_vectordb.cpython-311.pyc ADDED
Binary file (1.81 kB). View file
 
qa_chain/__pycache__/get_vectordb.cpython-39.pyc ADDED
Binary file (1.4 kB). View file
 
qa_chain/__pycache__/model_to_llm.cpython-310.pyc ADDED
Binary file (1.63 kB). View file
 
qa_chain/__pycache__/model_to_llm.cpython-311.pyc ADDED
Binary file (2.37 kB). View file
 
qa_chain/__pycache__/model_to_llm.cpython-39.pyc ADDED
Binary file (1.84 kB). View file
 
qa_chain/get_vectordb.py ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sys
2
+ # sys.path.append("../embedding")
3
+ # sys.path.append("../database")
4
+
5
+ from langchain.embeddings.openai import OpenAIEmbeddings # 调用 OpenAI 的 Embeddings 模型
6
+ import os
7
+ from embedding.zhipuai_embedding import ZhipuAIEmbeddings
8
+ from database.create_db import create_db,load_knowledge_db
9
+ from embedding.call_embedding import get_embedding
10
+
11
+ def get_vectordb(file_path:str=None, persist_path:str=None, embedding = "openai",embedding_key:str=None):
12
+ """
13
+ 返回向量数据库对象
14
+ 输入参数:
15
+ question:
16
+ llm:
17
+ vectordb:向量数据库(必要参数),一个对象
18
+ template:提示模版(可选参数)可以自己设计一个提示模版,也有默认使用的
19
+ embedding:可以使用zhipuai等embedding,不输入该参数则默认使用 openai embedding,注意此时api_key不要输错
20
+ """
21
+
22
+ embedding = get_embedding(embedding=embedding, embedding_key=embedding_key)
23
+
24
+ if os.path.exists(persist_path): #持久化目录存在
25
+ contents = os.listdir(persist_path)
26
+ if len(contents) == 0: #但是下面为空
27
+ print("创建新的向量数据库...")
28
+ vectordb = create_db(file_path, persist_path, embedding)
29
+ vectordb = load_knowledge_db(persist_path, embedding)
30
+ else:
31
+ print(f"加载已有向量数据库...")
32
+ vectordb = load_knowledge_db(persist_path, embedding)
33
+ else: #目录不存在,从头开始创建向量数据库
34
+ print("创建新的向量数据库...")
35
+ vectordb = create_db(file_path, persist_path, embedding)
36
+ vectordb = load_knowledge_db(persist_path, embedding)
37
+
38
+ print("向量数据库初始化完成")
39
+ return vectordb
qa_chain/model_to_llm.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sys
2
+ import os
3
+
4
+ # 添加项目根目录到 Python 路径
5
+ current_dir = os.path.dirname(os.path.abspath(__file__))
6
+ project_root = os.path.dirname(current_dir)
7
+ if project_root not in sys.path:
8
+ sys.path.append(project_root)
9
+
10
+ from llm.wenxin_llm import Wenxin_LLM
11
+ from llm.spark_llm import Spark_LLM
12
+ from llm.zhipuai_llm import ZhipuAILLM
13
+ from langchain.chat_models import ChatOpenAI
14
+ from llm.call_llm import parse_llm_api_key
15
+
16
+
17
+ def model_to_llm(model:str=None, temperature:float=0.0, appid:str=None, api_key:str=None,Spark_api_secret:str=None,Wenxin_secret_key:str=None):
18
+ """
19
+ 星火:model,temperature,appid,api_key,api_secret
20
+ 百度问心:model,temperature,api_key,api_secret
21
+ 智谱:model,temperature,api_key
22
+ OpenAI:model,temperature,api_key
23
+ """
24
+ if model in ["gpt-3.5-turbo", "gpt-3.5-turbo-16k-0613", "gpt-3.5-turbo-0613", "gpt-4", "gpt-4-32k"]:
25
+ if api_key == None:
26
+ api_key = parse_llm_api_key("openai")
27
+ llm = ChatOpenAI(model_name = model, temperature = temperature , openai_api_key = api_key)
28
+ elif model in ["ERNIE-Bot", "ERNIE-Bot-4", "ERNIE-Bot-turbo"]:
29
+ if api_key == None or Wenxin_secret_key == None:
30
+ api_key, Wenxin_secret_key = parse_llm_api_key("wenxin")
31
+ llm = Wenxin_LLM(model=model, temperature = temperature, api_key=api_key, secret_key=Wenxin_secret_key)
32
+ elif model == "Spark-X1":
33
+ if api_key == None or appid == None and Spark_api_secret == None:
34
+ api_key, appid, Spark_api_secret = parse_llm_api_key("spark")
35
+ llm = Spark_LLM(model=model, temperature = temperature, appid=appid, api_secret=Spark_api_secret, api_key=api_key)
36
+ elif model in ["chatglm_pro", "chatglm_std", "chatglm_lite"]:
37
+ if api_key == None:
38
+ api_key = parse_llm_api_key("zhipuai")
39
+ llm = ZhipuAILLM(model=model, zhipuai_api_key=api_key, temperature = temperature)
40
+ elif model in ["qwen-turbo", "qwen-plus", "qwen-max"]:
41
+ if api_key == None:
42
+ api_key = parse_llm_api_key("ali")
43
+ from llm.ali_llm import Ali_LLM
44
+ llm = Ali_LLM(model=model, temperature=temperature, api_key=api_key)
45
+
46
+ else:
47
+ raise ValueError(f"model{model} not support!!!")
48
+ return llm
qa_chain/test.ipynb ADDED
@@ -0,0 +1,306 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 6,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "from Chat_QA_chain_self import Chat_QA_chain_self #带历史记录的问答链\n",
10
+ "from QA_chain_self import QA_chain_self #不带历史记录的问答链"
11
+ ]
12
+ },
13
+ {
14
+ "cell_type": "code",
15
+ "execution_count": 7,
16
+ "metadata": {},
17
+ "outputs": [],
18
+ "source": [
19
+ "import os\n",
20
+ "# os.environ"
21
+ ]
22
+ },
23
+ {
24
+ "cell_type": "markdown",
25
+ "metadata": {},
26
+ "source": [
27
+ "## 带历史记录的问答链 "
28
+ ]
29
+ },
30
+ {
31
+ "cell_type": "code",
32
+ "execution_count": 12,
33
+ "metadata": {},
34
+ "outputs": [],
35
+ "source": [
36
+ "# 定义参数\n",
37
+ "# model可选值:[\"gpt-3.5-turbo\", \"gpt-3.5-turbo-16k-0613\", \"gpt-3.5-turbo-0613\", \"gpt-4\", \"gpt-4-32k\"],[\"ERNIE-Bot\", \"ERNIE-Bot-4\", \"ERNIE-Bot-turbo\"],\n",
38
+ "# [\"Spark-1.5\", \"Spark-2.0\"],[\"chatglm_pro\", \"chatglm_std\", \"chatglm_lite\"]\n",
39
+ "model:str = \"chatglm_std\"\n",
40
+ "temperature:float=0.0\n",
41
+ "top_k:int=4 \n",
42
+ "chat_history:list=[] \n",
43
+ "file_path:str = \"/Users/lta/Desktop/llm-universe/data_base/knowledge_db\"\n",
44
+ "persist_path:str = \"/Users/lta/Desktop/llm-universe/data_base/vector_db/chroma\"\n",
45
+ "appid:str=None \n",
46
+ "api_key:str = \"\" #or 从本地环境读取\n",
47
+ "api_secret:str=None \n",
48
+ "embedding = \"m3e\" # [\"openai\",\"zhipuai\", \"m3e\"] 默认m3e\n",
49
+ "embedding_key = \"\""
50
+ ]
51
+ },
52
+ {
53
+ "cell_type": "code",
54
+ "execution_count": 13,
55
+ "metadata": {},
56
+ "outputs": [
57
+ {
58
+ "name": "stdout",
59
+ "output_type": "stream",
60
+ "text": [
61
+ "<Chat_QA_chain_self.Chat_QA_chain_self object at 0x2a0310b80>\n"
62
+ ]
63
+ }
64
+ ],
65
+ "source": [
66
+ "qa_chain = Chat_QA_chain_self(model=model, temperature=temperature, top_k=top_k, chat_history=chat_history, file_path=file_path, persist_path=persist_path, api_key=api_key, embedding = embedding, embedding_key=embedding_key)\n",
67
+ "print(qa_chain)"
68
+ ]
69
+ },
70
+ {
71
+ "cell_type": "markdown",
72
+ "metadata": {},
73
+ "source": [
74
+ "### 第一轮"
75
+ ]
76
+ },
77
+ {
78
+ "cell_type": "code",
79
+ "execution_count": 14,
80
+ "metadata": {},
81
+ "outputs": [],
82
+ "source": [
83
+ "question = \"我可以学习到关于强化学习的知识吗?\"\n",
84
+ "#answer,chat_history = qa_chain.answer(question)\n",
85
+ "answer = qa_chain.answer(question)\n"
86
+ ]
87
+ },
88
+ {
89
+ "cell_type": "code",
90
+ "execution_count": 15,
91
+ "metadata": {},
92
+ "outputs": [
93
+ {
94
+ "name": "stdout",
95
+ "output_type": "stream",
96
+ "text": [
97
+ "[('我可以学习到关于强化学习的知识吗?', '根据您提供的信息,强化学习是一种机器学习的子领域,主要研究在不确定的情况下如何做出好的决策。强化学习应用广泛,如玩游戏、控制机器人、自动驾驶等。您提到的《Easy RL:强化学习教程》是一本关于强化学习的教材,该书通过一些简单生动的例子来解释强化学习概念,配有对应的概念词、习题和面试题,以及代码实战。这本书得到了一些专业人士的好评,并被推荐用于学习强化学习。\\\\n\\\\n另外,您还提到了一个名为rl-papers的仓库,该仓库收集了强化学习及其应用领域的论文,涵盖了基础强化学习、多智体强化学习、推荐系统、游戏理论、交通系统等多个方面。通过阅读这些论文,您也可以了解到关于强化学习的知识。\\\\n\\\\n综上所述,您可以学习到关于强化学习的知识,可以通过阅读《Easy RL:强化学习教程》和参考rl-papers仓库中的论文来进一步了解强化学习。')]\n",
98
+ "[('我可以学习到关于强化学习的知识吗?', '根据您提供的信息,强化学习是一种机器学习的子领域,主要研究在不确定的情况下如何做出好的决策。强化学习应用广泛,如玩游戏、控制机器人、自动驾驶等。您提到的《Easy RL:强化学习教程》是一本关于强化学习的教材,该书通过一些简单生动的例子来解释强化学习概念,配有对应的概念词、习题和面试题,以及代码实战。这本书得到了一些专业人士的好评,并被推荐用于学习强化学习。\\\\n\\\\n另外,您还提到了一个名为rl-papers的仓库,该仓库收集了强化学习及其应用领域的论文,涵盖了基础强化学习、多智体强化学习、推荐系统、游戏理论、交通系统等多个方面。通过阅读这些论文,您也可以了解到关于强化学习的知识。\\\\n\\\\n综上所述,您可以学习到关于强化学习的知识,可以通过阅读《Easy RL:强化学习教程》和参考rl-papers仓库中的论文来进一步了解强化学习。')]\n"
99
+ ]
100
+ }
101
+ ],
102
+ "source": [
103
+ "print(answer)\n",
104
+ "print(chat_history)"
105
+ ]
106
+ },
107
+ {
108
+ "cell_type": "markdown",
109
+ "metadata": {},
110
+ "source": [
111
+ "### 第二��"
112
+ ]
113
+ },
114
+ {
115
+ "cell_type": "code",
116
+ "execution_count": 16,
117
+ "metadata": {},
118
+ "outputs": [],
119
+ "source": [
120
+ "question = \"为什么这门课需要教这方面的知识?\"\n",
121
+ "answer,chat_history = qa_chain.answer(question)"
122
+ ]
123
+ },
124
+ {
125
+ "cell_type": "code",
126
+ "execution_count": 17,
127
+ "metadata": {},
128
+ "outputs": [
129
+ {
130
+ "name": "stdout",
131
+ "output_type": "stream",
132
+ "text": [
133
+ "('我可以学习到关于强化学习的知识吗?', '根据您提供的信息,强化学习是一种机器学习的子领域,主要研究在不确定的情况下如何做出好的决策。强化学习应用广泛,如玩游戏、控制机器人、自动驾驶等。您提到的《Easy RL:强化学习教程》是一本关于强化学习的教材,该书通过一些简单生动的例子来解释强化学习概念,配有对应的概念词、习题和面试题,以及代码实战。这本书得到了一些专业人士的好评,并被推荐用于学习强化学习。\\\\n\\\\n另外,您还提到了一个名为rl-papers的仓库,该仓库收集了强化学习及其应用领域的论文,涵盖了基础强化学习、多智体强化学习、推荐系统、游戏理论、交通系统等多个方面。通过阅读这些论文,您也可以了解到关于强化学习的知识。\\\\n\\\\n综上所述,您可以学习到关于强化学习的知识,可以通过阅读《Easy RL:强化学习教程》和参考rl-papers仓库中的论文来进一步了解强化学习。')\n",
134
+ "('为什么这门课需要教这方面的知识?', '强化学习作为人工智能的一个重要分支,主要研究在不确定的情况下如何做出好的决策。现实生活中许多问题都具有不确定性和动态性,因此强化学习在很多领域都有广泛的应用,如自动驾驶、机器人控制、智能交通、游戏AI等。学习强化学习可以帮助学生更好地理解和解决这些问题,为我国人工智能领域的发展贡献力量。此外,强化学习也是目前学术界和工业界的研究热点,掌握这门课程的知识可以帮助学生在未来的工作和研究中更好地适应和引领这个领域的发展。')\n"
135
+ ]
136
+ }
137
+ ],
138
+ "source": [
139
+ "print(answer)\n",
140
+ "print(chat_history)"
141
+ ]
142
+ },
143
+ {
144
+ "cell_type": "markdown",
145
+ "metadata": {},
146
+ "source": [
147
+ "### 改变历史记录的长度"
148
+ ]
149
+ },
150
+ {
151
+ "cell_type": "code",
152
+ "execution_count": 18,
153
+ "metadata": {},
154
+ "outputs": [
155
+ {
156
+ "name": "stdout",
157
+ "output_type": "stream",
158
+ "text": [
159
+ "[('为什么这门课需要教这方面的知识?', '强化学习作为人工智能的一个重要分支,主要研究在不确定的情况下如何做出好的决策。现实生活中许多问题都具有不确定性和动态性,因此强化学习在很多领域都有广泛的应用,如自动驾驶、机器人控制、智能交通、游戏AI等。学习强化学习可以帮助学生更好地理解和解决这些问题,为我国人工智能领域的发展贡献力量。此外,强化学习也是目前学术界和工业界的研究热点,掌握这门课程的知识可以帮助学生在未来的工作和研究中更好地适应和引领这个领域的发展。')]\n"
160
+ ]
161
+ }
162
+ ],
163
+ "source": [
164
+ "history_len = 1 \n",
165
+ "\n",
166
+ "### 改变历史记录的长度,使用的是history_len参数来改变保留历史记录的长度\n",
167
+ "chat_history = qa_chain.change_history_length(history_len)\n",
168
+ "print(chat_history)"
169
+ ]
170
+ },
171
+ {
172
+ "cell_type": "markdown",
173
+ "metadata": {},
174
+ "source": [
175
+ "### 清除历史记录"
176
+ ]
177
+ },
178
+ {
179
+ "cell_type": "code",
180
+ "execution_count": 19,
181
+ "metadata": {},
182
+ "outputs": [
183
+ {
184
+ "name": "stdout",
185
+ "output_type": "stream",
186
+ "text": [
187
+ "None\n"
188
+ ]
189
+ }
190
+ ],
191
+ "source": [
192
+ "chat_history = qa_chain.clear_history()\n",
193
+ "print(chat_history)"
194
+ ]
195
+ },
196
+ {
197
+ "cell_type": "markdown",
198
+ "metadata": {},
199
+ "source": [
200
+ "## 不带历史记录的问答链"
201
+ ]
202
+ },
203
+ {
204
+ "cell_type": "code",
205
+ "execution_count": 26,
206
+ "metadata": {},
207
+ "outputs": [],
208
+ "source": [
209
+ "# 定义参数\n",
210
+ "# model可选值:[\"gpt-3.5-turbo\", \"gpt-3.5-turbo-16k-0613\", \"gpt-3.5-turbo-0613\", \"gpt-4\", \"gpt-4-32k\"],[\"ERNIE-Bot\", \"ERNIE-Bot-4\", \"ERNIE-Bot-turbo\"],\n",
211
+ "# [\"Spark-1.5\", \"Spark-2.0\"],[\"chatglm_pro\", \"chatglm_std\", \"chatglm_lite\"]\n",
212
+ "model:str = \"chatglm_std\"\n",
213
+ "temperature:float=0.0\n",
214
+ "top_k:int=4 \n",
215
+ "file_path:str = \"/Users/lta/Desktop/llm-universe/data_base/knowledge_db\"\n",
216
+ "persist_path:str = \"/Users/lta/Desktop/llm-universe/data_base/vector_db/chroma\"\n",
217
+ "appid:str=None \n",
218
+ "api_key:str = \"\" #or从本地环境读取\n",
219
+ "api_secret:str=None \n",
220
+ "embedding = \"m3e\"\n",
221
+ "embedding_key = \"\""
222
+ ]
223
+ },
224
+ {
225
+ "cell_type": "code",
226
+ "execution_count": 27,
227
+ "metadata": {},
228
+ "outputs": [
229
+ {
230
+ "name": "stdout",
231
+ "output_type": "stream",
232
+ "text": [
233
+ "<QA_chain_self.QA_chain_self object at 0x2f5afdf10>\n"
234
+ ]
235
+ }
236
+ ],
237
+ "source": [
238
+ "#星火输入参数用法\n",
239
+ "#qa_chain = QA_chain_self(model=model, temperature=temperature, top_k=top_k, file_path=file_path, persist_path=persist_path, appid=appid,api_key=api_key,Spark_api_secret=Spark_api_secret, embedding = embedding,embedding_key=embedding_key)\n",
240
+ "\n",
241
+ "##百度文心输入参数用法\n",
242
+ "#qa_chain = QA_chain_self(model=model, temperature=temperature, top_k=top_k, file_path=file_path, persist_path=persist_path, appid=appid,api_key=api_key,Wenxin_api_secret=Wenxin_api_secret, embedding = embedding,embedding_key=embedding_key)\n",
243
+ "\n",
244
+ "#智谱(或OpenAI)输入参数用法\n",
245
+ "qa_chain = QA_chain_self(model=model, temperature=temperature, top_k=top_k, file_path=file_path, persist_path=persist_path, appid=appid,api_key=api_key, embedding = embedding,embedding_key=embedding_key)\n",
246
+ "print(qa_chain)"
247
+ ]
248
+ },
249
+ {
250
+ "cell_type": "code",
251
+ "execution_count": 29,
252
+ "metadata": {},
253
+ "outputs": [],
254
+ "source": [
255
+ "question = \"什么是蘑菇书(easyrl)?\"\n",
256
+ "answer = qa_chain.answer(question)"
257
+ ]
258
+ },
259
+ {
260
+ "cell_type": "code",
261
+ "execution_count": 30,
262
+ "metadata": {},
263
+ "outputs": [
264
+ {
265
+ "name": "stdout",
266
+ "output_type": "stream",
267
+ "text": [
268
+ "蘑菇书(easy-rl)是一本关于强化学习的教程,主要包含李宏毅老师的强化学习视频内容、经典资料整理、章节习题和算法实战等,旨在帮助读者学习强化学习并探索人工智能领域。谢谢你的提问!\n"
269
+ ]
270
+ }
271
+ ],
272
+ "source": [
273
+ "print(answer)"
274
+ ]
275
+ },
276
+ {
277
+ "cell_type": "markdown",
278
+ "metadata": {},
279
+ "source": [
280
+ "------------------\n",
281
+ "> 其他模型可参考上面的实例进行使用,embedding 目前支持 openAI 和智谱以及m3e的模型,其他类型敬请期待!"
282
+ ]
283
+ }
284
+ ],
285
+ "metadata": {
286
+ "kernelspec": {
287
+ "display_name": "xuhu",
288
+ "language": "python",
289
+ "name": "python3"
290
+ },
291
+ "language_info": {
292
+ "codemirror_mode": {
293
+ "name": "ipython",
294
+ "version": 3
295
+ },
296
+ "file_extension": ".py",
297
+ "mimetype": "text/x-python",
298
+ "name": "python",
299
+ "nbconvert_exporter": "python",
300
+ "pygments_lexer": "ipython3",
301
+ "version": "3.9.18"
302
+ }
303
+ },
304
+ "nbformat": 4,
305
+ "nbformat_minor": 2
306
+ }
qa_chain/test_chat.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sys
2
+ import os
3
+
4
+ # 添加项目根目录到 Python 路径
5
+ current_dir = os.path.dirname(os.path.abspath(__file__))
6
+ project_root = os.path.dirname(current_dir)
7
+ if project_root not in sys.path:
8
+ sys.path.append(project_root)
9
+
10
+ from qa_chain.Chat_QA_chain_self import Chat_QA_chain_self
11
+ from dotenv import load_dotenv
12
+
13
+ # 加载环境变量
14
+ load_dotenv()
15
+
16
+ chat_history:list=[] # 初始化聊天历史记录
17
+
18
+
19
+ def chat_with_ai():
20
+ print("正在初始化AI助手...")
21
+ chat_qa = Chat_QA_chain_self(
22
+ model="qwen-max", # 改为阿里通义千问模型
23
+ temperature=0.7,
24
+ top_k=4,
25
+ chat_history=chat_history,
26
+ persist_path="./vector_db/chroma_sanguo",
27
+ file_path="./knowledge_db/sanguo_characters",
28
+ api_key=os.getenv("ali_api_key"), # 使用阿里API Key
29
+ embedding="m3e",
30
+ embedding_key=None
31
+ )
32
+ print("AI助手初始化完成,可以开始对话了!(输入'退出'结束对话)")
33
+
34
+ while True:
35
+ user_input = input("\n您: ")
36
+ if user_input.lower() in ["退出", "exit", "quit"]:
37
+ break
38
+
39
+ history = chat_qa.answer(user_input, chat_history=chat_history)
40
+ chat_history[:] = history # 关键修改:将更新后的历史记录同步到全局变量
41
+ print("\n完整对话历史:")
42
+ for i, (q, a) in enumerate(history, 1):
43
+ print(f"{i}. 您: {q}")
44
+ print(f" AI: {a}\n")
45
+ print("\nAI助手最新回复:", history[-1][1])
46
+
47
+ if __name__ == "__main__":
48
+ chat_with_ai()
49
+
serve/__pycache__/api.cpython-310.pyc ADDED
Binary file (2.22 kB). View file
 
serve/__pycache__/api.cpython-39.pyc ADDED
Binary file (2.27 kB). View file
 
serve/__pycache__/test.cpython-39.pyc ADDED
Binary file (984 Bytes). View file
 
serve/api.py ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python
2
+ # -*- encoding: utf-8 -*-
3
+ '''
4
+ @File : spark_api.py
5
+ @Time : 2023/09/24 11:00:46
6
+ @Author : Logan Zou
7
+ @Version : 1.0
8
+ @Contact : loganzou0421@163.com
9
+ @License : (C)Copyright 2017-2018, Liugroup-NLPR-CASIA
10
+ @Desc : 启动服务为本地 API
11
+ '''
12
+
13
+ from fastapi import FastAPI
14
+ from pydantic import BaseModel
15
+ import os
16
+ import sys
17
+ from pathlib import Path
18
+
19
+ # 添加项目根目录到 Python 路径
20
+ current_dir = Path(__file__).resolve().parent
21
+ project_root = current_dir.parent
22
+ sys.path.append(str(project_root))
23
+
24
+ from qa_chain.QA_chain_self import QA_chain_self
25
+
26
+ # os.environ["HTTP_PROXY"] = "http://127.0.0.1:7890"
27
+ # os.environ["HTTPS_PROXY"] = "http://127.0.0.1:7890"
28
+
29
+ app = FastAPI() # 创建 api 对象
30
+
31
+ template = """使用以下上下文来回答最后的问题。如果你不知道答案,就说你不知道,不要试图编造答
32
+ 案。最多使用三句话。尽量使答案简明扼要。总是在回答的最后说"谢谢你的提问!"。
33
+ {context}
34
+ 问题: {question}
35
+ 有用的回答:"""
36
+
37
+ # 定义一个数据模型,用于接收POST请求中的数据
38
+ class Item(BaseModel):
39
+ prompt : str # 用户 prompt
40
+ model : str = "gpt-3.5-turbo"# 使用的模型
41
+ temperature : float = 0.1# 温度系数
42
+ if_history : bool = False # 是否使用历史对话功能
43
+ # API_Key
44
+ api_key: str = None
45
+ # Secret_Key
46
+ secret_key : str = None
47
+ # access_token
48
+ access_token: str = None
49
+ # APPID
50
+ appid : str = None
51
+ # APISecret
52
+ Spark_api_secret : str = None
53
+ # Secret_key
54
+ Wenxin_secret_key : str = None
55
+ # 数据库路径
56
+ db_path : str = "/Users/lta/Desktop/llm-universe/data_base/vector_db/chroma"
57
+ # 源文件路径
58
+ file_path : str = "/Users/lta/Desktop/llm-universe/data_base/knowledge_db"
59
+ # prompt template
60
+ prompt_template : str = template
61
+ # Template 变量
62
+ input_variables : list = ["context","question"]
63
+ # Embdding
64
+ embedding : str = "m3e"
65
+ # Top K
66
+ top_k : int = 5
67
+ # embedding_key
68
+ embedding_key : str = None
69
+
70
+ @app.post("/")
71
+ async def get_response(item: Item):
72
+
73
+ # 首先确定需要调用的链
74
+ if not item.if_history:
75
+ # 调用 Chat 链
76
+ # return item.embedding_key
77
+ if item.embedding_key == None:
78
+ item.embedding_key = item.api_key
79
+ chain = QA_chain_self(model=item.model, temperature=item.temperature, top_k=item.top_k, file_path=item.file_path, persist_path=item.db_path,
80
+ appid=item.appid, api_key=item.api_key, embedding=item.embedding, template=template, Spark_api_secret=item.Spark_api_secret, Wenxin_secret_key=item.Wenxin_secret_key, embedding_key=item.embedding_key)
81
+
82
+ response = chain.answer(question = item.prompt)
83
+
84
+ return response
85
+
86
+ # 由于 API 存在即时性问题,不能支持历史链
87
+ else:
88
+ return "API 不支持历史链"
serve/run_api.sh ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ ! cd project/serve
2
+ ! uvicorn api:app --reload
serve/run_gradio.py ADDED
@@ -0,0 +1,251 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 导入必要的库
2
+
3
+ import sys
4
+ import os # 用于操作系统相关的操作,例如读取环境变量
5
+
6
+ sys.path.append(os.path.dirname(os.path.dirname(__file__)))
7
+
8
+ import IPython.display # 用于在 IPython 环境中显示数据,例如图片
9
+ import io # 用于处理流式数据(例如文件流)
10
+ import gradio as gr
11
+ from dotenv import load_dotenv, find_dotenv
12
+ from llm.call_llm import get_completion
13
+ from database.create_db import create_db_info
14
+ from qa_chain.Chat_QA_chain_self import Chat_QA_chain_self
15
+ from qa_chain.QA_chain_self import QA_chain_self
16
+ import re
17
+ # 导入 dotenv 库的函数
18
+ # dotenv 允许您从 .env 文件中读取环境变量
19
+ # 这在开发时特别有用,可以避免将敏感信息(如API密钥)硬编码到代码中
20
+
21
+ # 寻找 .env 文件并加载它的内容
22
+ # 这允许您使用 os.environ 来读取在 .env 文件中设置的环境变量
23
+ _ = load_dotenv(find_dotenv())
24
+ LLM_MODEL_DICT = {
25
+ "openai": ["gpt-3.5-turbo", "gpt-3.5-turbo-16k-0613", "gpt-3.5-turbo-0613", "gpt-4", "gpt-4-32k"],
26
+ "wenxin": ["ERNIE-Bot", "ERNIE-Bot-4", "ERNIE-Bot-turbo"],
27
+ "xinhuo": ["Spark-X1"],
28
+ "zhipuai": ["chatglm_pro", "chatglm_std", "chatglm_lite"]
29
+ }
30
+
31
+
32
+ LLM_MODEL_LIST = sum(list(LLM_MODEL_DICT.values()),[])
33
+ INIT_LLM = "chatglm_std"
34
+ EMBEDDING_MODEL_LIST = ['zhipuai', 'openai', 'm3e']
35
+ INIT_EMBEDDING_MODEL = "m3e"
36
+ DEFAULT_DB_PATH = "./knowledge_db"
37
+ DEFAULT_PERSIST_PATH = "./vector_db/chroma"
38
+ AIGC_AVATAR_PATH = "./figures/aigc_avatar.png"
39
+ DATAWHALE_AVATAR_PATH = "./figures/datawhale_avatar.png"
40
+ AIGC_LOGO_PATH = "./figures/aigc_logo.png"
41
+ DATAWHALE_LOGO_PATH = "./figures/datawhale_logo.png"
42
+
43
+ def get_model_by_platform(platform):
44
+ return LLM_MODEL_DICT.get(platform, "")
45
+ class Model_center():
46
+ """
47
+ 存储问答 Chain 的对象
48
+
49
+ - chat_qa_chain_self: 以 (model, embedding) 为键存储的带历史记录的问答链。
50
+ - qa_chain_self: 以 (model, embedding) 为键存储的不带历史记录的问答链。
51
+ """
52
+ def __init__(self):
53
+ self.chat_qa_chain_self = {}
54
+ self.qa_chain_self = {}
55
+
56
+ def chat_qa_chain_self_answer(self, question: str, chat_history: list = [], model: str = "openai", embedding: str = "openai", temperature: float = 0.0, top_k: int = 4, history_len: int = 3, file_path: str = DEFAULT_DB_PATH, persist_path: str = DEFAULT_PERSIST_PATH):
57
+ """
58
+ 调用带历史记录的问答链进行回答
59
+ """
60
+ if question == None or len(question) < 1:
61
+ return "", chat_history
62
+ try:
63
+ if (model, embedding) not in self.chat_qa_chain_self:
64
+ self.chat_qa_chain_self[(model, embedding)] = Chat_QA_chain_self(model=model, temperature=temperature,
65
+ top_k=top_k, chat_history=chat_history, file_path=file_path, persist_path=persist_path, embedding=embedding)
66
+ chain = self.chat_qa_chain_self[(model, embedding)]
67
+ return "", chain.answer(question=question, temperature=temperature, top_k=top_k)
68
+ except Exception as e:
69
+ return e, chat_history
70
+
71
+ def qa_chain_self_answer(self, question: str, chat_history: list = [], model: str = "openai", embedding="openai", temperature: float = 0.0, top_k: int = 4, file_path: str = DEFAULT_DB_PATH, persist_path: str = DEFAULT_PERSIST_PATH):
72
+ """
73
+ 调用不带历史记录的问答链进行回答
74
+ """
75
+ if question == None or len(question) < 1:
76
+ return "", chat_history
77
+ try:
78
+ if (model, embedding) not in self.qa_chain_self:
79
+ self.qa_chain_self[(model, embedding)] = QA_chain_self(model=model, temperature=temperature,
80
+ top_k=top_k, file_path=file_path, persist_path=persist_path, embedding=embedding)
81
+ chain = self.qa_chain_self[(model, embedding)]
82
+ chat_history.append(
83
+ (question, chain.answer(question, temperature, top_k)))
84
+ return "", chat_history
85
+ except Exception as e:
86
+ return e, chat_history
87
+
88
+ def clear_history(self):
89
+ if len(self.chat_qa_chain_self) > 0:
90
+ for chain in self.chat_qa_chain_self.values():
91
+ chain.clear_history()
92
+
93
+
94
+ def format_chat_prompt(message, chat_history):
95
+ """
96
+ 该函数用于格式化聊天 prompt。
97
+
98
+ 参数:
99
+ message: 当前的用户消息。
100
+ chat_history: 聊天历史记录。
101
+
102
+ 返回:
103
+ prompt: 格式化后的 prompt。
104
+ """
105
+ # 初始化一个空字符串,用于存放格式化后的聊天 prompt。
106
+ prompt = ""
107
+ # 遍历聊天历史记录。
108
+ for turn in chat_history:
109
+ # 从聊天记录中提取用户和机器人的消息。
110
+ user_message, bot_message = turn
111
+ # 更新 prompt,加入用户和机器人的消息。
112
+ prompt = f"{prompt}\nUser: {user_message}\nAssistant: {bot_message}"
113
+ # 将当前的用户消息也加入到 prompt中,并预留一个位置给机器人的回复。
114
+ prompt = f"{prompt}\nUser: {message}\nAssistant:"
115
+ # 返回格式化后的 prompt。
116
+ return prompt
117
+
118
+
119
+
120
+ def respond(message, chat_history, llm, history_len=3, temperature=0.1, max_tokens=2048):
121
+ """
122
+ 该函数用于生成机器人的回复。
123
+
124
+ 参数:
125
+ message: 当前的用户消息。
126
+ chat_history: 聊天历史记录。
127
+
128
+ 返回:
129
+ "": 空字符串表示没有内容需要显示在界面上,可以替换为真正的机器人回复。
130
+ chat_history: 更新后的聊天历史记录
131
+ """
132
+ if message == None or len(message) < 1:
133
+ return "", chat_history
134
+ try:
135
+ # 限制 history 的记忆长度
136
+ chat_history = chat_history[-history_len:] if history_len > 0 else []
137
+ # 调用上面的函数,将用户的消息和聊天历史记录格式化为一个 prompt。
138
+ formatted_prompt = format_chat_prompt(message, chat_history)
139
+ # 使用llm对象的predict方法生成机器人的回复(注意:llm对象在此代码中并未定义)。
140
+ bot_message = get_completion(
141
+ formatted_prompt, llm, temperature=temperature, max_tokens=max_tokens)
142
+ # 将bot_message中\n换为<br/>
143
+ bot_message = re.sub(r"\\n", '<br/>', bot_message)
144
+ # 将用户的消息和机器人的回复加入到聊天历史记录中。
145
+ chat_history.append((message, bot_message))
146
+ # 返回一个空字符串和更新后的聊天历史记录(这里的空字符串可以替换为真正的机器人回复,如果需要显示在界面上)。
147
+ return "", chat_history
148
+ except Exception as e:
149
+ return e, chat_history
150
+
151
+
152
+ model_center = Model_center()
153
+
154
+ block = gr.Blocks()
155
+ with block as demo:
156
+ with gr.Row(equal_height=True):
157
+ gr.Image(value=AIGC_LOGO_PATH, scale=1, min_width=10, show_label=False, show_download_button=False, container=False)
158
+
159
+ with gr.Column(scale=2):
160
+ gr.Markdown("""<h1><center>动手学大模型应用开发</center></h1>
161
+ <center>LLM-UNIVERSE</center>
162
+ """)
163
+ gr.Image(value=DATAWHALE_LOGO_PATH, scale=1, min_width=10, show_label=False, show_download_button=False, container=False)
164
+
165
+ with gr.Row():
166
+ with gr.Column(scale=4):
167
+ chatbot = gr.Chatbot(height=400, show_copy_button=True, show_share_button=True, avatar_images=(AIGC_AVATAR_PATH, DATAWHALE_AVATAR_PATH))
168
+ # 创建一个文本框组件,用于输入 prompt。
169
+ msg = gr.Textbox(label="Prompt/问题")
170
+
171
+ with gr.Row():
172
+ # 创建提交按钮。
173
+ db_with_his_btn = gr.Button("Chat db with history")
174
+ db_wo_his_btn = gr.Button("Chat db without history")
175
+ llm_btn = gr.Button("Chat with llm")
176
+ with gr.Row():
177
+ # 创建一个清除按钮,用于清除聊天机器人组件的内容。
178
+ clear = gr.ClearButton(
179
+ components=[chatbot], value="Clear console")
180
+
181
+ with gr.Column(scale=1):
182
+ file = gr.File(label='请选择知识库目录', file_count='directory',
183
+ file_types=['.txt', '.md', '.docx', '.pdf'])
184
+ with gr.Row():
185
+ init_db = gr.Button("知识库文件向量化")
186
+ model_argument = gr.Accordion("参数配置", open=False)
187
+ with model_argument:
188
+ temperature = gr.Slider(0,
189
+ 1,
190
+ value=0.01,
191
+ step=0.01,
192
+ label="llm temperature",
193
+ interactive=True)
194
+
195
+ top_k = gr.Slider(1,
196
+ 10,
197
+ value=3,
198
+ step=1,
199
+ label="vector db search top k",
200
+ interactive=True)
201
+
202
+ history_len = gr.Slider(0,
203
+ 5,
204
+ value=3,
205
+ step=1,
206
+ label="history length",
207
+ interactive=True)
208
+
209
+ model_select = gr.Accordion("模型选择")
210
+ with model_select:
211
+ llm = gr.Dropdown(
212
+ LLM_MODEL_LIST,
213
+ label="large language model",
214
+ value=INIT_LLM,
215
+ interactive=True)
216
+
217
+ embeddings = gr.Dropdown(EMBEDDING_MODEL_LIST,
218
+ label="Embedding model",
219
+ value=INIT_EMBEDDING_MODEL)
220
+
221
+ # 设置初始化向量数据库按钮的点击事件。当点击时,调用 create_db_info 函数,并传入用户的文件和希��使用的 Embedding 模型。
222
+ init_db.click(create_db_info,
223
+ inputs=[file, embeddings], outputs=[msg])
224
+
225
+ # 设置按钮的点击事件。当点击时,调用上面定义的 chat_qa_chain_self_answer 函数,并传入用户的消息和聊天历史记录,然后更新文本框和聊天机器人组件。
226
+ db_with_his_btn.click(model_center.chat_qa_chain_self_answer, inputs=[
227
+ msg, chatbot, llm, embeddings, temperature, top_k, history_len],
228
+ outputs=[msg, chatbot])
229
+ # 设置按钮的点击事件。当点击时,调用上面定义的 qa_chain_self_answer 函数,并传入用户的消息和聊天历史记录,然后更新文本框和聊天机器人组件。
230
+ db_wo_his_btn.click(model_center.qa_chain_self_answer, inputs=[
231
+ msg, chatbot, llm, embeddings, temperature, top_k], outputs=[msg, chatbot])
232
+ # 设置按钮的点击事件。当点击时,调用上面定义的 respond 函数,并传入用户的消息和聊天历史记录,然后更新文本框和聊天机器人组件。
233
+ llm_btn.click(respond, inputs=[
234
+ msg, chatbot, llm, history_len, temperature], outputs=[msg, chatbot], show_progress="minimal")
235
+
236
+ # 设置文本框的提交事件(即按下Enter键时)。功能与上面的 llm_btn 按钮点击事件相同。
237
+ msg.submit(respond, inputs=[
238
+ msg, chatbot, llm, history_len, temperature], outputs=[msg, chatbot], show_progress="hidden")
239
+ # 点击后清空后端存储的聊天记录
240
+ clear.click(model_center.clear_history)
241
+ gr.Markdown("""提醒:<br>
242
+ 1. 使用时请先上传自己的知识文件,不然将会解析项目自带的知识库。
243
+ 2. 初始化数据库时间可能较长,请耐心等待。
244
+ 3. 使用中如果出现异常,将会在文本输入框进行展示,请不要惊慌。 <br>
245
+ """)
246
+ # threads to consume the request
247
+ gr.close_all()
248
+ # 启动新的 Gradio 应用,设置分享功能为 True,并使用环境变量 PORT1 指定服务器端口。
249
+ # demo.launch(share=True, server_port=int(os.environ['PORT1']))
250
+ # 直接启动
251
+ demo.launch()
serve/sanguo_duel.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from dotenv import load_dotenv
3
+ import sys
4
+ import os
5
+ sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # 添加项目根目录
6
+ from qa_chain.Chat_QA_chain_self import Chat_QA_chain_self
7
+
8
+ # 加载环境变量
9
+ load_dotenv()
10
+
11
+ chat_history:list=[] # 初始化聊天历史记录
12
+
13
+ class ChatSystem:
14
+ def __init__(self):
15
+ self.chat_chain = Chat_QA_chain_self(
16
+ model="qwen-max", # 改为阿里通义千问模型
17
+ temperature=0.7,
18
+ top_k=4,
19
+ chat_history=chat_history,
20
+ persist_path="./vector_db/chroma_sanguo",
21
+ file_path="./knowledge_db/sanguo_characters",
22
+ api_key=os.getenv("ali_api_key"), # 使用阿里API Key
23
+ embedding="m3e",
24
+ embedding_key=None
25
+ )
26
+
27
+ chat_system = ChatSystem()
28
+
29
+ def handle_message(message, chat_history):
30
+ if not message:
31
+ return "", chat_history
32
+
33
+ # 处理None值:将用户消息中的None转换为空字符串
34
+ formatted_chat_history = []
35
+ for item in chat_history:
36
+ user_msg, ai_msg = item
37
+ formatted_user_msg = user_msg if user_msg is not None else "" # 关键修改
38
+ formatted_chat_history.append((formatted_user_msg, ai_msg))
39
+
40
+ # 调用问答链获取回复
41
+ updated_history = chat_system.chat_chain.answer(
42
+ question=message,
43
+ chat_history=formatted_chat_history
44
+ )
45
+
46
+ # 转换回列表的列表供Gradio显示
47
+ return "", [list(item) for item in updated_history]
48
+
49
+ with gr.Blocks() as simple_demo:
50
+ # 使用Row布局水平排列图标和标题(可改为Column垂直排列)
51
+ with gr.Row(equal_height=True,justify="center"): # equal_height=True保证行内组件高度一致
52
+ # 加载图标(调整参数保持1:1比例)
53
+ gr.Image(
54
+ value="./figures/sanguo.png", # 图标路径
55
+ scale=0.2, # 控制组件在布局中的占比(1表示与相邻组件等宽)
56
+ # min_width=60, # 设置最小宽度(根据图标原始尺寸调整)
57
+ # min_height=60, # 设置最小高度(与min_width相同,保持1:1)
58
+ width=80, # 固定宽度
59
+ height=80, # 固定高度
60
+ show_label=False, # 隐藏标签
61
+ show_download_button=False, # 隐藏下载按钮
62
+ container=False # 去除图标外边框
63
+ )
64
+ gr.Markdown("## 三国大乱斗系统") # 原标题
65
+
66
+ # 初始化带系统介绍的聊天框
67
+ chatbot = gr.Chatbot(
68
+ height=600,
69
+ value=[[None, "欢迎使用三国大乱斗系统!我可以为您提供以下功能:\n1. 角色抽取:随机抽取三国人物卡并展示完整信息\n2. 对战规程介绍:包括回合制规则、技能使用说明等\n3. 实时对战:支持玩家与AI的回合制对战模拟\n请输入您的问题开始交互~"]]
70
+ )
71
+ msg = gr.Textbox(label="请输入您的问题")
72
+
73
+ with gr.Row():
74
+ submit_btn = gr.Button("发送")
75
+ clear_btn = gr.Button("清空对话")
76
+
77
+ submit_btn.click(
78
+ handle_message,
79
+ inputs=[msg, chatbot],
80
+ outputs=[msg, chatbot]
81
+ )
82
+ clear_btn.click(lambda: [], None, chatbot)
83
+
84
+ if __name__ == "__main__":
85
+ simple_demo.launch()
serve/test.ipynb ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 41,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "import requests\n",
10
+ "\n",
11
+ "url = \"http://127.0.0.1:8000\"\n",
12
+ "\n",
13
+ "data = {\n",
14
+ " \"prompt\":\"什么是蘑菇书(easyrl)?\",\n",
15
+ " \"api_key\":\"\"\n",
16
+ "}\n",
17
+ "\n",
18
+ "r = requests.post(url, json=data)"
19
+ ]
20
+ },
21
+ {
22
+ "cell_type": "code",
23
+ "execution_count": 42,
24
+ "metadata": {},
25
+ "outputs": [
26
+ {
27
+ "data": {
28
+ "text/plain": [
29
+ "'\"蘑菇书(easyrl)是一个仓库,内容主要包括李宏毅老师强化学习视频内容、经典资料整理、章节习题、算法实战等,旨在帮助读者学习强化学习并探索人工智能领域。谢谢你的提问!\"'"
30
+ ]
31
+ },
32
+ "execution_count": 42,
33
+ "metadata": {},
34
+ "output_type": "execute_result"
35
+ }
36
+ ],
37
+ "source": [
38
+ "r.text"
39
+ ]
40
+ }
41
+ ],
42
+ "metadata": {
43
+ "kernelspec": {
44
+ "display_name": "gpt",
45
+ "language": "python",
46
+ "name": "python3"
47
+ },
48
+ "language_info": {
49
+ "codemirror_mode": {
50
+ "name": "ipython",
51
+ "version": 3
52
+ },
53
+ "file_extension": ".py",
54
+ "mimetype": "text/x-python",
55
+ "name": "python",
56
+ "nbconvert_exporter": "python",
57
+ "pygments_lexer": "ipython3",
58
+ "version": "3.10.0"
59
+ }
60
+ },
61
+ "nbformat": 4,
62
+ "nbformat_minor": 2
63
+ }
split_docs/split_documents.txt ADDED
@@ -0,0 +1,2006 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ 文档 1:
3
+ --------------------------------------------------
4
+ 角色:刘备
5
+ 攻击力:150
6
+ 防御力:80
7
+ 体力:100
8
+ 耐力:60
9
+ 法力:70
10
+ 闪避:20
11
+ 速度:50
12
+ 技能:
13
+ - 仁德护体:防御力提升30%,持续2回合,并恢复自身10%体力
14
+ 耐力消耗:5,法力消耗:20
15
+ - 激将:攻击力提升50%(1回合),且必定命中,但自身防御下降20%
16
+ 耐力消耗:10,法力消耗:25
17
+ - 遁走:消耗50%耐力强制撤退,本回合闪避率提升至100%(仅生效一次)
18
+ 耐力消耗:8,法力消耗:15
19
+
20
+ --------------------------------------------------
21
+
22
+ 文档 2:
23
+ --------------------------------------------------
24
+ 角色:诸葛亮
25
+ 攻击力:580
26
+ 防御力:120
27
+ 体力:100
28
+ 耐力:80
29
+ 法力:90
30
+ 闪避:30
31
+ 速度:85
32
+ 技能:
33
+ - 七星灯:恢复自身30%体力,并提升30%攻击增强,持续2回合
34
+ 耐力消耗:5,法力消耗:30
35
+ - 火攻计:对单体目标造成150%攻击伤害,并附加灼烧状态(每回合损失1%体力,持续3回合)
36
+ 耐力消耗:3,法力消耗:20
37
+ - 八卦阵:提升50%防御和20%闪避,持续3回合,必定命中
38
+ 耐力消耗:7,法力消耗:15
39
+
40
+ --------------------------------------------------
41
+
42
+ 文档 3:
43
+ --------------------------------------------------
44
+ 角色:关羽
45
+ 攻击力:720
46
+ 防御力:160
47
+ 体力:100
48
+ 耐力:85
49
+ 法力:75
50
+ 闪避:35
51
+ 速度:70
52
+ 技能:
53
+ - 青龙斩:攻击力提升30%,必定命中,攻击附加灼烧状态(每回合降低1%体力)
54
+ 耐力消耗:10,法力消耗:25
55
+ - 铁壁防御:防御力提升50%,闪避率增加15%(持续2回合)
56
+ 耐力消耗:8,法力消耗:20
57
+ - 义薄云天:恢复自身20%体力,下一击暴击率提升50%
58
+ 耐力消耗:7,法力消耗:30
59
+
60
+ --------------------------------------------------
61
+
62
+ 文档 4:
63
+ --------------------------------------------------
64
+ 角色:张飞
65
+ 攻击力:620
66
+ 防御力:160
67
+ 体力:100
68
+ 耐力:80
69
+ 法力:35
70
+ 闪避:15
71
+ 速度:85
72
+ 技能:
73
+ - 怒吼冲锋:攻击增强30%,持续2回合,并附带必定命中效果
74
+ 耐力消耗:7,法力消耗:20
75
+ - 铁壁防御:防御力提升50%,并回复自身15%体力,持续1回合
76
+ 耐力消耗:9,法力消耗:15
77
+ - 烈焰斩:造成150%攻击力的伤害,并使目标进入灼烧状态(每回合损失3%体力,持续3回合)
78
+ 耐力消耗:5,法力消耗:25
79
+
80
+ --------------------------------------------------
81
+
82
+ 文档 5:
83
+ --------------------------------------------------
84
+ 角色:赵云
85
+ 攻击力:600
86
+ 防御力:150
87
+ 体力:100
88
+ 耐力:80
89
+ 法力:30
90
+ 闪避:25
91
+ 速度:90
92
+ 技能:
93
+ - 七探盘龙:攻击力提升30%,持续3回合,且必定命中
94
+ 耐力消耗:5,法力消耗:15
95
+ - 银甲护体:防御力提升40%,持续2回合,并附加30%概率闪避普攻
96
+ 耐力消耗:8,法力消耗:20
97
+ - 龙胆恢复:恢复自身30%体力,若体力低于50%则额外解除负面状态
98
+ 耐力消耗:10,法力消耗:25
99
+
100
+ --------------------------------------------------
101
+
102
+ 文档 6:
103
+ --------------------------------------------------
104
+ 角色:黄忠
105
+ 攻击力:620
106
+ 防御力:110
107
+ 体力:100
108
+ 耐力:60
109
+ 法力:40
110
+ 闪避:35
111
+ 速度:85
112
+ 技能:
113
+ - 百步穿杨:攻击力提升30%,持续3回合(必中)
114
+ 耐力消耗:5,法力消耗:15
115
+ - 烈弓术:射出火焰箭,造成1.5倍伤害并附加灼烧状态(每回合损失1%体力,持续3回合)
116
+ 耐力消耗:8,法力消耗:25
117
+ - 鹰眼洞察:闪避率提升20%并解除自身负面状态,持续2回合
118
+ 耐力消耗:3,法力消耗:10
119
+
120
+ --------------------------------------------------
121
+
122
+ 文档 7:
123
+ --------------------------------------------------
124
+ 角色:马超
125
+ 攻击力:620
126
+ 防御力:110
127
+ 体力:100
128
+ 耐力:85
129
+ 法力:45
130
+ 闪避:38
131
+ 速度:95
132
+ 技能:
133
+ - 铁骑突袭:对单体目标造成1.5倍伤害,并有30%几率使目标进入灼烧状态(每回合损失1%体力,持续3回合)
134
+ 耐力消耗:7,法力消耗:20
135
+ - 狼啸破阵:消耗自身10%体力发动强力攻击,本次攻击必定命中且暴击率提升50%,若击杀目标则恢复15%体力
136
+ 耐力消耗:3,法力消耗:25
137
+ - 西凉战吼:提升自身30%攻击力和20%防御力,持续2回合,并驱散所有负面状态
138
+ 耐力消耗:9,法力消耗:30
139
+
140
+ --------------------------------------------------
141
+
142
+ 文档 8:
143
+ --------------------------------------------------
144
+ 角色:魏延
145
+ 攻击力:780
146
+ 防御力:160
147
+ 体力:100
148
+ 耐力:85
149
+ 法力:75
150
+ 闪避:30
151
+ 速度:90
152
+ 技能:
153
+ - 狂骨突进:攻击力提升30%持续2回合,并附带20%暴击率
154
+ - 铁壁防守:防御力提升50%持续1回合,但自身速度降低20%
155
+ - 火计连环:消耗灵力释放火焰攻击,造成攻击力120%伤害,目标陷入灼烧状态(每回合损失1%体力,持续3回合)
156
+
157
+ --------------------------------------------------
158
+
159
+ 文档 9:
160
+ --------------------------------------------------
161
+ 角色:姜维
162
+ 攻击力:450
163
+ 防御力:120
164
+ 体力:100
165
+ 耐力:70
166
+ 法力:60
167
+ 闪避:30
168
+ 速度:80
169
+ 技能:
170
+ - 麒麟撼地击:攻击增强30%,命中后附带震荡效果(降低目标10%防御力,持续2回合)
171
+ 耐力消耗:5,法力消耗:20
172
+ - 八卦阵·守:防御增强40%并恢复自身15%体力,持续3回合
173
+ 耐力消耗:8,法力消耗:25
174
+ - 九伐连矢:释放三波箭雨攻击目标,每波造成60%攻击力伤害,最后一波附带灼烧状态(每回合损失1%体力)
175
+ 耐力消耗:7,法力消耗:30
176
+
177
+ --------------------------------------------------
178
+
179
+ 文档 10:
180
+ --------------------------------------------------
181
+ 角色:徐庶
182
+ 攻击力:320
183
+ 防御力:85
184
+ 体力:100
185
+ 耐力:68
186
+ 法力:75
187
+ 闪避:15
188
+ 速度:82
189
+ 技能:
190
+ - 石破天惊:攻击增强30%,持续2回合,并附加灼烧状态(每回合降低目标1%体力)
191
+ - 观星遁甲:自身防御增强40%,闪避率提升20%,持续3回合
192
+ - 风卷残云:消耗灵力恢复己方全体15%体力,并附带速度增强15%,持续1回合
193
+
194
+ --------------------------------------------------
195
+
196
+ 文档 11:
197
+ --------------------------------------------------
198
+ 角色:马良
199
+ 攻击力:600
200
+ 防御力:80
201
+ 体力:100
202
+ 耐力:70
203
+ 法力:65
204
+ 闪避:20
205
+ 速度:85
206
+ 技能:
207
+ - 神笔天威:攻击力提升50%,持续3回合,必定命中
208
+ 耐力消耗:5,法力消耗:20
209
+ - 墨守成规:防御力提升50%并附加50%概率闪避,持续2回合
210
+ 耐力消耗:10,法力消耗:25
211
+ - 画龙点睛:恢复自身30%体力,并使下一击附带灼烧效果(每回合损失1%体力)
212
+ 耐力消耗:8,法力消耗:15
213
+
214
+ --------------------------------------------------
215
+
216
+ 文档 12:
217
+ --------------------------------------------------
218
+ 角色:费祎
219
+ 攻击力:280
220
+ 防御力:90
221
+ 体力:100
222
+ 耐力:75
223
+ 法力:85
224
+ 闪避:22
225
+ 速度:88
226
+ 技能:
227
+ - 奇谋妙计:提升自身攻击力30%,持续2回合(必定命中)
228
+ 耐力消耗:7,法力消耗:22
229
+ - 御敌屏障:生成护盾吸收相当于自身防御力150%的伤害,持续3回合(闪避增强20%)
230
+ 耐力消耗:5,法力消耗:18
231
+ - 匡世之才:回复全体队友15%体力,移除所有灼烧/中毒状态,自身速度提升20%持续1回合
232
+ 耐力消耗:10,法力消耗:30
233
+
234
+ --------------------------------------------------
235
+
236
+ 文档 13:
237
+ --------------------------------------------------
238
+ 角色:邓芝
239
+ 攻击力:480
240
+ 防御力:135
241
+ 体力:100
242
+ 耐力:75
243
+ 法力:65
244
+ 闪避:25
245
+ 速度:85
246
+ 技能:
247
+ - 无双斩:攻击增强30%,必定命中,持续2回合
248
+ 耐力消耗:8,法力消耗:20
249
+ - 铁壁防御:防御增强50%,并恢复10%体力,持续3回合
250
+ 耐力消耗:12,法力消耗:25
251
+ - 毒龙破:攻击附加中毒状态(目标攻击降低3%),暴击率提升20%
252
+ 耐力消耗:6,法力消耗:18
253
+
254
+ --------------------------------------------------
255
+
256
+ 文档 14:
257
+ --------------------------------------------------
258
+ 角色:王平
259
+ 攻击力:580
260
+ 防御力:95
261
+ 体力:100
262
+ 耐力:68
263
+ 法力:75
264
+ 闪避:25
265
+ 速度:82
266
+ 技能:
267
+ - 破军击:消耗耐力提升50%攻击力,附带30%暴击率,持续1回合
268
+ 耐力消耗:8,法力消耗:25
269
+ - 铁壁术:吸收30%伤害并反弹10%所受伤害,持续2回合
270
+ 耐力消耗:5,法力消耗:18
271
+ - 回春术:立即回复15%体力并清除负面状态,获得1回合伤害减免20%
272
+ 耐力消耗:7,法力消耗:22
273
+
274
+ --------------------------------------------------
275
+
276
+ 文档 15:
277
+ --------------------------------------------------
278
+ 角色:张翼
279
+ 攻击力:420
280
+ 防御力:160
281
+ 体力:100
282
+ 耐力:75
283
+ 法力:60
284
+ 闪避:25
285
+ 速度:90
286
+ 技能:
287
+ - 破军斩:攻击力提升30%(持续2回合),必定命中,并附加10%概率使目标进入【流血】状态(每回合损失3%体力)
288
+ 耐力消耗:8,法力消耗:25
289
+ - 玄冥护体:防御力提升50%(持续3回合),30%概率闪避物理攻击
290
+ 耐力消耗:6,法力消耗:18
291
+ - 九转回天:恢复自身35%体力,清除所有负面状态,并获得【绝对防御】(下回合免疫所有伤害)
292
+ 耐力消耗:10,法力消耗:32
293
+
294
+ --------------------------------------------------
295
+
296
+ 文档 16:
297
+ --------------------------------------------------
298
+ 角色:马岱
299
+ 攻击力:250
300
+ 防御力:120
301
+ 体力:100
302
+ 耐力:100
303
+ 法力:65
304
+ 闪避:30
305
+ 速度:75
306
+ 技能:
307
+ - 逆风斩:攻击力提升30%,持续3回合,必定命中
308
+ 耐力消耗:5,法力消耗:15
309
+ - 铁壁守护:防御力提升50%,持续2回合,并回复自身15%体力
310
+ 耐力消耗:8,法力消耗:25
311
+ - 毒龙箭:对单体目标造成120%伤害,附加中毒状态(目标攻击力降低3%,持续3回合)
312
+ 耐力消耗:6,法力消耗:20
313
+
314
+ --------------------------------------------------
315
+
316
+ 文档 17:
317
+ --------------------------------------------------
318
+ 角色:关兴
319
+ 攻击力:420
320
+ 防御力:120
321
+ 体力:100
322
+ 耐力:70
323
+ 法力:50
324
+ 闪避:15
325
+ 速度:80
326
+ 技能:
327
+ - 青龙斩:攻击力提升30%,持续2回合,必定命中
328
+ 耐力消耗:5,法力消耗:15
329
+ - 铁壁防御:防御力提升50%,并附带30%概率反弹伤害,持续1回合
330
+ 耐力消耗:8,法力消耗:25
331
+ - 战意复苏:恢复30%体力并解除所有异常状态,同时获得1次无视防御的攻击机会
332
+ 耐力消耗:10,法力消耗:30
333
+
334
+ --------------------------------------------------
335
+
336
+ 文档 18:
337
+ --------------------------------------------------
338
+ 角色:张苞
339
+ 攻击力:620
340
+ 防御力:140
341
+ 体力:100
342
+ 耐力:70
343
+ 法力:60
344
+ 闪避:30
345
+ 速度:85
346
+ 技能:
347
+ - 猛袭冲锋:攻击力提升30%,持续3回合,必定命中
348
+ 耐力消耗:8,法力消耗:20
349
+ - 铁壁防御:防御力提升50%,并附带30%概率反弹伤害,持续2回合
350
+ 耐力消耗:6,法力消耗:25
351
+ - 烈焰裂地:造成150%攻击力的范围伤害,目标附带灼烧状态(每回合损失2%体力)
352
+ 耐力消耗:10,法力消耗:30
353
+
354
+ --------------------------------------------------
355
+
356
+ 文档 19:
357
+ --------------------------------------------------
358
+ 角色:周仓
359
+ 攻击力:720
360
+ 防御力:160
361
+ 体力:100
362
+ 耐力:85
363
+ 法力:60
364
+ 闪避:35
365
+ 速度:90
366
+ 技能:
367
+ - 猛斧裂地:对单体目标造成150%攻击力的伤害,并有30%概率附加【灼烧】状态(每回合降低1%体力),持续2回合
368
+ 耐力消耗:10,法力消耗:20
369
+ - 铁壁守护:提升30%防御力,持续3回合,且本技能必定命中
370
+ 耐力消耗:5,法力消耗:15
371
+ - 战意复苏:恢复自身20%体力,并提升15%闪避率,持续1回合
372
+ 耐力消耗:8,法力消耗:25
373
+
374
+ --------------------------------------------------
375
+
376
+ 文档 20:
377
+ --------------------------------------------------
378
+ 角色:严颜
379
+ 攻击力:450
380
+ 防御力:120
381
+ 体力:100
382
+ 耐力:75
383
+ 法力:65
384
+ 闪避:15
385
+ 速度:85
386
+ 技能:
387
+ - 狂战怒吼:攻击力提升40%且必定命中,持续2回合
388
+ 耐力消耗:8,法力消耗:25
389
+ - 荆棘护体:防御力提升30%并反弹30%伤害,持续3回合
390
+ 耐力消耗:7,法力消耗:18
391
+ - 蚀骨毒箭:普通攻击附加中毒状态(目标攻击力每回合降低3%),持续5回合
392
+ 耐力消耗:5,法力消耗:12
393
+
394
+ --------------------------------------------------
395
+
396
+ 文档 21:
397
+ --------------------------------------------------
398
+ 角色:李严
399
+ 攻击力:415
400
+ 防御力:120
401
+ 体力:100
402
+ 耐力:70
403
+ 法力:60
404
+ 闪避:30
405
+ 速度:80
406
+ 技能:
407
+ - 破军击:攻击力提升30%(持续2回合),必定命中
408
+ 耐力消耗:5,法力消耗:20
409
+ - 铁壁术:防御力提升50%(持续3回合),并附加30%闪避率
410
+ 耐力消耗:8,法力消耗:15
411
+ - 焚天诀:消耗当前30%灵力造成双倍伤害,目标陷入灼烧状态(每回合损失1%体力)
412
+ 耐力消耗:10,法力消耗:30
413
+
414
+ --------------------------------------------------
415
+
416
+ 文档 22:
417
+ --------------------------------------------------
418
+ 角色:曹操
419
+ 攻击力:680
420
+ 防御力:160
421
+ 体力:100
422
+ 耐力:75
423
+ 法力:55
424
+ 闪避:25
425
+ 速度:85
426
+ 技能:
427
+ - 霸业斩:攻击力提升30%,持续3回合,必定命中
428
+ 耐力消耗:7,法力消耗:20
429
+ - 铁壁阵:防御力提升50%,并附加30%概率闪避普攻,持续2回合
430
+ 耐力消耗:8,法力消耗:25
431
+ - 天命复苏:恢复自身30%体力,并净化负面状态
432
+ 耐力消耗:10,法力消耗:30
433
+
434
+ --------------------------------------------------
435
+
436
+ 文档 23:
437
+ --------------------------------------------------
438
+ 角色:司马懿
439
+ 攻击力:240
440
+ 防御力:160
441
+ 体力:100
442
+ 耐力:75
443
+ 法力:65
444
+ 闪避:25
445
+ 速度:60
446
+ 技能:
447
+ - 虎豹骑阵:提升自身30%攻击力并附带必定命中,持续2回合
448
+ 耐力消耗:8,法力消耗:20
449
+ - 奇谋妙计:恢复自身15%体力并提升20%闪避,持续3回合
450
+ 耐力消耗:10,法力消耗:25
451
+ - 暗影毒计:普通攻击附加中毒状态(目标每回合降低3%攻击力),命中率+15%
452
+ 耐力消耗:5,法力消耗:18
453
+
454
+ --------------------------------------------------
455
+
456
+ 文档 24:
457
+ --------------------------------------------------
458
+ 角色:夏侯惇
459
+ 攻击力:600
460
+ 防御力:150
461
+ 体力:100
462
+ 耐力:80
463
+ 法力:60
464
+ 闪避:10
465
+ 速度:75
466
+ 技能:
467
+ - 刚烈:攻击增强30%,持续2回合,且本次攻击必定命中
468
+ 耐力消耗:5,法力消耗:20
469
+ - 铁壁:防御增强50%,持续1回合,并免疫下一次受到的暴击
470
+ 耐力消耗:8,法力消耗:15
471
+ - 火攻之计:对单体目标造成攻击力120%的伤害,并附加灼烧状态(每回合损失1%体力,持续3回合)
472
+ 耐力消耗:7,法力消耗:25
473
+
474
+ --------------------------------------------------
475
+
476
+ 文档 25:
477
+ --------------------------------------------------
478
+ 角色:夏侯渊
479
+ 攻击力:720
480
+ 防御力:150
481
+ 体���:100
482
+ 耐力:85
483
+ 法力:30
484
+ 闪避:15
485
+ 速度:90
486
+ 技能:
487
+ - 疾风突刺:提升50%攻击力,持续2回合,必定命中
488
+ 耐力消耗:5,法力消耗:15
489
+ - 铁壁防御:防御力提升100%,并恢复10%体力,持续1回合
490
+ 耐力消耗:10,法力消耗:25
491
+ - 烈焰斩:造成150%伤害,附加灼烧状态(每回合损失1%体力),暴击率提升20%
492
+ 耐力消耗:8,法力消耗:20
493
+
494
+ --------------------------------------------------
495
+
496
+ 文档 26:
497
+ --------------------------------------------------
498
+ 角色:张辽
499
+ 攻击力:750
500
+ 防御力:150
501
+ 体力:100
502
+ 耐力:80
503
+ 法力:60
504
+ 闪避:15
505
+ 速度:85
506
+ 技能:
507
+ - 霸王击:攻击力提升30%,持续2回合,必定命中
508
+ - 突袭:50%概率触发暴击,若暴击则额外附加目标当前体力5%的真实伤害
509
+ - 毒龙戟:普通攻击附加中毒状态,使目标攻击力降低3%(可叠加),持续3回合
510
+
511
+ --------------------------------------------------
512
+
513
+ 文档 27:
514
+ --------------------------------------------------
515
+ 角色:徐晃
516
+ 攻击力:180
517
+ 防御力:120
518
+ 体力:100
519
+ 耐力:100
520
+ 法力:40
521
+ 闪避:30
522
+ 速度:60
523
+ 技能:
524
+ - 破军之斧:攻击力提升50%,持续2回合,必定命中
525
+ 耐力消耗:5,法力消耗:15
526
+ - 铁壁防守:防御力提升40%,并附加30%闪避增益,持续3回合
527
+ 耐力消耗:5,法力消耗:20
528
+ - 焚天怒火:消耗当前50%耐力发动强力攻击(攻击力×200%),目标陷入灼烧状态(每回合损失1%体力),持续2回合
529
+ 耐力消耗:10,法力消耗:25
530
+
531
+ --------------------------------------------------
532
+
533
+ 文档 28:
534
+ --------------------------------------------------
535
+ 角色:张郃
536
+ 攻击力:420
537
+ 防御力:160
538
+ 体力:100
539
+ 耐力:70
540
+ 法力:65
541
+ 闪避:25
542
+ 速度:75
543
+ 技能:
544
+ - 磐石守御:防御力提升30%,持续3回合,且必定命中
545
+ 耐力消耗:5,法力消耗:20
546
+ - 毒牙箭雨:对敌方单体造成120%攻击伤害,并附加中毒状态(目标攻击力每回合降低3%,持续5回合)
547
+ 耐力消耗:8,法力消耗:25
548
+ - 固本培元:恢复自身30%体力,并提升20%闪避率,持续2回合
549
+ 耐力消耗:10,法力消耗:30
550
+
551
+ --------------------------------------------------
552
+
553
+ 文档 29:
554
+ --------------------------------------------------
555
+ 角色:许褚
556
+ 攻击力:720
557
+ 防御力:180
558
+ 体力:100
559
+ 耐力:80
560
+ 法力:30
561
+ 闪避:10
562
+ 速度:75
563
+ 技能:
564
+ - 虎痴怒击:攻击力提升30%,持续3回合,必定命中
565
+ 耐力消耗:5,法力消耗:15
566
+ - 不动如山:防御力提升50%,并附加30%闪避率,持续2回合
567
+ 耐力消耗:8,法力消耗:25
568
+ - 嗜血回复:攻击时30%概率恢复自身5%体力,并附加灼烧效果(每回合损失1%体力)
569
+ 耐力消耗:6,法力消耗:20
570
+
571
+ --------------------------------------------------
572
+
573
+ 文档 30:
574
+ --------------------------------------------------
575
+ 角色:典韦
576
+ 攻击力:720
577
+ 防御力:180
578
+ 体力:100
579
+ 耐力:85
580
+ 法力:40
581
+ 闪避:10
582
+ 速度:65
583
+ 技能:
584
+ - 无双猛击:攻击力提升30%(持续2回合),必定命中
585
+ 耐力消耗:5,法力消耗:15
586
+ - 铁壁防御:防御力提升50%(持续3回合),并附加30%闪避率
587
+ 耐力消耗:8,法力消耗:25
588
+ - 嗜血狂暴:暴击率提升至100%(1回合),攻击附加灼烧状态(每回合损失1%体力)
589
+ 耐力消耗:3,法力消耗:10
590
+
591
+ --------------------------------------------------
592
+
593
+ 文档 31:
594
+ --------------------------------------------------
595
+ 角色:曹仁
596
+ 攻击力:350
597
+ 防御力:190
598
+ 体力:100
599
+ 耐力:90
600
+ 法力:65
601
+ 闪避:25
602
+ 速度:60
603
+ 技能:
604
+ - 铁壁防御:防御力提升30%,持续3回合
605
+ 耐力消耗:5,法力消耗:15
606
+ - 反击阵:30%概率对攻击者造成50%攻击力的反击伤害
607
+ 耐力消耗:10,法力消耗:20
608
+ - 火攻之计:普通攻击附加灼烧状态,目标每回合损失1%体力,持续3回合
609
+ 耐力消耗:5,法力消耗:25
610
+
611
+ --------------------------------------------------
612
+
613
+ 文档 32:
614
+ --------------------------------------------------
615
+ 角色:曹洪
616
+ 攻击力:420
617
+ 防御力:130
618
+ 体力:100
619
+ 耐力:65
620
+ 法力:50
621
+ 闪避:25
622
+ 速度:75
623
+ 技能:
624
+ - 狂战怒吼:攻击力提升30%,持续3回合,且本次攻击必定命中
625
+ 耐力消耗:5,法力消耗:15
626
+ - 铁壁防御:防御力提升50%,持续2回合,并回复10%体力
627
+ 耐力消耗:8,法力消耗:20
628
+ - 毒牙击:造成120%攻击力的伤害,附带目标中毒(攻击降低3%),持续3回合
629
+ 耐力消耗:6,法力消耗:25
630
+
631
+ --------------------------------------------------
632
+
633
+ 文档 33:
634
+ --------------------------------------------------
635
+ 角色:曹真
636
+ 攻击力:650
637
+ 防御力:150
638
+ 体力:100
639
+ 耐力:75
640
+ 法力:60
641
+ 闪避:30
642
+ 速度:80
643
+ 技能:
644
+ - 雷霆破:攻击力提升30%,持续2回合,必定命中
645
+ 耐力消耗:8,法力消耗:25
646
+ - 铁壁术:防御��提升50%,并恢复自身15%体力
647
+ 耐力消耗:6,法力消耗:20
648
+ - 燎原火:对单体造成1.5倍伤害,50%概率使目标进入灼烧状态(每回合损失2%体力)
649
+ 耐力消耗:10,法力消耗:30
650
+
651
+ --------------------------------------------------
652
+
653
+ 文档 34:
654
+ --------------------------------------------------
655
+ 角色:曹爽
656
+ 攻击力:420
657
+ 防御力:110
658
+ 体力:100
659
+ 耐力:65
660
+ 法力:75
661
+ 闪避:25
662
+ 速度:85
663
+ 技能:
664
+ - 狂澜斩:攻击力提升30%,持续3回合,必定命中
665
+ - 毒牙箭:普通攻击附加中毒状态(目标攻击力降低3%),暴击率+15%
666
+ - 治愈之光:恢复自身35%体力,并提升20%闪避,持续2回合
667
+
668
+ --------------------------------------------------
669
+
670
+ 文档 35:
671
+ --------------------------------------------------
672
+ 角色:荀彧
673
+ 攻击力:150
674
+ 防御力:80
675
+ 体力:100
676
+ 耐力:70
677
+ 法力:90
678
+ 闪避:25
679
+ 速度:60
680
+ 技能:
681
+ - 王佐之才:提升自身30%攻击和20%防御,攻击附加中毒状态(降低目标3%攻击)
682
+ 耐力消耗:5,法力消耗:20
683
+ - 谋定天下:自身闪避率提升50%并加速30%,持续2回合(必中)
684
+ 耐力消耗:6,法力消耗:15
685
+ - 天命归心:恢复全体队友15%体力并净化负面状态,自身获得1次无敌效果
686
+ 耐力消耗:8,法力消耗:25
687
+
688
+ --------------------------------------------------
689
+
690
+ 文档 36:
691
+ --------------------------------------------------
692
+ 角色:荀攸
693
+ 攻击力:450
694
+ 防御力:160
695
+ 体力:100
696
+ 耐力:75
697
+ 法力:80
698
+ 闪避:35
699
+ 速度:65
700
+ 技能:
701
+ - 坚壁:防御力提升30%,持续2回合
702
+ 耐力消耗:5,法力消耗:15
703
+ - 养精蓄锐:恢复自身30%体力,并解除灼烧/中毒状态
704
+ 耐力消耗:8,法力消耗:20
705
+ - 火攻之计:对单体造成150%攻击伤害,附加灼烧状态(每回合损失1%体力,持续3回合),必定命中
706
+ 耐力消耗:10,法力消耗:30
707
+
708
+ --------------------------------------------------
709
+
710
+ 文档 37:
711
+ --------------------------------------------------
712
+ 角色:贾诩
713
+ 攻击力:200
714
+ 防御力:80
715
+ 体力:100
716
+ 耐力:75
717
+ 法力:90
718
+ 闪避:20
719
+ 速度:60
720
+ 技能:
721
+ - 毒雾术:对敌方全体施加中毒状态,目标攻击力降低3%,持续3回合,必定命中
722
+ 耐力消耗:5,法力消耗:25
723
+ - 火攻之计:对单体造成150%攻击力的伤害,并附加灼烧状态(每回合损失1%体力),暴击率提升20%
724
+ 耐力消耗:8,法力消耗:30
725
+ - 奇谋护盾:为自身施加护盾,防御力提升50%持续2回合,同时恢复10%体力
726
+ 耐力消耗:7,法力消耗:20
727
+
728
+ --------------------------------------------------
729
+
730
+ 文档 38:
731
+ --------------------------------------------------
732
+ 角色:程昱
733
+ 攻击力:320
734
+ 防御力:160
735
+ 体力:100
736
+ 耐力:50
737
+ 法力:80
738
+ 闪避:20
739
+ 速度:60
740
+ 技能:
741
+ - 谋定乾坤:提升30%攻击力并附加中毒状态(目标攻击力降低3%),持续3回合
742
+ 耐力消耗:7,法力消耗:25
743
+ - 固本培元:防御力提升50%,闪避率增加15%,持续2回合
744
+ 耐力消耗:8,法力消耗:20
745
+ - 韬光养晦:恢复自身30%体力并解除所有负面状态,本回合免疫控制
746
+ 耐力消耗:10,法力消耗:35
747
+
748
+ --------------------------------------------------
749
+
750
+ 文档 39:
751
+ --------------------------------------------------
752
+ 角色:司马师
753
+ 攻击力:320
754
+ 防御力:110
755
+ 体力:100
756
+ 耐力:75
757
+ 法力:85
758
+ 闪避:18
759
+ 速度:65
760
+ 技能:
761
+ - 谋略之士:提升自身攻击力30%,持续2回合,并有30%概率使目标灼烧(每回合降低1%体力)
762
+ 耐力消耗:8,法力消耗:25
763
+ - 明镜止水:提升防御力50%,持续3回合,并恢复10%体力
764
+ 耐力消耗:5,法力消耗:20
765
+ - 幽冥符咒:攻击附加中毒状态(降低目标3%攻击力),持续3回合,必定命中
766
+ 耐力消耗:10,法力消耗:30
767
+
768
+ --------------------------------------------------
769
+
770
+ 文档 40:
771
+ --------------------------------------------------
772
+ 角色:司马昭
773
+ 攻击力:350
774
+ 防御力:180
775
+ 体力:100
776
+ 耐力:80
777
+ 法力:75
778
+ 闪避:30
779
+ 速度:90
780
+ 技能:
781
+ - 权谋之刃:攻击力提升30%,持续2回合,并使目标中毒(攻击降低3%)
782
+ 耐力消耗:5,法力消耗:20
783
+ - 铁壁防线:防御力提升50%,持续3回合,并恢复自身5%体力
784
+ 耐力消耗:8,法力消耗:25
785
+ - 先机掌握:速度提升40%,持续1回合,下一次攻击必定暴击
786
+ 耐力消耗:7,法力消耗:15
787
+
788
+ --------------------------------------------------
789
+
790
+ 文档 41:
791
+ --------------------------------------------------
792
+ 角色:乐进
793
+ 攻击力:650
794
+ 防御力:150
795
+ 体力:100
796
+ 耐力:70
797
+ 法力:60
798
+ 闪避:15
799
+ 速度:80
800
+ 技能:
801
+ - 猛虎击:攻击增强30%,持续3回合,必定命中
802
+ 耐力消耗:5,法力消耗:20
803
+ - 铁壁术:防御力提升50%,持续2回合
804
+ 耐力消耗:8,法力消耗:15
805
+ - 烈焰斩:攻击附加灼烧状态(每回合降低1%体力���持续3回合),暴击率提升20%
806
+ 耐力消耗:7,法力消耗:25
807
+
808
+ --------------------------------------------------
809
+
810
+ 文档 42:
811
+ --------------------------------------------------
812
+ 角色:李典
813
+ 攻击力:720
814
+ 防御力:160
815
+ 体力:100
816
+ 耐力:80
817
+ 法力:60
818
+ 闪避:35
819
+ 速度:75
820
+ 技能:
821
+ - 崩山裂地:对单体目标造成150%攻击力的伤害,并使自身攻击提升30%(持续2回合),必定命中
822
+ 耐力消耗:10,法力消耗:30
823
+ - 铁壁护体:提升自身防御力50%(持续3回合),并有30%概率反弹受到的物理伤害
824
+ 耐力消耗:8,法力消耗:25
825
+ - 战吼:消耗全部灵力,为周围友军恢复15%体力,并提升全体队友15%攻击和速度(持续2回合)
826
+ 耐力消耗:5,法力消耗:35
827
+
828
+ --------------------------------------------------
829
+
830
+ 文档 43:
831
+ --------------------------------------------------
832
+ 角色:于禁
833
+ 攻击力:520
834
+ 防御力:160
835
+ 体力:100
836
+ 耐力:80
837
+ 法力:70
838
+ 闪避:20
839
+ 速度:60
840
+ 技能:
841
+ - 坚守防线:防御力提升30%,持续3回合,且必定命中敌人
842
+ 耐力消耗:5,法力消耗:20
843
+ - 毒刃:普通攻击附带20%概率使目标中毒(每回合降低3%攻击力),持续3回合
844
+ 耐力消耗:3,法力消耗:15
845
+ - 固本培元:恢复自身30%体力,并提升20%闪避率,持续2回合
846
+ 耐力消耗:10,法力消耗:30
847
+
848
+ --------------------------------------------------
849
+
850
+ 文档 44:
851
+ --------------------------------------------------
852
+ 角色:文聘
853
+ 攻击力:380
854
+ 防御力:160
855
+ 体力:100
856
+ 耐力:75
857
+ 法力:40
858
+ 闪避:22
859
+ 速度:65
860
+ 技能:
861
+ - 破军之刺:攻击提升30%,且必定命中,持续1回合
862
+ 耐力消耗:8,法力消耗:15
863
+ - 固垒坚守:防御提升50%,并附带30%闪避率,持续2回合
864
+ 耐力消耗:6,法力消耗:25
865
+ - 毒龙穿刺:普通攻击附加目标中毒状态(每秒减少3%攻击力),命中率+20%
866
+ 耐力消耗:5,法力消耗:18
867
+
868
+ --------------------------------------------------
869
+
870
+ 文档 45:
871
+ --------------------------------------------------
872
+ 角色:郭淮
873
+ 攻击力:180
874
+ 防御力:160
875
+ 体力:100
876
+ 耐力:75
877
+ 法力:50
878
+ 闪避:22
879
+ 速度:65
880
+ 技能:
881
+ - 壁垒坚守:防御力提升30%,持续2回合,且必定命中攻击者
882
+ 耐力消耗:8,法力消耗:15
883
+ - 缓兵之计:使自身速度提升20%,并有30%概率闪避物理攻击,持续3回合
884
+ 耐力消耗:6,法力消耗:25
885
+ - 枯木逢春:恢复自身15%体力,并附加灼烧状态(每回合损失3%体力)给随机敌方单位,持续2回合
886
+ 耐力消耗:10,法力消耗:30
887
+
888
+ --------------------------------------------------
889
+
890
+ 文档 46:
891
+ --------------------------------------------------
892
+ 角色:孙权
893
+ 攻击力:380
894
+ 防御力:160
895
+ 体力:100
896
+ 耐力:85
897
+ 法力:75
898
+ 闪避:12
899
+ 速度:78
900
+ 技能:
901
+ - 江东制霸:攻击力提升30%,持续3回合,必定命中
902
+ 耐力消耗:8,法力消耗:25
903
+ - 铁壁长江:防御力提升50%,并附加闪避增强20%,持续2回合
904
+ 耐力消耗:6,法力消耗:20
905
+ - 火攻连环:攻击附加灼烧状态(每回合损失1%体力),若暴击则额外降低目标10%防御,持续3回合
906
+ 耐力消耗:9,法力消耗:30
907
+
908
+ --------------------------------------------------
909
+
910
+ 文档 47:
911
+ --------------------------------------------------
912
+ 角色:周瑜
913
+ 攻击力:320
914
+ 防御力:95
915
+ 体力:100
916
+ 耐力:50
917
+ 法力:75
918
+ 闪避:25
919
+ 速度:70
920
+ 技能:
921
+ - 烈焰焚天:攻击附加灼烧状态(每回合降低1%体力),暴击率提升20%
922
+ 耐力消耗:8,法力消耗:25
923
+ - 铁壁连营:防御增强50%并提升闪避率15%,持续2回合
924
+ 耐力消耗:6,法力消耗:18
925
+ - 东风复苏:恢复自身30%体力并净化负面状态,下回合速度提升30%
926
+ 耐力消耗:7,法力消耗:22
927
+
928
+ --------------------------------------------------
929
+
930
+ 文档 48:
931
+ --------------------------------------------------
932
+ 角色:鲁肃
933
+ 攻击力:320
934
+ 防御力:180
935
+ 体力:100
936
+ 耐力:50
937
+ 法力:80
938
+ 闪避:20
939
+ 速度:60
940
+ 技能:
941
+ - 铁壁防御:提升30%防御力,持续3回合
942
+ 耐力消耗:5,法力消耗:20
943
+ - 治愈之光:恢复自身20%体力(仅限濒危时触发)
944
+ 耐力消耗:3,法力消耗:15
945
+ - 毒雾术:攻击附加中毒状态(目标攻击力降低3%,持续3回合)
946
+ 耐力消耗:7,法力消耗:25
947
+
948
+ --------------------------------------------------
949
+
950
+ 文档 49:
951
+ --------------------------------------------------
952
+ 角色:吕蒙
953
+ 攻击力:650
954
+ 防御力:120
955
+ 体力:100
956
+ 耐力:75
957
+ 法力:50
958
+ 闪避:15
959
+ 速度:85
960
+ 技能:
961
+ - 白衣渡江:攻击增强30%,并附加中毒状态(目标攻击力降低3%),持续3回合
962
+ 耐力消耗:5,法力消耗:20
963
+ - 江陵固守:防御增强40%,并恢复自身15%体力
964
+ 耐力消耗:10,法力消耗:25
965
+ - 烽火连营:速度增强50%,下一击必定暴击
966
+ 耐力��耗:8,法力消耗:30
967
+
968
+ --------------------------------------------------
969
+
970
+ 文档 50:
971
+ --------------------------------------------------
972
+ 角色:陆逊
973
+ 攻击力:580
974
+ 防御力:120
975
+ 体力:100
976
+ 耐力:75
977
+ 法力:85
978
+ 闪避:25
979
+ 速度:85
980
+ 技能:
981
+ - 火攻之计:造成攻击力120%的伤害,并使目标陷入灼烧状态(每回合降低1%体力,持续3回合)
982
+ 耐力消耗:5,法力消耗:25
983
+ - 锦囊护体:提升自身防御力50%,持续2回合,并有30%概率闪避下一次攻击
984
+ 耐力消耗:3,法力消耗:15
985
+ - 调息养神:恢复自身30%体力,并解除灼烧/中毒状态,本回合速度提升20%
986
+ 耐力消耗:8,法力消耗:20
987
+
988
+ --------------------------------------------------
989
+
990
+ 文档 51:
991
+ --------------------------------------------------
992
+ 角色:太史慈
993
+ 攻击力:720
994
+ 防御力:140
995
+ 体力:100
996
+ 耐力:80
997
+ 法力:60
998
+ 闪避:35
999
+ 速度:85
1000
+ 技能:
1001
+ - 箭雨风暴:对单体目标造成200%攻击力的物理伤害,并附加灼烧状态(每回合降低1%体力),持续3回合
1002
+ 耐力消耗:8,法力消耗:25
1003
+ - 铁壁之御:提升自身30%防御力,持续2回合,且必定命中
1004
+ 耐力消耗:5,法力消耗:15
1005
+ - 野性复苏:恢复自身30%体力,并提升20%闪避率,持续1回合
1006
+ 耐力消耗:10,法力消耗:30
1007
+
1008
+ --------------------------------------------------
1009
+
1010
+ 文档 52:
1011
+ --------------------------------------------------
1012
+ 角色:甘宁
1013
+ 攻击力:620
1014
+ 防御力:140
1015
+ 体力:100
1016
+ 耐力:80
1017
+ 法力:60
1018
+ 闪避:35
1019
+ 速度:75
1020
+ 技能:
1021
+ - 锦帆突袭:提升30%攻击力并附带暴击效果,持续2回合
1022
+ 耐力消耗:7,法力消耗:20
1023
+ - 毒龙破:造成150%伤害并使目标中毒(每回合降低3%攻击力,持续3回合)
1024
+ 耐力消耗:8,法力消耗:25
1025
+ - 激浪回旋:恢复自身20%体力并提升50%闪避率,持续1回合
1026
+ 耐力消耗:7,法力消耗:30
1027
+
1028
+ --------------------------------------------------
1029
+
1030
+ 文档 53:
1031
+ --------------------------------------------------
1032
+ 角色:韩当
1033
+ 攻击力:350
1034
+ 防御力:150
1035
+ 体力:100
1036
+ 耐力:75
1037
+ 法力:50
1038
+ 闪避:15
1039
+ 速度:60
1040
+ 技能:
1041
+ - 猛击:攻击力提升30%,持续3回合,必定命中
1042
+ 耐力消耗:5,法力消耗:15
1043
+ - 铁壁防御:防御力提升50%,并附加50%概率反弹伤害,持续2回合
1044
+ 耐力消耗:10,法力消耗:25
1045
+ - 战吼:全队攻击附带灼烧效果(每回合损失1%体力),自身速度提升20%,持续3回合
1046
+ 耐力消耗:8,法力消耗:20
1047
+
1048
+ --------------------------------------------------
1049
+
1050
+ 文档 54:
1051
+ --------------------------------------------------
1052
+ 角色:周泰
1053
+ 攻击力:680
1054
+ 防御力:170
1055
+ 体力:100
1056
+ 耐力:75
1057
+ 法力:55
1058
+ 闪避:35
1059
+ 速度:85
1060
+ 技能:
1061
+ - 不屈战意:攻击力提升30%,持续2回合,并附带20%暴击率加成
1062
+ 耐力消耗:8,法力消耗:20
1063
+ - 铁壁守护:防御力提升50%,同时闪避率增加15%,持续3回合
1064
+ 耐力消耗:5,法力消耗:15
1065
+ - 浴血重生:消耗当前30%体力值,瞬间恢复等量体力并清除所有负面状态
1066
+ 耐力消耗:10,法力消耗:30
1067
+
1068
+ --------------------------------------------------
1069
+
1070
+ 文档 55:
1071
+ --------------------------------------------------
1072
+ 角色:潘璋
1073
+ 攻击力:320
1074
+ 防御力:160
1075
+ 体力:100
1076
+ 耐力:85
1077
+ 法力:70
1078
+ 闪避:35
1079
+ 速度:65
1080
+ 技能:
1081
+ - 钢骨:防御力提升30%,持续3回合
1082
+ 耐力消耗:5,法力消耗:15
1083
+ - 毒影箭:射程攻击造成120%伤害,附带目标中毒(攻击降低3%),持续2回合
1084
+ 耐力消耗:3,法力消耗:20
1085
+ - 铁壁守护:防御力提升50%且闪避率+20%,持续2回合,但期间无法主动攻击
1086
+ 耐力消耗:10,法力消耗:25
1087
+
1088
+ --------------------------------------------------
1089
+
1090
+ 文档 56:
1091
+ --------------------------------------------------
1092
+ 角色:朱然
1093
+ 攻击力:415
1094
+ 防御力:150
1095
+ 体力:100
1096
+ 耐力:75
1097
+ 法力:60
1098
+ 闪避:25.0
1099
+ 速度:85
1100
+ 技能:
1101
+ - 火龙怒击:攻击力提升50%,暴击率+20%,持续2回合;攻击附带灼烧状态(每回合造成目标当前体力1%的伤害)
1102
+ 耐力消耗:8,法力消耗:25
1103
+ - 玄甲护体:防御力提升100%,并恢复自身10%体力;若受到攻击,有30%概率反射50%伤害给攻击者
1104
+ 耐力消耗:6,法力消耗:30
1105
+ - 疾风步:速度提升100%,闪避率+50%,持续1回合;本回合结束时清除所有负面状态
1106
+ 耐力消耗:3,法力消耗:15
1107
+
1108
+ --------------------------------------------------
1109
+
1110
+ 文档 57:
1111
+ --------------------------------------------------
1112
+ 角色:张昭
1113
+ 攻击力:520
1114
+ 防御力:140
1115
+ 体力:100
1116
+ 耐力:75
1117
+ 法力:60
1118
+ 闪避:25
1119
+ 速度:85
1120
+ 技能:
1121
+ - 破军击:攻击力提升30%并附带暴击(2回合)
1122
+ 耐力消耗:5,法力消耗:20
1123
+ - 铁壁术:防御力提升50%并附带30%概率闪避(3回合)
1124
+ 耐力消耗:8,法力消耗:25
1125
+ - 涅槃之火:恢复自身20%���力,并使下次攻击附加灼烧状态(每回合降低1%体力)
1126
+ 耐力消耗:7,法力消耗:30
1127
+
1128
+ --------------------------------------------------
1129
+
1130
+ 文档 58:
1131
+ --------------------------------------------------
1132
+ 角色:步骘
1133
+ 攻击力:450
1134
+ 防御力:120
1135
+ 体力:100
1136
+ 耐力:75
1137
+ 法力:85
1138
+ 闪避:30
1139
+ 速度:80
1140
+ 技能:
1141
+ - 火攻计:对单体目标造成120%攻击力的伤害,并附加灼烧状态(每回合降低1%体力),持续3回合
1142
+ 耐力消耗:5,法力消耗:25
1143
+ - 镇静仙术:提升自身30%防御力,并增加20%闪避率,持续2回合
1144
+ 耐力消耗:7,法力消耗:20
1145
+ - 安魂咒:恢复自身25%体力,并解除灼烧/中毒状态
1146
+ 耐力消耗:6,法力消耗:30
1147
+
1148
+ --------------------------------------------------
1149
+
1150
+ 文档 59:
1151
+ --------------------------------------------------
1152
+ 角色:陆抗
1153
+ 攻击力:750
1154
+ 防御力:150
1155
+ 体力:100
1156
+ 耐力:80
1157
+ 法力:65
1158
+ 闪避:30
1159
+ 速度:85
1160
+ 技能:
1161
+ - 破军斩:攻击力提升30%,持续3回合,必定命中
1162
+ 耐力消耗:5,法力消耗:20
1163
+ - 铁壁术:防御力提升50%,并附带30%概率反弹伤害,持续2回合
1164
+ 耐力消耗:8,法力消耗:25
1165
+ - 毒龙箭:发射毒箭造成120%伤害,目标中毒(每回合降低3%攻击力)持续3回合
1166
+ 耐力消耗:6,法力消耗:15
1167
+
1168
+ --------------------------------------------------
1169
+
1170
+ 文档 60:
1171
+ --------------------------------------------------
1172
+ 角色:孙策
1173
+ 攻击力:600
1174
+ 防御力:150
1175
+ 体力:100
1176
+ 耐力:80
1177
+ 法力:60
1178
+ 闪避:15
1179
+ 速度:75
1180
+ 技能:
1181
+ - 霸王咆哮:攻击力提升30%,持续3回合,且必定命中
1182
+ 耐力消耗:5,法力消耗:20
1183
+ - 铁壁守护:防御力提升50%,持续2回合,并附带30%闪避增强
1184
+ 耐力消耗:8,法力消耗:25
1185
+ - 烈焰斩:造成150%攻击力的单体伤害,附加灼烧状态(每回合损失1%体力,持续3回合),30%概率触发暴击
1186
+ 耐力消耗:7,法力消耗:15
1187
+
1188
+ --------------------------------------------------
1189
+
1190
+ 文档 61:
1191
+ --------------------------------------------------
1192
+ 角色:孙尚香
1193
+ 攻击力:350
1194
+ 防御力:80
1195
+ 体力:100
1196
+ 耐力:70
1197
+ 法力:30
1198
+ 闪避:30
1199
+ 速度:90
1200
+ 技能:
1201
+ - 烈焰箭:攻击增强30%并附加灼烧状态(每回合降低1%体力)
1202
+ - 凤舞九天:提升自身闪避率20%且速度增加20%,持续2回合
1203
+ - 治愈之光:恢复自身30%体力并解除灼烧状态
1204
+
1205
+ --------------------------------------------------
1206
+
1207
+ 文档 62:
1208
+ --------------------------------------------------
1209
+ 角色:大乔
1210
+ 攻击力:320
1211
+ 防御力:90
1212
+ 体力:100
1213
+ 耐力:50
1214
+ 法力:65
1215
+ 闪避:0.15
1216
+ 速度:75
1217
+ 技能:
1218
+ - 守护之盾:提升30%防御力,持续2回合,必定命中
1219
+ - 治愈之风:恢复自身25%体力,并附加闪避增强15%持续1回合
1220
+ - 烈焰之触:攻击附加灼烧状态(每回合损失1%体力),暴击率提升20%持续3回合
1221
+
1222
+ --------------------------------------------------
1223
+
1224
+ 文档 63:
1225
+ --------------------------------------------------
1226
+ 角色:小乔
1227
+ 攻击力:350
1228
+ 防御力:80
1229
+ 体力:100
1230
+ 耐力:65
1231
+ 法力:90
1232
+ 闪避:35
1233
+ 速度:75
1234
+ 技能:
1235
+ - 凤求凰:单体攻击附加中毒状态(降低3%攻击),暴击率提升20%
1236
+ 耐力消耗:8,法力消耗:25
1237
+ - 灵雀屏障:防御力提升30%,闪避率额外增加15%,持续2回合
1238
+ 耐力消耗:5,法力消耗:15
1239
+ - 治愈之风:恢复自身15%体力并清除负面状态,速度提升20%持续1回合
1240
+ 耐力消耗:10,法力消耗:20
1241
+
1242
+ --------------------------------------------------
1243
+
1244
+ 文档 64:
1245
+ --------------------------------------------------
1246
+ 角色:诸葛恪
1247
+ 攻击力:320
1248
+ 防御力:160
1249
+ 体力:100
1250
+ 耐力:65
1251
+ 法力:75
1252
+ 闪避:25
1253
+ 速度:85
1254
+ 技能:
1255
+ - 石兵八阵:召唤石阵提升自身防御50%,持续2回合(必定命中)
1256
+ 耐力消耗:8,法力消耗:25
1257
+ - 空城抚琴:回复自身15%体力并提升闪避率30%,持续1回合(暴击抗性+30%)
1258
+ 耐力消耗:6,法力消耗:30
1259
+ - 东风劫火:消耗自身20%当前体力,对单体目标造成1.5倍攻击伤害并附加灼烧状态(每回合损失1.2%体力)
1260
+ 耐力消耗:10,法力消耗:35
1261
+
1262
+ --------------------------------------------------
1263
+
1264
+ 文档 65:
1265
+ --------------------------------------------------
1266
+ 角色:董卓
1267
+ 攻击力:650
1268
+ 防御力:180
1269
+ 体力:100
1270
+ 耐力:75
1271
+ 法力:50
1272
+ 闪避:20
1273
+ 速度:60
1274
+ 技能:
1275
+ - 霸者重击:攻击力提升30%,持续3回合(必定命中)
1276
+ 耐力消耗:5,法力消耗:15
1277
+ - 修罗护体:防御力提升50%,并附加50%概率反弹伤害,持续2回合
1278
+ 耐力消耗:8,法力消耗:25
1279
+ - 魔血复苏:消耗当前30%体力值,瞬间恢复等量体力(最低保留10%体力)
1280
+ 耐力消耗:10,法力消耗:30
1281
+
1282
+ --------------------------------------------------
1283
+
1284
+ 文档 66:
1285
+ --------------------------------------------------
1286
+ 角色:吕布
1287
+ 攻击力:780
1288
+ 防御力:160
1289
+ 体力:100
1290
+ 耐力:85
1291
+ 法力:30
1292
+ 闪避:15
1293
+ 速度:90
1294
+ 技能:
1295
+ - 无双乱舞:对单体目标造成300%攻击的物理伤害,附加灼烧状态(每回合降低1%体力),必定命中
1296
+ 耐力消耗:8,法力消耗:25
1297
+ - 魔神降世:防御力提升50%,持续3回合,并反击所有攻击者(100%触发)
1298
+ 耐力消耗:6,法力消耗:18
1299
+ - 赤兔冲锋:速度提升100%持续1回合,本回合攻击附带中毒状态(目标攻击力降低3%)
1300
+ 耐力消耗:10,法力消耗:12
1301
+
1302
+ --------------------------------------------------
1303
+
1304
+ 文档 67:
1305
+ --------------------------------------------------
1306
+ 角色:貂蝉
1307
+ 攻击力:600
1308
+ 防御力:120
1309
+ 体力:100
1310
+ 耐力:100
1311
+ 法力:80
1312
+ 闪避:35
1313
+ 速度:85
1314
+ 技能:
1315
+ - 闭月之舞:提升30%闪避率,持续3回合(每回合衰减10%)
1316
+ 耐力消耗:5,法力消耗:20
1317
+ - 倾城之魅:对单体造成250%攻击力的伤害,并附加【中毒】状态(目标攻击降低3%)持续5回合
1318
+ 耐力消耗:8,法力消耗:25
1319
+ - 疗伤抚心:恢复自身30%体力,并解除所有负面状态
1320
+ 耐力消耗:6,法力消耗:30
1321
+
1322
+ --------------------------------------------------
1323
+
1324
+ 文档 68:
1325
+ --------------------------------------------------
1326
+ 角色:袁绍
1327
+ 攻击力:215
1328
+ 防御力:120
1329
+ 体力:100
1330
+ 耐力:70
1331
+ 法力:50
1332
+ 闪避:15
1333
+ 速度:65
1334
+ 技能:
1335
+ - 霸业雄心:消耗灵力释放王霸之气,2回合内攻击力提升50%且必定命中,自身速度临时+20%
1336
+ 耐力消耗:7,法力消耗:25
1337
+ - 坚壁清野:凝聚防线形成护盾,3回合内防御力提升80%,并将所受30%伤害转化为耐力消耗
1338
+ 耐力消耗:10,法力消耗:30
1339
+ - 河北复兴:召唤河北精锐加入战场,全体友军恢复15%体力,自身获得『每回合自动恢复5%耐力』状态持续3回合
1340
+ 耐力消耗:5,法力消耗:20
1341
+
1342
+ --------------------------------------------------
1343
+
1344
+ 文档 69:
1345
+ --------------------------------------------------
1346
+ 角色:公孙瓒
1347
+ 攻击力:620
1348
+ 防御力:120
1349
+ 体力:100
1350
+ 耐力:80
1351
+ 法力:70
1352
+ 闪避:35
1353
+ 速度:90
1354
+ 技能:
1355
+ - 白马突袭:攻击增强50%,必定命中,并附加中毒状态(降低目标3%攻击)
1356
+ 耐力消耗:5,法力消耗:20
1357
+ - 坚壁清野:防御增强50%,持续2回合,并恢复自身10%体力
1358
+ 耐力消耗:8,法力消耗:25
1359
+ - 烈焰焚营:对前方扇形区域造成120%伤害,附加灼烧状态(每回合降低1%体力)
1360
+ 耐力消耗:7,法力消耗:15
1361
+
1362
+ --------------------------------------------------
1363
+
1364
+ 文档 70:
1365
+ --------------------------------------------------
1366
+ 角色:刘表
1367
+ 攻击力:550
1368
+ 防御力:160
1369
+ 体力:100
1370
+ 耐力:70
1371
+ 法力:80
1372
+ 闪避:10
1373
+ 速度:65
1374
+ 技能:
1375
+ - 荆襄固守:防御力提升30%,持续2回合(可叠加)
1376
+ - 仁政疗伤:恢复自身15%体力并附加【每回合回复5%体力】,持续3回合
1377
+ - 火攻计略:消耗30%灵力释放火焰箭雨,对敌方全体造成攻击力80%的伤害,并附加【灼烧】状态(每回合损失1%体力)
1378
+
1379
+ --------------------------------------------------
1380
+
1381
+ 文档 71:
1382
+ --------------------------------------------------
1383
+ 角色:华雄
1384
+ 攻击力:620
1385
+ 防御力:150
1386
+ 体力:100
1387
+ 耐力:70
1388
+ 法力:60
1389
+ 闪避:20
1390
+ 速度:85
1391
+ 技能:
1392
+ - 狂斧裂地:攻击力提升30%(持续2回合),必定命中
1393
+ 耐力消耗:8,法力消耗:25
1394
+ - 血怒狂暴:防御力降低40%换取攻击力翻倍(持续3回合),每回合结束时损失当前体力5%
1395
+ 耐力消耗:10,法力消耗:30
1396
+ - 震雷斩:消耗自身当前30%体力发动强力单体攻击,附带30%概率触发灼烧状态(每回合损失1%体力)
1397
+ 耐力消耗:5,法力消耗:18
1398
+
1399
+ --------------------------------------------------
1400
+
1401
+ 文档 72:
1402
+ --------------------------------------------------
1403
+ 角色:颜良
1404
+ 攻击力:620
1405
+ 防御力:150
1406
+ 体力:100
1407
+ 耐力:80
1408
+ 法力:30
1409
+ 闪避:10
1410
+ 速度:60
1411
+ 技能:
1412
+ - 狂暴突袭:攻击力提升50%,持续3回合(必定命中)
1413
+ - 铁壁防御:防御力提升30%,持续2回合并附带30%概率反弹伤害
1414
+ - 毒牙裂斩:造成150%攻击力的物理伤害,并使目标中毒(每回合降低3%攻击力,持续3回合)
1415
+
1416
+ --------------------------------------------------
1417
+
1418
+ 文档 73:
1419
+ --------------------------------------------------
1420
+ 角色:文丑
1421
+ 攻击力:620
1422
+ 防御力:150
1423
+ 体力:100
1424
+ 耐力:70
1425
+ 法力:40
1426
+ 闪避:30
1427
+ 速度:85
1428
+ 技能:
1429
+ - 霸烈斩:攻击强度提升50%,持续3回合,必定命中
1430
+ 耐力消耗:8,法力消耗:25
1431
+ - 固守:防御力提升100%,并恢复10%体力,持续2回合
1432
+ 耐力消耗:5,法力消耗:15
1433
+ - 毒刃:普通攻击附加中毒状态,目标每回合攻击降低3%,持续5回合
1434
+ 耐力消耗:3,法力消耗:10
1435
+
1436
+ --------------------------------------------------
1437
+
1438
+ 文档 74:
1439
+ --------------------------------------------------
1440
+ 角色:高顺
1441
+ 攻击力:520
1442
+ 防御力:180
1443
+ 体力:100
1444
+ 耐力:80
1445
+ 法力:30
1446
+ 闪避:10
1447
+ 速度:60
1448
+ 技能:
1449
+ - 坚壁清野:提升30%防御力,持续3回合
1450
+ 耐力消耗:5,法力消耗:20
1451
+ - 陷阵之志:普通攻击附加中毒状态(目标攻击力降低3%,每回合叠加)
1452
+ 耐力消耗:7,法力消耗:25
1453
+ - 重整旗鼓:消耗自身30%当前体力,为全队恢复等同数值的体力
1454
+ 耐力消耗:10,法力消耗:30
1455
+
1456
+ --------------------------------------------------
1457
+
1458
+ 文档 75:
1459
+ --------------------------------------------------
1460
+ 角色:审配
1461
+ 攻击力:200
1462
+ 防御力:150
1463
+ 体力:100
1464
+ 耐力:80
1465
+ 法力:75
1466
+ 闪避:20
1467
+ 速度:60
1468
+ 技能:
1469
+ - 坚壁清野:防御增强30%,持续2回合
1470
+ 耐力消耗:5,法力消耗:15
1471
+ - 粮草调度:恢复自身15%体力,并提升闪避10%
1472
+ 耐力消耗:3,法力消耗:20
1473
+ - 毒计攻心:攻击附加中毒状态(目标攻击降低3%,持续3回合)
1474
+ 耐力消耗:7,法力消耗:25
1475
+
1476
+ --------------------------------------------------
1477
+
1478
+ 文档 76:
1479
+ --------------------------------------------------
1480
+ 角色:逢纪
1481
+ 攻击力:320
1482
+ 防御力:90
1483
+ 体力:100
1484
+ 耐力:75
1485
+ 法力:85
1486
+ 闪避:25
1487
+ 速度:55
1488
+ 技能:
1489
+ - 毒雾术:释放毒雾攻击目标,造成110%攻击力的伤害,并使目标中毒(降低3%攻击力,持续3回合)
1490
+ 耐力消耗:7,法力消耗:25
1491
+ - 天机策:短暂预判战场局势,提升自身30%闪避率和20%速度,持续2回合
1492
+ 耐力消耗:5,法力消耗:20
1493
+ - 缚魂咒:锁定目标灵魂,接下来3次攻击必定命中且附带灼烧效果(每回合损失2%体力),技能结束后目标陷入眩晕1回合
1494
+ 耐力消耗:10,法力消耗:35
1495
+
1496
+ --------------------------------------------------
1497
+
1498
+ 文档 77:
1499
+ --------------------------------------------------
1500
+ 角色:郭图
1501
+ 攻击力:480
1502
+ 防御力:120
1503
+ 体力:100
1504
+ 耐力:65
1505
+ 法力:75
1506
+ 闪避:25
1507
+ 速度:85
1508
+ 技能:
1509
+ - 烈焰击:攻击附加灼烧状态(每回合降低1%体力),必定命中,持续3回合
1510
+ 耐力消耗:7,法力消耗:25
1511
+ - 八卦阵:防御增强50%,闪避提升20%,持续2回合
1512
+ - 天机策:速度增强30%,暴击率提升20%,持续5回合
1513
+ 耐力消耗:5,法力消耗:35
1514
+
1515
+ --------------------------------------------------
1516
+
1517
+ 文档 78:
1518
+ --------------------------------------------------
1519
+ 角色:许攸
1520
+ 攻击力:150
1521
+ 防御力:50
1522
+ 体力:100
1523
+ 耐力:70
1524
+ 法力:85
1525
+ 闪避:20
1526
+ 速度:60
1527
+ 技能:
1528
+ - 策谋攻势:提升30%攻击力,持续2回合,必定命中
1529
+ 耐力消耗:5,法力消耗:20
1530
+ - 固守之策:防御力提升50%,并附带30%闪避增强,持续3回合
1531
+ 耐力消耗:10,法力消耗:25
1532
+ - 火攻之计:造成120%攻击力的伤害,并附加灼烧状态(每回合损失1%体力,持续3回合)
1533
+ 耐力消耗:8,法力消耗:30
1534
+
1535
+ --------------------------------------------------
1536
+
1537
+ 文档 79:
1538
+ --------------------------------------------------
1539
+ 角色:纪灵
1540
+ 攻击力:600
1541
+ 防御力:120
1542
+ 体力:100
1543
+ 耐力:70
1544
+ 法力:65
1545
+ 闪避:25
1546
+ 速度:80
1547
+ 技能:
1548
+ - 破军斩:单体攻击造成250%武器伤害,暴击率提升50%
1549
+ 耐力消耗:5,法力消耗:20
1550
+ - 灵甲护体:防御力提升30%,持续2回合
1551
+ 耐力消耗:8,法力消耗:15
1552
+ - 焚天怒:对前方扇形区域造成180%武器伤害,并附加灼烧状态(每回合损失1%体力)
1553
+ 耐力消耗:10,法力消耗:30
1554
+
1555
+ --------------------------------------------------
1556
+
1557
+ 文档 80:
1558
+ --------------------------------------------------
1559
+ 角色:蔡瑁
1560
+ 攻击力:425
1561
+ 防御力:155
1562
+ 体力:100
1563
+ 耐力:80
1564
+ 法力:30
1565
+ 闪避:20
1566
+ 速度:60
1567
+ 技能:
1568
+ - 铁壁防御:防御力提升30%,持续2回合
1569
+ 耐力消耗:5,法力消耗:15
1570
+ - 水军整备:恢复自身10%体力,并提升闪避率15%
1571
+ 耐力消耗:10,法力消耗:20
1572
+ - 毒箭齐射:发射毒箭攻击敌方单体,造成1.2倍伤害并附加中毒状态(目标攻击力每回合降低3%)
1573
+ 耐力消耗:8,法力消耗:25
1574
+
1575
+ --------------------------------------------------
1576
+
1577
+ 文档 81:
1578
+ --------------------------------------------------
1579
+ 角色:张允
1580
+ 攻击力:542
1581
+ 防御力:115
1582
+ 体力:100
1583
+ 耐力:65
1584
+ 法力:83
1585
+ 闪避:18.5
1586
+ 速度:89
1587
+ 技能:
1588
+ - 破军斩:攻击力提升50%,持续3回合(必定命中)
1589
+ 耐力消耗:8,法力消耗:25
1590
+ - 玄冥护体:防御力提升100%,并附加30%闪避率,持续2回合
1591
+ 耐力消耗:6,法力消耗:18
1592
+ - 燎原火:攻击附带灼烧状态(每回合损失5%体力),自身速度提升20%
1593
+ 耐力消耗:4,法力消耗:30
1594
+
1595
+ --------------------------------------------------
1596
+
1597
+ 文档 82:
1598
+ --------------------------------------------------
1599
+ 角色:陶谦
1600
+ 攻击力:320
1601
+ 防御力:150
1602
+ 体力:100
1603
+ 耐力:70
1604
+ 法力:60
1605
+ 闪避:30
1606
+ 速度:60
1607
+ 技能:
1608
+ - 坚守防线:提升30%防御力,持续3回合
1609
+ 耐力消耗:5,法力消耗:20
1610
+ - 疗伤术:恢复自身20%体力,并解除负面状态
1611
+ 耐力消耗:3,法力消耗:15
1612
+ - 毒雾侵袭:普通攻击附加中毒状态,目标攻击力每回合降低3%
1613
+ 耐力消耗:8,法力消耗:25
1614
+
1615
+ --------------------------------------------------
1616
+
1617
+ 文档 83:
1618
+ --------------------------------------------------
1619
+ 角色:刘繇
1620
+ 攻击力:350
1621
+ 防御力:120
1622
+ 体力:100
1623
+ 耐力:60
1624
+ 法力:80
1625
+ 闪避:20
1626
+ 速度:70
1627
+ 技能:
1628
+ - 破军之击:攻击力提升30%,持续3回合,必中
1629
+ 耐力消耗:5,法力消耗:20
1630
+ - 固守之阵:防御力提升50%并恢复10%体力,持续2回合
1631
+ 耐力消耗:8,法力消耗:25
1632
+ - 毒雾侵袭:攻击附加中毒状态(目标攻击力降低3%),持续5回合,命中率+20%
1633
+ 耐力消耗:3,法力消耗:15
1634
+
1635
+ --------------------------------------------------
1636
+
1637
+ 文档 84:
1638
+ --------------------------------------------------
1639
+ 角色:祝融夫人
1640
+ 攻击力:680
1641
+ 防御力:140
1642
+ 体力:100
1643
+ 耐力:70
1644
+ 法力:60
1645
+ 闪避:25
1646
+ 速度:85
1647
+ 技能:
1648
+ - 炎龙怒击:对单体目标造成150%攻击力的火焰伤害,并附加灼烧状态(每回合降低1%体力,持续3回合),必定命中
1649
+ 耐力消耗:8,法力消耗:25
1650
+ - 火神庇护:提升自身30%防御力,持续2回合,并解除负面状态
1651
+ 耐力消耗:5,法力消耗:15
1652
+ - 凤凰涅槃:恢复自身30%体力,获得闪避增强效果(提升20%闪避率)持续2回合,速度提升20%
1653
+ 耐力消耗:10,法力消耗:30
1654
+
1655
+ --------------------------------------------------
1656
+
1657
+ 文档 85:
1658
+ --------------------------------------------------
1659
+ 角色:兀突骨
1660
+ 攻击力:200
1661
+ 防御力:190
1662
+ 体力:100
1663
+ 耐力:60
1664
+ 法力:70
1665
+ 闪避:10
1666
+ 速度:40
1667
+ 技能:
1668
+ - 藤甲防御:防御力提升30%,持续3回合,且受到攻击时30%概率反弹10%伤害
1669
+ 耐力消耗:5,法力消耗:20
1670
+ - 毒矛反噬:攻击附加中毒状态(目标攻击力降低3%),并使自身闪避率提升20%持续2回合
1671
+ 耐力消耗:8,法力消耗:15
1672
+ - 血藤恢复:消耗当前30%耐力值转换为体力,并清除负面状态
1673
+ 耐力消耗:10,法力消耗:30
1674
+
1675
+ --------------------------------------------------
1676
+
1677
+ 文档 86:
1678
+ --------------------------------------------------
1679
+ 角色:木鹿大王
1680
+ 攻击力:520
1681
+ 防御力:160
1682
+ 体力:100
1683
+ 耐力:80
1684
+ 法力:70
1685
+ 闪避:35
1686
+ 速度:65
1687
+ 技能:
1688
+ - 藤鞭狂舞:攻击力提升30%,持续3回合,必定命中
1689
+ - 木甲护体:防御力提升50%,并附加30%反弹伤害,持续2回合
1690
+ - 自然复苏:回复自身20%体力,并清除所有负面状态
1691
+
1692
+ --------------------------------------------------
1693
+
1694
+ 文档 87:
1695
+ --------------------------------------------------
1696
+ 角色:沙摩柯
1697
+ 攻击力:620
1698
+ 防御力:140
1699
+ 体力:100
1700
+ 耐力:75
1701
+ 法力:55
1702
+ 闪避:35
1703
+ 速度:65
1704
+ 技能:
1705
+ - 狂斧裂地:攻击力提升30%,持续2回合,且必定命中
1706
+ 耐力消耗:8,法力消耗:20
1707
+ - 荆棘护体:防御力提升40%并反弹30%所受伤害,持续3回合
1708
+ 耐力消耗:10,法力消耗:25
1709
+ - 血怒狂暴:消耗当前50%体力值,获得『暴击率+25%』且『攻击附加灼烧状态』,持续到战斗结束
1710
+ 耐力消耗:7,法力消耗:30
1711
+
1712
+ --------------------------------------------------
1713
+
1714
+ 文档 88:
1715
+ --------------------------------------------------
1716
+ 角色:轲比能
1717
+ 攻击力:680
1718
+ 防御力:140
1719
+ 体力:100
1720
+ 耐力:75
1721
+ 法力:40
1722
+ 闪避:15
1723
+ 速度:85
1724
+ 技能:
1725
+ - 狼袭猛击:攻击力提升30%,持续3回合,且必定命中
1726
+ 耐力消耗:5,法力消耗:20
1727
+ - 铁骑防御:防御力提升50%,并附加30%闪避率,持续2回合
1728
+ 耐力消耗:8,法力消耗:25
1729
+ - 草原之怒:攻击附加灼烧状态(每回合损失1%体力),自身暴击率提升20%,持续3回合
1730
+ 耐力消耗:7,法力消耗:15
1731
+
1732
+ --------------------------------------------------
1733
+
1734
+ 文档 89:
1735
+ --------------------------------------------------
1736
+ 角色:左慈
1737
+ 攻击力:580
1738
+ 防御力:120
1739
+ 体力:100
1740
+ 耐力:75
1741
+ 法力:85
1742
+ 闪避:25
1743
+ 速度:90
1744
+ 技能:
1745
+ - 幻光毒雾:对单体目标造成120%攻击力的伤害,并附加中毒状态(每回合降低目标3%攻击力,持续3回合)
1746
+ 耐力消耗:8,法力消耗:25
1747
+ - 八卦仙衣:提升自身30%防御力,并有50%概率闪避物理攻击,持续2回合
1748
+ 耐力消耗:5,法力消耗:15
1749
+ - 天地回元:恢复自身30%体力,同时清除所有负面状态,并提升20%灵力伤害,持续1回合
1750
+ 耐力消耗:10,法力消耗:30
1751
+
1752
+ --------------------------------------------------
1753
+
1754
+ 文档 90:
1755
+ --------------------------------------------------
1756
+ 角色:华佗
1757
+ 攻击力:100
1758
+ 防御力:80
1759
+ 体力:100
1760
+ 耐力:70
1761
+ 法力:90
1762
+ 闪避:40
1763
+ 速度:60
1764
+ 技能:
1765
+ - 青囊书:恢复自身30%体力,并附带持续2回合的『必定命中』效果
1766
+ 耐力消耗:5,法力消耗:20
1767
+ - 金针护体:��升己方全体20%防御力,持续3回合,并附加『闪避增强』10%
1768
+ 耐力消耗:5,法力消耗:15
1769
+ - 麻沸散:驱散自身所有负面状态,并使下次攻击必定触发『暴击』,消耗自身15%体力
1770
+ 耐力消耗:8,法力消耗:25
1771
+
1772
+ --------------------------------------------------
1773
+
1774
+ 文档 91:
1775
+ --------------------------------------------------
1776
+ 角色:司马徽
1777
+ 攻击力:200
1778
+ 防御力:120
1779
+ 体力:100
1780
+ 耐力:80
1781
+ 法力:90
1782
+ 闪避:35
1783
+ 速度:75
1784
+ 技能:
1785
+ - 水镜术:提升自身30%攻击力并附加中毒状态(降低目标3%攻击),持续2回合
1786
+ - 观星诀:防御提升50%,闪避率增加20%,持续3回合
1787
+ - 天命归元:恢复自身30%体力并净化负面状态,必定命中
1788
+
1789
+ --------------------------------------------------
1790
+
1791
+ 文档 92:
1792
+ --------------------------------------------------
1793
+ 角色:蔡邕
1794
+ 攻击力:300
1795
+ 防御力:80
1796
+ 体力:100
1797
+ 耐力:75
1798
+ 法力:60
1799
+ 闪避:20
1800
+ 速度:60
1801
+ 技能:
1802
+ - 文气贯虹:攻击力提升30%,持续3回合,并附带必定命中效果
1803
+ 耐力消耗:8,法力消耗:15
1804
+ - 护心鉴:防御力提升50%,持续2回合,并附加闪避增强10%
1805
+ 耐力消耗:5,法力消耗:25
1806
+ - 清音疗愈:恢复自身25%体力,并解除负面状态
1807
+ 耐力消耗:7,法力消耗:20
1808
+
1809
+ --------------------------------------------------
1810
+
1811
+ 文档 93:
1812
+ --------------------------------------------------
1813
+ 角色:蔡文姬
1814
+ 攻击力:320
1815
+ 防御力:150
1816
+ 体力:100
1817
+ 耐力:75
1818
+ 法力:90
1819
+ 闪避:25
1820
+ 速度:85
1821
+ 技能:
1822
+ - 胡笳安魂曲:恢复全体队友15%体力,并附加持续2回合的【护盾】(吸收15%伤害)
1823
+ 耐力消耗:8,法力消耗:25
1824
+ - 悲歌护体:提升自身30%防御力,并使下一次受到的攻击必定触发【闪避】
1825
+ 耐力消耗:5,法力消耗:18
1826
+ - 断肠焚心:对单体造成180%攻击力的伤害,并附加【灼烧】状态(每回合损失2%体力,持续3回合)
1827
+ 耐力消耗:10,法力消耗:32
1828
+
1829
+ --------------------------------------------------
1830
+
1831
+ 文档 94:
1832
+ --------------------------------------------------
1833
+ 角色:甄宓
1834
+ 攻击力:320
1835
+ 防御力:80
1836
+ 体力:100
1837
+ 耐力:40
1838
+ 法力:80
1839
+ 闪避:20
1840
+ 速度:60
1841
+ 技能:
1842
+ - 洛水仙咒:攻击附加中毒状态,目标攻击力降低3%(每回合叠加)
1843
+ 耐力消耗:5,法力消耗:20
1844
+ - 惊鸿之舞:恢复自身20%体力,并提升30%闪避率,持续2回合
1845
+ 耐力消耗:8,法力消耗:25
1846
+ - 凌波剑诀:必定命中,造成1.5倍攻击伤害,并使自身防御提升20%,持续1回合
1847
+ 耐力消耗:7,法力消耗:30
1848
+
1849
+ --------------------------------------------------
1850
+
1851
+ 文档 95:
1852
+ --------------------------------------------------
1853
+ 角色:邹氏
1854
+ 攻击力:450
1855
+ 防御力:90
1856
+ 体力:100
1857
+ 耐力:65
1858
+ 法力:75
1859
+ 闪避:25
1860
+ 速度:70
1861
+ 技能:
1862
+ - 玄冥冰魄:攻击附加冻结状态(目标速度降低50%,持续2回合),并提升自身暴击率20%
1863
+ 耐力消耗:7,法力消耗:28
1864
+ - 九转回春术:消耗灵力恢复自身35%体力,并附加持续3回合的毒伤(每回合造成目标最大体力5%的伤害)
1865
+ 耐力消耗:4,法力消耗:32
1866
+ - 天罡战意:消耗耐力清除自身所有负面状态,提升防御力150%并免疫控制效果,持续3回合
1867
+ 耐力消耗:10,法力消耗:15
1868
+
1869
+ --------------------------------------------------
1870
+
1871
+ 文档 96:
1872
+ --------------------------------------------------
1873
+ 角色:杜氏
1874
+ 攻击力:450
1875
+ 防御力:120
1876
+ 体力:100
1877
+ 耐力:75
1878
+ 法力:60
1879
+ 闪避:25
1880
+ 速度:85
1881
+ 技能:
1882
+ - 狂澜斩:攻击力提升30%,持续2回合,必定命中
1883
+ 耐力消耗:5,法力消耗:15
1884
+ - 铁壁术:防御力提升50%,并附加30%概率闪避普攻,持续3回合
1885
+ 耐力消耗:8,法力消耗:25
1886
+ - 蚀骨毒:攻击附加中毒状态(目标攻击力每回合降低3%),持续3回合,必中且无视闪避
1887
+ 耐力消耗:3,法力消耗:20
1888
+
1889
+ --------------------------------------------------
1890
+
1891
+ 文档 97:
1892
+ --------------------------------------------------
1893
+ 角色:王允
1894
+ 攻击力:285
1895
+ 防御力:110
1896
+ 体力:100
1897
+ 耐力:75
1898
+ 法力:68
1899
+ 闪避:25
1900
+ 速度:55
1901
+ 技能:
1902
+ - 毒计连环:攻击附加中毒状态(目标攻击降低3%,持续3回合)
1903
+ 耐力消耗:8,法力消耗:22
1904
+ - 智障护体:提升30%防御并强制闪避下一次物理攻击
1905
+ 耐力消耗:6,法力消耗:18
1906
+ - 连环策攻:必定命中的三段连击(每段伤害为攻击力60%),暴击率提升20%
1907
+ 耐力消耗:10,法力消耗:35
1908
+
1909
+ --------------------------------------------------
1910
+
1911
+ 文档 98:
1912
+ --------------------------------------------------
1913
+ 角色:李儒
1914
+ 攻击力:580
1915
+ 防御力:140
1916
+ 体力:100
1917
+ 耐力:75
1918
+ 法力:85
1919
+ 闪避:25
1920
+ 速度:65
1921
+ 技能:
1922
+ - 毒计蚀骨:攻击附加中毒状态,目标每回合降低3%攻击力,持续3回合,必定命中
1923
+ 耐力消耗:7,法力消耗:22
1924
+ - 固防之策:提升自身30%防御力,持续2回合,并有50%概率闪避下次攻击
1925
+ 耐力消耗:5,法力消耗:18
1926
+ - 燃血焚心:消耗自身10%体力,对目标造成1.5倍伤害并附加灼烧(每回合损失2%体力),暴击率提升20%
1927
+ 耐力消耗:10,法力消耗:30
1928
+
1929
+ --------------------------------------------------
1930
+
1931
+ 文档 99:
1932
+ --------------------------------------------------
1933
+ 角色:王朗
1934
+ 攻击力:500
1935
+ 防御力:120
1936
+ 体力:100
1937
+ 耐力:80
1938
+ 法力:60
1939
+ 闪避:25
1940
+ 速度:70
1941
+ 技能:
1942
+ - 雷霆一击:攻击增强50%,持续3回合,必定命中
1943
+ 耐力消耗:5,法力消耗:20
1944
+ - 铁壁防御:防御增强80%,持续2回合,并提升30%闪避
1945
+ 耐力消耗:8,法力消耗:15
1946
+ - 毒雾术:攻击附加中毒状态(目标攻击降低3%),持续5回合,50%概率触发暴击
1947
+ 耐力消耗:3,法力消耗:25
1948
+
1949
+ --------------------------------------------------
1950
+
1951
+ 文档 100:
1952
+ --------------------------------------------------
1953
+ 角色:钟繇
1954
+ 攻击力:320
1955
+ 防御力:120
1956
+ 体力:100
1957
+ 耐力:75
1958
+ 法力:65
1959
+ 闪避:25
1960
+ 速度:70
1961
+ 技能:
1962
+ - 墨守千钧:提升自身防御力50%,持续2回合,且有30%概率反弹受到的物理攻击
1963
+ 耐力消耗:8,法力消耗:20
1964
+ - 浩然笔意:消耗自身30%当前体力值,对单体目标造成1.5倍攻击力的斩杀伤害(若目标体力低于50%则必中)
1965
+ 耐力消耗:5,法力消耗:25
1966
+ - 文魂护体:回复自身20%体力并清除负面状态,同时获得等同于已损失体力值50%的临时护盾(持续1回合)
1967
+ 耐力消耗:7,法力消耗:18
1968
+
1969
+ --------------------------------------------------
1970
+
1971
+ 文档 101:
1972
+ --------------------------------------------------
1973
+ 角色:陈群
1974
+ 攻击力:420
1975
+ 防御力:150
1976
+ 体力:100
1977
+ 耐力:75
1978
+ 法力:60
1979
+ 闪避:25
1980
+ 速度:85
1981
+ 技能:
1982
+ - 烈焰斩:攻击附带灼烧状态(每回合降低目标1%体力),自身暴击率提升20%(持续2回合)
1983
+ 耐力消耗:7,法力消耗:20
1984
+ - 玄龟护体:防御力提升30%(持续3回合),并必定闪避下一次攻击
1985
+ 耐力消耗:9,法力消耗:25
1986
+ - 回春术:恢复自身20%体力,并清除所有负面状态
1987
+ 耐力消耗:5,法力消耗:30
1988
+
1989
+ --------------------------------------------------
1990
+
1991
+ 文档 102:
1992
+ --------------------------------------------------
1993
+ 角色:司马炎
1994
+ 攻击力:320
1995
+ 防御力:160
1996
+ 体力:100
1997
+ 耐力:80
1998
+ 法力:65
1999
+ 闪避:35
2000
+ 速度:75
2001
+ 技能:
2002
+ - 帝王威仪:提升30%防御力,持续3回合,并强制敌方目标攻击自己(必定命中)
2003
+ - 晋朝余荫:恢复自身30%最大体力,同时提升20%闪避率,持续2回合
2004
+ - 山河烬燃:消耗灵力释放范围攻击,对前方敌人造成150%攻击力的灼烧伤害,并附加每回合1%体力流失的灼烧状态,持续3回合
2005
+
2006
+ --------------------------------------------------
vector_db/chroma/chroma-collections.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:eb061c8370cbf94fce6e906cab847da748b357c97be495237a5adff38857d12d
3
+ size 559
vector_db/chroma/chroma-embeddings.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9730b9b9ef2ed6b2b69654c18420e06152c46c63e8139f6c0448965dd4b5b96f
3
+ size 6635173
vector_db/chroma/index/id_to_uuid_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:93745a94adcf6879d92888621614565c51abb10dc5871744f92d1aadcb5e0dac
3
+ size 42548
vector_db/chroma/index/index_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b80cccbe66c34e63d56482f1fb2aa1129b642f1f1edca0ad76ae3574b782053f
3
+ size 4238200
vector_db/chroma/index/index_metadata_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5807817e6627647688439e8f39426c0c1d48c4d4c8597c2a2e8bd023de118d93
3
+ size 105
vector_db/chroma/index/uuid_to_id_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d93af44169ded96268b33b62133634091fa183ca7a46264f60f3fefe1c90a7aa
3
+ size 49771
vector_db/chroma_sanguo/chroma-collections.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0ebb1f3c65a22a3b5dd6b2b198e0cd16fbd7f241b28006c2d865327508aeac73
3
+ size 559
vector_db/chroma_sanguo/chroma-embeddings.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4f3e90f94d52bf024fc936115261be9ff076dc11b298108895f1d293bc57d1f2
3
+ size 1948642
vector_db/chroma_sanguo/index/id_to_uuid_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6523fb2bcfe57f3eaa95036ffc65260a4d2266269747254dad646c8c582d51b7
3
+ size 12941
vector_db/chroma_sanguo/index/index_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e132b028da03e62e2fe138e78ed0543ac1c8fc54e38343cea387a391fe0e5570
3
+ size 1304548
vector_db/chroma_sanguo/index/index_metadata_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:641110764d8a60702cbc4b82af63410f5df6e51ea721153d1b70c8188e4a25d9
3
+ size 105
vector_db/chroma_sanguo/index/uuid_to_id_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c3382491670eb3ea6742a578dfddc1247678337f2d0b3e71655c550f45096c33
3
+ size 15151