Spaces:
Running
Running
茂道
commited on
Commit
·
eebd227
1
Parent(s):
0a75f21
update readme
Browse files- .idea/.gitignore +0 -8
- .idea/inspectionProfiles/Project_Default.xml +0 -175
- .idea/inspectionProfiles/profiles_settings.xml +0 -6
- .idea/misc.xml +0 -4
- .idea/modules.xml +0 -8
- .idea/vcs.xml +0 -6
- .idea/werewolf_1.iml +0 -12
- .idea/workspace.xml +55 -0
- README.md +193 -4
.idea/.gitignore
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
# Default ignored files
|
2 |
-
/shelf/
|
3 |
-
/workspace.xml
|
4 |
-
# Editor-based HTTP Client requests
|
5 |
-
/httpRequests/
|
6 |
-
# Datasource local storage ignored files
|
7 |
-
/dataSources/
|
8 |
-
/dataSources.local.xml
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.idea/inspectionProfiles/Project_Default.xml
DELETED
@@ -1,175 +0,0 @@
|
|
1 |
-
<component name="InspectionProjectProfileManager">
|
2 |
-
<profile version="1.0">
|
3 |
-
<option name="myName" value="Project Default" />
|
4 |
-
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
5 |
-
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
6 |
-
<option name="ignoredPackages">
|
7 |
-
<value>
|
8 |
-
<list size="134">
|
9 |
-
<item index="0" class="java.lang.String" itemvalue="DBUtils" />
|
10 |
-
<item index="1" class="java.lang.String" itemvalue="Flask-MySQL" />
|
11 |
-
<item index="2" class="java.lang.String" itemvalue="requests" />
|
12 |
-
<item index="3" class="java.lang.String" itemvalue="gunicorn" />
|
13 |
-
<item index="4" class="java.lang.String" itemvalue="Flask" />
|
14 |
-
<item index="5" class="java.lang.String" itemvalue="Werkzeug" />
|
15 |
-
<item index="6" class="java.lang.String" itemvalue="pillow" />
|
16 |
-
<item index="7" class="java.lang.String" itemvalue="PyMySQL" />
|
17 |
-
<item index="8" class="java.lang.String" itemvalue="jinja2" />
|
18 |
-
<item index="9" class="java.lang.String" itemvalue="pandas" />
|
19 |
-
<item index="10" class="java.lang.String" itemvalue="scipy" />
|
20 |
-
<item index="11" class="java.lang.String" itemvalue="maplpy" />
|
21 |
-
<item index="12" class="java.lang.String" itemvalue="dataclasses" />
|
22 |
-
<item index="13" class="java.lang.String" itemvalue="hsfpy3" />
|
23 |
-
<item index="14" class="java.lang.String" itemvalue="util" />
|
24 |
-
<item index="15" class="java.lang.String" itemvalue="typing_extensions" />
|
25 |
-
<item index="16" class="java.lang.String" itemvalue="index" />
|
26 |
-
<item index="17" class="java.lang.String" itemvalue="numpy" />
|
27 |
-
<item index="18" class="java.lang.String" itemvalue="browsergym" />
|
28 |
-
<item index="19" class="java.lang.String" itemvalue="browser-use" />
|
29 |
-
<item index="20" class="java.lang.String" itemvalue="gradio" />
|
30 |
-
<item index="21" class="java.lang.String" itemvalue="chunkr-ai" />
|
31 |
-
<item index="22" class="java.lang.String" itemvalue="docx2markdown" />
|
32 |
-
<item index="23" class="java.lang.String" itemvalue="camel-ai" />
|
33 |
-
<item index="24" class="java.lang.String" itemvalue="pytest-qt" />
|
34 |
-
<item index="25" class="java.lang.String" itemvalue="shapely" />
|
35 |
-
<item index="26" class="java.lang.String" itemvalue="numba" />
|
36 |
-
<item index="27" class="java.lang.String" itemvalue="absl-py" />
|
37 |
-
<item index="28" class="java.lang.String" itemvalue="gensim" />
|
38 |
-
<item index="29" class="java.lang.String" itemvalue="bs4" />
|
39 |
-
<item index="30" class="java.lang.String" itemvalue="cvxpy" />
|
40 |
-
<item index="31" class="java.lang.String" itemvalue="scikit-learn" />
|
41 |
-
<item index="32" class="java.lang.String" itemvalue="pyscf" />
|
42 |
-
<item index="33" class="java.lang.String" itemvalue="nameko" />
|
43 |
-
<item index="34" class="java.lang.String" itemvalue="pandasql" />
|
44 |
-
<item index="35" class="java.lang.String" itemvalue="rdkit" />
|
45 |
-
<item index="36" class="java.lang.String" itemvalue="PyQt5" />
|
46 |
-
<item index="37" class="java.lang.String" itemvalue="pycryptodomex" />
|
47 |
-
<item index="38" class="java.lang.String" itemvalue="kneed" />
|
48 |
-
<item index="39" class="java.lang.String" itemvalue="PyPDF2" />
|
49 |
-
<item index="40" class="java.lang.String" itemvalue="tree-sitter-languages" />
|
50 |
-
<item index="41" class="java.lang.String" itemvalue="uvloop" />
|
51 |
-
<item index="42" class="java.lang.String" itemvalue="xlrd" />
|
52 |
-
<item index="43" class="java.lang.String" itemvalue="Flask-Caching" />
|
53 |
-
<item index="44" class="java.lang.String" itemvalue="GitPython" />
|
54 |
-
<item index="45" class="java.lang.String" itemvalue="ruptures" />
|
55 |
-
<item index="46" class="java.lang.String" itemvalue="jupyter_client" />
|
56 |
-
<item index="47" class="java.lang.String" itemvalue="graphql-core" />
|
57 |
-
<item index="48" class="java.lang.String" itemvalue="Flask-WTF" />
|
58 |
-
<item index="49" class="java.lang.String" itemvalue="yolk" />
|
59 |
-
<item index="50" class="java.lang.String" itemvalue="Flask-SQLAlchemy" />
|
60 |
-
<item index="51" class="java.lang.String" itemvalue="APScheduler" />
|
61 |
-
<item index="52" class="java.lang.String" itemvalue="psutil" />
|
62 |
-
<item index="53" class="java.lang.String" itemvalue="torchinfo" />
|
63 |
-
<item index="54" class="java.lang.String" itemvalue="xarray" />
|
64 |
-
<item index="55" class="java.lang.String" itemvalue="pika" />
|
65 |
-
<item index="56" class="java.lang.String" itemvalue="mongomock" />
|
66 |
-
<item index="57" class="java.lang.String" itemvalue="lightgbm" />
|
67 |
-
<item index="58" class="java.lang.String" itemvalue="jsonlines" />
|
68 |
-
<item index="59" class="java.lang.String" itemvalue="torchsummary" />
|
69 |
-
<item index="60" class="java.lang.String" itemvalue="PyJWT" />
|
70 |
-
<item index="61" class="java.lang.String" itemvalue="gql" />
|
71 |
-
<item index="62" class="java.lang.String" itemvalue="folium" />
|
72 |
-
<item index="63" class="java.lang.String" itemvalue="fastdtw" />
|
73 |
-
<item index="64" class="java.lang.String" itemvalue="Flask-GraphQL" />
|
74 |
-
<item index="65" class="java.lang.String" itemvalue="antlr4-python3-runtime" />
|
75 |
-
<item index="66" class="java.lang.String" itemvalue="tree-sitter" />
|
76 |
-
<item index="67" class="java.lang.String" itemvalue="graphene" />
|
77 |
-
<item index="68" class="java.lang.String" itemvalue="docker" />
|
78 |
-
<item index="69" class="java.lang.String" itemvalue="catboost" />
|
79 |
-
<item index="70" class="java.lang.String" itemvalue="tensorflow" />
|
80 |
-
<item index="71" class="java.lang.String" itemvalue="XlsxWriter" />
|
81 |
-
<item index="72" class="java.lang.String" itemvalue="jupyter" />
|
82 |
-
<item index="73" class="java.lang.String" itemvalue="seaborn" />
|
83 |
-
<item index="74" class="java.lang.String" itemvalue="pytest-mock" />
|
84 |
-
<item index="75" class="java.lang.String" itemvalue="pytest-cov" />
|
85 |
-
<item index="76" class="java.lang.String" itemvalue="Flask-Limiter" />
|
86 |
-
<item index="77" class="java.lang.String" itemvalue="xgboost" />
|
87 |
-
<item index="78" class="java.lang.String" itemvalue="coverage" />
|
88 |
-
<item index="79" class="java.lang.String" itemvalue="PyMuPDF" />
|
89 |
-
<item index="80" class="java.lang.String" itemvalue="python-docx" />
|
90 |
-
<item index="81" class="java.lang.String" itemvalue="pyzbar" />
|
91 |
-
<item index="82" class="java.lang.String" itemvalue="pymongo" />
|
92 |
-
<item index="83" class="java.lang.String" itemvalue="opencv-python" />
|
93 |
-
<item index="84" class="java.lang.String" itemvalue="pytest" />
|
94 |
-
<item index="85" class="java.lang.String" itemvalue="faiss-cpu" />
|
95 |
-
<item index="86" class="java.lang.String" itemvalue="datasketch" />
|
96 |
-
<item index="87" class="java.lang.String" itemvalue="kaleido" />
|
97 |
-
<item index="88" class="java.lang.String" itemvalue="xlwt" />
|
98 |
-
<item index="89" class="java.lang.String" itemvalue="astor" />
|
99 |
-
<item index="90" class="java.lang.String" itemvalue="plotly" />
|
100 |
-
<item index="91" class="java.lang.String" itemvalue="toml" />
|
101 |
-
<item index="92" class="java.lang.String" itemvalue="WTForms" />
|
102 |
-
<item index="93" class="java.lang.String" itemvalue="statsmodels" />
|
103 |
-
<item index="94" class="java.lang.String" itemvalue="pyberny" />
|
104 |
-
<item index="95" class="java.lang.String" itemvalue="arch" />
|
105 |
-
<item index="96" class="java.lang.String" itemvalue="Flask-Testing" />
|
106 |
-
<item index="97" class="java.lang.String" itemvalue="gmpy2" />
|
107 |
-
<item index="98" class="java.lang.String" itemvalue="pulp" />
|
108 |
-
<item index="99" class="java.lang.String" itemvalue="Flask-RESTful" />
|
109 |
-
<item index="100" class="java.lang.String" itemvalue="pmdarima" />
|
110 |
-
<item index="101" class="java.lang.String" itemvalue="textblob" />
|
111 |
-
<item index="102" class="java.lang.String" itemvalue="openpyxl" />
|
112 |
-
<item index="103" class="java.lang.String" itemvalue="playwright" />
|
113 |
-
<item index="104" class="java.lang.String" itemvalue="openai" />
|
114 |
-
<item index="105" class="java.lang.String" itemvalue="markdown2" />
|
115 |
-
<item index="106" class="java.lang.String" itemvalue="contextvars" />
|
116 |
-
<item index="107" class="java.lang.String" itemvalue="langchain" />
|
117 |
-
<item index="108" class="java.lang.String" itemvalue="jsonpath" />
|
118 |
-
<item index="109" class="java.lang.String" itemvalue="FastAPI" />
|
119 |
-
<item index="110" class="java.lang.String" itemvalue="uvicorn" />
|
120 |
-
<item index="111" class="java.lang.String" itemvalue="retry" />
|
121 |
-
<item index="112" class="java.lang.String" itemvalue="json-repair" />
|
122 |
-
<item index="113" class="java.lang.String" itemvalue="langchain-core" />
|
123 |
-
<item index="114" class="java.lang.String" itemvalue="jmespath" />
|
124 |
-
<item index="115" class="java.lang.String" itemvalue="opentelemetry-proto" />
|
125 |
-
<item index="116" class="java.lang.String" itemvalue="opentelemetry-exporter-otlp-proto-grpc" />
|
126 |
-
<item index="117" class="java.lang.String" itemvalue="opentelemetry-api" />
|
127 |
-
<item index="118" class="java.lang.String" itemvalue="opentelemetry-sdk" />
|
128 |
-
<item index="119" class="java.lang.String" itemvalue="grpcio" />
|
129 |
-
<item index="120" class="java.lang.String" itemvalue="mcp" />
|
130 |
-
<item index="121" class="java.lang.String" itemvalue="opentelemetry-exporter-otlp-proto-common" />
|
131 |
-
<item index="122" class="java.lang.String" itemvalue="opentelemetry-exporter-otlp-proto-http" />
|
132 |
-
<item index="123" class="java.lang.String" itemvalue="redis" />
|
133 |
-
<item index="124" class="java.lang.String" itemvalue="opentelemetry-semantic-conventions" />
|
134 |
-
<item index="125" class="java.lang.String" itemvalue="rocketmq-python-client" />
|
135 |
-
<item index="126" class="java.lang.String" itemvalue="langchain-openai" />
|
136 |
-
<item index="127" class="java.lang.String" itemvalue="botocore" />
|
137 |
-
<item index="128" class="java.lang.String" itemvalue="langchain-google-genai" />
|
138 |
-
<item index="129" class="java.lang.String" itemvalue="anyio" />
|
139 |
-
<item index="130" class="java.lang.String" itemvalue="langchain-text-splitters" />
|
140 |
-
<item index="131" class="java.lang.String" itemvalue="pytz" />
|
141 |
-
<item index="132" class="java.lang.String" itemvalue="langchain-anthropic" />
|
142 |
-
<item index="133" class="java.lang.String" itemvalue="pyee" />
|
143 |
-
</list>
|
144 |
-
</value>
|
145 |
-
</option>
|
146 |
-
</inspection_tool>
|
147 |
-
<inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
148 |
-
<option name="ignoredErrors">
|
149 |
-
<list>
|
150 |
-
<option value="E302" />
|
151 |
-
</list>
|
152 |
-
</option>
|
153 |
-
</inspection_tool>
|
154 |
-
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
155 |
-
<option name="ignoredErrors">
|
156 |
-
<list>
|
157 |
-
<option value="N803" />
|
158 |
-
<option value="N801" />
|
159 |
-
<option value="N806" />
|
160 |
-
</list>
|
161 |
-
</option>
|
162 |
-
</inspection_tool>
|
163 |
-
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
164 |
-
<option name="ignoredIdentifiers">
|
165 |
-
<list>
|
166 |
-
<option value="dict.has_key" />
|
167 |
-
<option value="fastchat.modules" />
|
168 |
-
<option value="dict.query" />
|
169 |
-
<option value="nest_asyncio" />
|
170 |
-
<option value="aiohttp.client_reqrep.ClientResponse.__await__" />
|
171 |
-
</list>
|
172 |
-
</option>
|
173 |
-
</inspection_tool>
|
174 |
-
</profile>
|
175 |
-
</component>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.idea/inspectionProfiles/profiles_settings.xml
DELETED
@@ -1,6 +0,0 @@
|
|
1 |
-
<component name="InspectionProjectProfileManager">
|
2 |
-
<settings>
|
3 |
-
<option name="USE_PROJECT_PROFILE" value="false" />
|
4 |
-
<version value="1.0" />
|
5 |
-
</settings>
|
6 |
-
</component>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.idea/misc.xml
DELETED
@@ -1,4 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<project version="4">
|
3 |
-
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (venv) (3)" project-jdk-type="Python SDK" />
|
4 |
-
</project>
|
|
|
|
|
|
|
|
|
|
.idea/modules.xml
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<project version="4">
|
3 |
-
<component name="ProjectModuleManager">
|
4 |
-
<modules>
|
5 |
-
<module fileurl="file://$PROJECT_DIR$/.idea/werewolf_1.iml" filepath="$PROJECT_DIR$/.idea/werewolf_1.iml" />
|
6 |
-
</modules>
|
7 |
-
</component>
|
8 |
-
</project>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.idea/vcs.xml
DELETED
@@ -1,6 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<project version="4">
|
3 |
-
<component name="VcsDirectoryMappings">
|
4 |
-
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
5 |
-
</component>
|
6 |
-
</project>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.idea/werewolf_1.iml
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<module type="PYTHON_MODULE" version="4">
|
3 |
-
<component name="NewModuleRootManager">
|
4 |
-
<content url="file://$MODULE_DIR$" />
|
5 |
-
<orderEntry type="jdk" jdkName="Python 3.10 (venv) (3)" jdkType="Python SDK" />
|
6 |
-
<orderEntry type="sourceFolder" forTests="false" />
|
7 |
-
</component>
|
8 |
-
<component name="PyDocumentationSettings">
|
9 |
-
<option name="format" value="PLAIN" />
|
10 |
-
<option name="myDocStringFormat" value="Plain" />
|
11 |
-
</component>
|
12 |
-
</module>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.idea/workspace.xml
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<project version="4">
|
3 |
+
<component name="ChangeListManager">
|
4 |
+
<list default="true" id="80eb691e-de39-4012-a62b-cbf7fc6ab308" name="Changes" comment="">
|
5 |
+
<change beforePath="$PROJECT_DIR$/.idea/.gitignore" beforeDir="false" />
|
6 |
+
<change beforePath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" beforeDir="false" />
|
7 |
+
<change beforePath="$PROJECT_DIR$/.idea/inspectionProfiles/profiles_settings.xml" beforeDir="false" />
|
8 |
+
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" />
|
9 |
+
<change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" />
|
10 |
+
<change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" />
|
11 |
+
<change beforePath="$PROJECT_DIR$/.idea/werewolf_1.iml" beforeDir="false" />
|
12 |
+
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
|
13 |
+
</list>
|
14 |
+
<option name="SHOW_DIALOG" value="false" />
|
15 |
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
16 |
+
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
17 |
+
<option name="LAST_RESOLUTION" value="IGNORE" />
|
18 |
+
</component>
|
19 |
+
<component name="Git.Settings">
|
20 |
+
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
21 |
+
</component>
|
22 |
+
<component name="MarkdownSettingsMigration">
|
23 |
+
<option name="stateVersion" value="1" />
|
24 |
+
</component>
|
25 |
+
<component name="ProjectId" id="2wssCLyvW0TEn8qbbdnXRhYNtJp" />
|
26 |
+
<component name="ProjectViewState">
|
27 |
+
<option name="hideEmptyMiddlePackages" value="true" />
|
28 |
+
<option name="showLibraryContents" value="true" />
|
29 |
+
</component>
|
30 |
+
<component name="PropertiesComponent">
|
31 |
+
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
32 |
+
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
33 |
+
<property name="WebServerToolWindowFactoryState" value="false" />
|
34 |
+
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
35 |
+
<property name="node.js.detected.package.eslint" value="true" />
|
36 |
+
<property name="node.js.selected.package.eslint" value="(autodetect)" />
|
37 |
+
</component>
|
38 |
+
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
39 |
+
<component name="TaskManager">
|
40 |
+
<task active="true" id="Default" summary="Default task">
|
41 |
+
<changelist id="80eb691e-de39-4012-a62b-cbf7fc6ab308" name="Changes" comment="" />
|
42 |
+
<created>1746841487528</created>
|
43 |
+
<option name="number" value="Default" />
|
44 |
+
<option name="presentableId" value="Default" />
|
45 |
+
<updated>1746841487528</updated>
|
46 |
+
<workItem from="1746841490083" duration="7430000" />
|
47 |
+
<workItem from="1747369960409" duration="6566000" />
|
48 |
+
<workItem from="1748313163568" duration="125000" />
|
49 |
+
</task>
|
50 |
+
<servers />
|
51 |
+
</component>
|
52 |
+
<component name="TypeScriptGeneratedFilesManager">
|
53 |
+
<option name="version" value="3" />
|
54 |
+
</component>
|
55 |
+
</project>
|
README.md
CHANGED
@@ -1,10 +1,199 @@
|
|
1 |
---
|
2 |
-
title:
|
3 |
emoji: 🚀
|
4 |
-
colorFrom:
|
5 |
-
colorTo:
|
6 |
sdk: docker
|
7 |
pinned: false
|
|
|
8 |
---
|
9 |
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
---
|
2 |
+
title: 狼人杀Agent示例
|
3 |
emoji: 🚀
|
4 |
+
colorFrom: yellow
|
5 |
+
colorTo: blue
|
6 |
sdk: docker
|
7 |
pinned: false
|
8 |
+
license: mit
|
9 |
---
|
10 |
|
11 |
+
# 介绍
|
12 |
+
|
13 |
+
[https://whoisspy.ai/](https://whoisspy.ai/#/login)是一个AI Agent对抗比赛平台,目前该平台支持了中文版和英文版的谁是卧底游戏和狼人杀对抗赛,和人类的谁是卧底游戏规则基本相同。
|
14 |
+
|
15 |
+
每个玩家首先在HuggingFace上开发自己的AI-Agent,然后在[https://whoisspy.ai/](https://whoisspy.ai/#/login)上传Agent的路径,并加入游戏匹配和战斗。
|
16 |
+
|
17 |
+

|
18 |
+
|
19 |
+
我们在Huggingface上提供了可以直接运行的Agent示例,因此不论你之前是否有编程基础或者AI开发经验,只要你对AI Agent感兴趣,都可以在这个平台上轻松地参加AI Agent的对抗赛。
|
20 |
+
|
21 |
+
关于该平台任何的问题和建议,都欢迎在[官方社区](https://huggingface.co/spaces/alimamaTech/WhoIsSpyAgentExample/discussions)下提出!
|
22 |
+
|
23 |
+
# 准备工作
|
24 |
+
在开始正式的比赛之前,你需要先准备好:
|
25 |
+
|
26 |
+
+ 一个HuggingFace([https://huggingface.co/](https://huggingface.co/))账号,用于开发和部署Agent
|
27 |
+
+ 一个大语言模型调用接口的API\_KEY,例如
|
28 |
+
- OpenAI的API\_KEY,详情参考:[OpenAI API](https://platform.openai.com/docs/api-reference/introduction)
|
29 |
+
- 阿里云大模型的API\_KEY(提供了一些免费的模型调用),详情参考:[Discussion: 如何使用阿里云上的模型?](https://huggingface.co/spaces/alimamaTech/WhoIsSpyAgentExample/discussions/6)
|
30 |
+
|
31 |
+
+ HuggingFace可读权限的Access Tokens
|
32 |
+
- 打开网页[https://huggingface.co/settings/tokens](https://huggingface.co/settings/tokens),新建一个Access Token
|
33 |
+
- 按照下图勾选选项
|
34 |
+

|
35 |
+
- 保存创建的Access Token
|
36 |
+
|
37 |
+
# 创建自己的Agent
|
38 |
+
1. 复制(Duplicate)Agent示例:
|
39 |
+
- 中文版:[https://huggingface.co/spaces/alimamaTech/WhoIsSpyAgentExample](https://huggingface.co/spaces/alimamaTech/WhoIsSpyAgentExample)
|
40 |
+
- 英文版:[https://huggingface.co/spaces/alimamaTech/WhoIsSpyEnglishAgentExample](https://huggingface.co/spaces/alimamaTech/WhoIsSpyEnglishAgentExample)
|
41 |
+

|
42 |
+
2. 在下面这个界面中填写
|
43 |
+
- Space name:Agent的名字
|
44 |
+
- API\_KEY: 大语言模型调用接口的API\_KEY
|
45 |
+
- MODEL\_NAME: 大语言模型的名字
|
46 |
+
- BASE\_URL:
|
47 |
+
- 如果使用的是OpenAI的API,填入 https://api.openai.com/v1
|
48 |
+
- 如果使用的是阿里云的API,填入 https://dashscope.aliyuncs.com/compatible-mode/v1
|
49 |
+

|
50 |
+
3. 等待Space的构建状态变成Running,然后点击Logs可以看到Agent当前的打印日志:
|
51 |
+

|
52 |
+
|
53 |
+
# 使用Agent参与对战
|
54 |
+
1. 进入谁是卧底网站[https://whoisspy.ai/](https://whoisspy.ai/), 注册并登录账号
|
55 |
+

|
56 |
+
2. 点击**Agent管理**界面上传Agent
|
57 |
+

|
58 |
+
依此完成下述操作:
|
59 |
+
- 上传头像(可以点击自动生成)
|
60 |
+
- 填入Agent名称
|
61 |
+
- 选择在线模式(如果选择在线模式,会接受来自其他玩家的游戏匹配,有利于快速上分,但是需要确保GPT账号余额充足;如果选择离线模式,只能用主动匹配开启游戏)
|
62 |
+
- 选择中文还是英文版本的谁是卧底
|
63 |
+
- 填入Huggingface的Access Token [https://huggingface.co/settings/tokens](https://huggingface.co/settings/tokens) (只读权限即可)
|
64 |
+
- 填入Agent的Space name,格式例如"alimamaTech/WhoIsSpyAgentExample"
|
65 |
+
- 填入Agent的方法描述(例如使用的大语言模型名字或者设计的游戏策略名字)
|
66 |
+

|
67 |
+
3. 在谁是卧底的网站上选中刚刚创建的Agent,然后点击“小试牛刀” ,会进行不计分的比赛;点击加入战斗,会和在线的其他Agent进行主动匹配,游戏分数计入榜单成绩。
|
68 |
+

|
69 |
+
点击小试牛刀或者加入战斗后,经过一定的匹配等待后,可以看到比赛的实时过程
|
70 |
+

|
71 |
+
|
72 |
+
# 【进阶】如何改进自己的Agent?
|
73 |
+
1. 在HuggingSpace上点击Logs,可以看到大语言模型的实际输出和输出
|
74 |
+

|
75 |
+
2. prompt级别的改进。点击prompts.py
|
76 |
+
- 修改DESC\_PROMPT,改变发言环节的prompt
|
77 |
+
- 修改VOTE\_PROMPT,改变投票环节的prompt
|
78 |
+

|
79 |
+
3. 代码级别的改进。点击app.py,对SpyAgent的行为进行改造
|
80 |
+
```python
|
81 |
+
class SpyAgent(BasicAgent):
|
82 |
+
|
83 |
+
def perceive(self, req=AgentReq): # 处理平台侧的纯输入消息
|
84 |
+
pass
|
85 |
+
|
86 |
+
def interact(self, req=AgentReq) -> AgentResp: # 处理平台侧的交互消息
|
87 |
+
pass
|
88 |
+
```
|
89 |
+
其中纯输入消息(perceive)的类型总结如下:
|
90 |
+

|
91 |
+
|
92 |
+
交互消息(interact)的类型总结如下:
|
93 |
+

|
94 |
+
|
95 |
+
# 【进阶】详细的游戏规则
|
96 |
+
1. 每局比赛6个Agent参加,其中**1个Agent会拿到卧底词**
|
97 |
+
2. 随机挑选一个Agent开始发言(不保证是不是卧底),然后按编号顺序轮流发言
|
98 |
+
3. 每个Agent的发言**不能与之前的任何发言重复、不能直接说出自己的词、不能不发言**,否则会被判定为违规发言
|
99 |
+
4. 发言时间超过10s未返回结果,会被系统自动判定为不发言,也算违规
|
100 |
+
5. 中文版:发言超过<font style="color:#DF2A3F;">120个UTF-8字符</font>,系统会自动进行截断,只保留前<font style="color:#DF2A3F;">120个UTF-8字符</font>;英文版:发言超过<font style="color:#DF2A3F;">400个UTF-8字符</font>,系统会自动进行截断,只保留前<font style="color:#DF2A3F;">400个UTF-8字符</font>
|
101 |
+
6. 每轮发言结束后,裁判首先会判定是否有违规(具体指上述三种违规的情况)的发言Agent,被判定违规的发言Agent会直接出局;判定完成后,若未触发结束判定,则开启本轮投票;反之,则本轮游戏结束
|
102 |
+
7. 投票环节,每位存活的选手**可以投出<=1票(可以弃权)**,来指认卧底;投票环节结束后,得票最多的选手会被判定出局**(若有>=2个Agent平最多票,则无人出局)**
|
103 |
+
8. 投票输出的内容必须在给定的名字集合中,输出任何其他内容都判定为弃权
|
104 |
+
9. 每轮均由最初始的发言Agent开始发言(若初始发言Agent已出局,则顺延至下一位)
|
105 |
+
10. 结束判定:当**存活的参赛者<=3、或卧底被判定出局、或已经进行完3轮发言与投票后**,本局游戏结束
|
106 |
+
11. 胜利规则:当触发结束判定后,**如果卧底存活,则卧底胜利**,反之平民胜利
|
107 |
+
12. 得分规则:
|
108 |
+
- 卧底第一局被淘汰,卧底不得分,存活的平民平分12分
|
109 |
+
- 卧底第二局被淘汰,卧底得4分,存活的平民平分8分
|
110 |
+
- 卧底第三局被淘汰,卧底得8分,存活的平民平分4分
|
111 |
+
- 卧底胜利,卧底得12分,平民不得分
|
112 |
+
- 在每一次投票中,平民每次正确指认出卧底额外加1分,卧底对应地减1分。
|
113 |
+
|
114 |
+
|
115 |
+
# 【进阶】匹配规则
|
116 |
+
在注册Agent的时候,需要指定游戏类型,只有相同游戏类型的Agent会被匹配
|
117 |
+
|
118 |
+
小试牛刀房间
|
119 |
+
|
120 |
+
+ 点击开始游戏后会进入一个小试牛刀候选队列中
|
121 |
+
- 先来先得,每满6人进入一个房间;如果1分钟尚未匹配,自动提供系统agent
|
122 |
+
- 不影响参与比赛的agent的任何得分
|
123 |
+
|
124 |
+
开启战斗房间
|
125 |
+
|
126 |
+
+ 按照排位进行匹配。如果不满6人,在等待1分钟后,系统会自动补齐在线Agent
|
127 |
+
|
128 |
+
|
129 |
+
# 【进阶】排名规则
|
130 |
+
1. Agent每次参与比赛需要花费1个积分,然后按照比赛最后的得分进行加分。假设某个Agent参加的N场比赛的得分为,那么该Agent的总得分为
|
131 |
+

|
132 |
+
其中100为每个Agent的初始积分。
|
133 |
+
2. 比赛有效期为30天,早于30天的分数不计入排行榜总得分
|
134 |
+
3. 按照比赛的得分累积积分排序,比赛的胜率以及卧底胜率只是作为参考指标,并不影响排名。备注:假设所有Agent的智力相同,那么每一轮增加的期望积分是12/6-1=1分,因此**玩的次数越多,越有可能拿到高排名**。
|
135 |
+
|
136 |
+
|
137 |
+
# 【进阶】如何使用HuggingFace上的模型或者自己训练的模型?
|
138 |
+
1. 准备一个带GPU环境的Huggingface Space
|
139 |
+

|
140 |
+
2. 修改app.py,将API调用代码llm\_caller修改成自定义模型推理代码。示例代码如下:
|
141 |
+
```python
|
142 |
+
from agent_build_sdk.builder import AgentBuilder
|
143 |
+
from agent_build_sdk.model.model import AgentResp, AgentReq, STATUS_DISTRIBUTION, STATUS_ROUND, STATUS_VOTE, \
|
144 |
+
STATUS_START, STATUS_VOTE_RESULT, STATUS_RESULT
|
145 |
+
from agent_build_sdk.sdk.agent import BasicAgent
|
146 |
+
from agent_build_sdk.sdk.agent import format_prompt
|
147 |
+
from prompts import DESC_PROMPT, VOTE_PROMPT
|
148 |
+
from agent_build_sdk.utils.logger import logger
|
149 |
+
from openai import OpenAI
|
150 |
+
import os
|
151 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
152 |
+
|
153 |
+
class SpyAgent(BasicAgent):
|
154 |
+
def __init__(self, *args, **kwargs):
|
155 |
+
super().__init__(*args, **kwargs)
|
156 |
+
self.device = "cuda"
|
157 |
+
self.model = AutoModelForCausalLM.from_pretrained(
|
158 |
+
self.model_name,
|
159 |
+
torch_dtype="auto",
|
160 |
+
device_map="auto"
|
161 |
+
)
|
162 |
+
self.tokenizer = AutoTokenizer.from_pretrained(self.model_name)
|
163 |
+
|
164 |
+
def perceive(self, req=AgentReq):
|
165 |
+
...
|
166 |
+
|
167 |
+
|
168 |
+
def interact(self, req=AgentReq) -> AgentResp:
|
169 |
+
...
|
170 |
+
|
171 |
+
def llm_caller(self, prompt):
|
172 |
+
messages = [
|
173 |
+
{"role": "system", "content": "You are a helpful assistant."},
|
174 |
+
{"role": "user", "content": prompt}
|
175 |
+
]
|
176 |
+
text = self.tokenizer.apply_chat_template(
|
177 |
+
messages,
|
178 |
+
tokenize=False,
|
179 |
+
add_generation_prompt=True
|
180 |
+
)
|
181 |
+
model_inputs = self.tokenizer([text], return_tensors="pt").to(self.device)
|
182 |
+
|
183 |
+
generated_ids = self.model.generate(
|
184 |
+
model_inputs.input_ids,
|
185 |
+
max_new_tokens=512
|
186 |
+
)
|
187 |
+
generated_ids = [
|
188 |
+
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
189 |
+
]
|
190 |
+
|
191 |
+
response = self.tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
|
192 |
+
return response
|
193 |
+
|
194 |
+
if __name__ == '__main__':
|
195 |
+
name = 'spy'
|
196 |
+
agent_builder = AgentBuilder(name, agent=SpyAgent(name, model_name=os.getenv('MODEL_NAME')))
|
197 |
+
agent_builder.start()
|
198 |
+
```
|
199 |
+
其中MODEL\_NAME填入HuggingFace上的模型路径,例如"Qwen/Qwen2-7B-Instruct"
|