XMWAI 0.2.3__tar.gz → 0.2.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of XMWAI might be problematic. Click here for more details.
- {xmwai-0.2.3/XMWAI.egg-info → xmwai-0.2.5}/PKG-INFO +1 -1
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/__init__.py +3 -2
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/bomb_core.py +3 -0
- xmwai-0.2.5/XMWAI/cookbook_core.py +148 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/core.py +71 -78
- xmwai-0.2.5/XMWAI/gif/__init__.py +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/idiom_core.py +3 -1
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/magic_core.py +9 -6
- {xmwai-0.2.3 → xmwai-0.2.5/XMWAI.egg-info}/PKG-INFO +1 -1
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI.egg-info/SOURCES.txt +2 -1
- {xmwai-0.2.3 → xmwai-0.2.5}/setup.py +2 -2
- xmwai-0.2.3/XMWAI/idiom.json +0 -1
- {xmwai-0.2.3 → xmwai-0.2.5}/LICENSE.txt +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/MANIFEST.in +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/README.md +0 -0
- {xmwai-0.2.3/XMWAI/gif → xmwai-0.2.5/XMWAI/file}/__init__.py +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/0.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/1.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/10.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/11.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/12.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/13.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/14.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/15.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/16.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/17.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/18.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/19.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/2.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/20.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/21.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/22.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/23.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/24.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/25.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/26.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/27.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/28.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/29.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/3.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/30.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/31.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/32.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/33.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/34.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/35.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/36.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/37.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/38.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/39.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/4.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/40.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/41.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/42.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/43.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/44.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/45.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/46.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/47.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/48.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/49.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/5.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/50.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/51.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/52.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/53.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/54.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/55.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/56.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/57.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/58.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/59.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/6.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/60.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/61.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/62.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/63.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/64.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/65.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/66.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/67.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/68.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/69.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/7.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/70.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/71.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/72.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/73.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/74.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/75.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/76.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/77.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/78.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/79.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/8.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/80.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/81.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/82.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/83.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/84.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/85.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI/gif/9.gif +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI.egg-info/dependency_links.txt +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI.egg-info/requires.txt +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/XMWAI.egg-info/top_level.txt +0 -0
- {xmwai-0.2.3 → xmwai-0.2.5}/setup.cfg +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from .core import story, photo, reply, poem, get_access_token, crack # 从子模块导入函数到顶层
|
|
2
2
|
from .magic_core import birthday # 从子模块导入函数到顶层
|
|
3
3
|
from .bomb_core import bomb # 从子模块导入函数到顶层
|
|
4
|
-
from .idiom_core import idiom,searchIdiom,get_json_path # 从子模块导入函数到顶层
|
|
4
|
+
from .idiom_core import idiom, searchIdiom, get_json_path # 从子模块导入函数到顶层
|
|
5
5
|
|
|
6
|
-
__all__ = ["story", "photo", "reply", "poem", "get_access_token", 'birthday', 'bomb',
|
|
6
|
+
__all__ = ["story", "photo", "reply", "poem", "get_access_token", 'birthday', 'bomb',
|
|
7
|
+
"idiom", "searchIdiom", "get_json_path", "crack"] # 可选:明确导出的内容
|
|
@@ -3,6 +3,8 @@ import time
|
|
|
3
3
|
from importlib.resources import files
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
|
+
|
|
7
|
+
# U1-09 精准打击----------------------------------
|
|
6
8
|
def bomb(screen, t):
|
|
7
9
|
"""显示炸弹爆炸动画(包含坐标检查和自动预加载)"""
|
|
8
10
|
x = t.xcor()
|
|
@@ -58,3 +60,4 @@ def bomb(screen, t):
|
|
|
58
60
|
b.clear()
|
|
59
61
|
screen.update()
|
|
60
62
|
screen.tracer(True)
|
|
63
|
+
# -------------------------------------------
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import requests
|
|
2
|
+
import json
|
|
3
|
+
import webbrowser
|
|
4
|
+
import re
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def cookbook(m, t, s, key):
|
|
8
|
+
if key != "CaJQ":
|
|
9
|
+
return "密钥错误,无法生成食谱。"
|
|
10
|
+
|
|
11
|
+
messagesList = [
|
|
12
|
+
{
|
|
13
|
+
"role": "system",
|
|
14
|
+
"content": "天马行空的创意菜厨师"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"role": "user",
|
|
18
|
+
"content": f"请以{m}为主菜,{s}为配菜,{t}为烹饪方式写一个创意食谱,结果中不要*"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
url = "https://qianfan.baidubce.com/v2/chat/completions"
|
|
23
|
+
payload = json.dumps({
|
|
24
|
+
"model": "ernie-4.5-turbo-32k",
|
|
25
|
+
"messages": messagesList
|
|
26
|
+
}, ensure_ascii=False)
|
|
27
|
+
|
|
28
|
+
headers = {
|
|
29
|
+
'Content-Type': 'application/json',
|
|
30
|
+
'appid': '',
|
|
31
|
+
'Authorization': 'Bearer bce-v3/ALTAK-cGbxpVA5AbSz6h8nbLaFh/b539762075d55c76d93dc78bcf0a91beeaf0490a'
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
try:
|
|
35
|
+
response = requests.post(url, headers=headers, data=payload.encode("utf-8"))
|
|
36
|
+
response_data = json.loads(response.text)
|
|
37
|
+
content = response_data["choices"][0]["message"]["content"]
|
|
38
|
+
except Exception as e:
|
|
39
|
+
return f"接口调用失败:{e}"
|
|
40
|
+
|
|
41
|
+
# 提取标题和正文(防止 IndexError)
|
|
42
|
+
lines = content.strip().split("\n")
|
|
43
|
+
title = lines[0] if len(lines) >= 1 else "创意菜谱"
|
|
44
|
+
content_body = "\n".join(lines[1:]) if len(lines) >= 2 else "(无正文内容)"
|
|
45
|
+
|
|
46
|
+
# 构造 HTML
|
|
47
|
+
html = f"""
|
|
48
|
+
<!DOCTYPE html>
|
|
49
|
+
<html lang="zh">
|
|
50
|
+
<head>
|
|
51
|
+
<meta charset="UTF-8">
|
|
52
|
+
<title>{title}</title>
|
|
53
|
+
<style>
|
|
54
|
+
body {{
|
|
55
|
+
margin: 0;
|
|
56
|
+
padding: 0;
|
|
57
|
+
font-family: "微软雅黑", sans-serif;
|
|
58
|
+
background: #2c2c2c url('bg.jpeg') no-repeat center center fixed;
|
|
59
|
+
background-size: cover;
|
|
60
|
+
color: #eee;
|
|
61
|
+
}}
|
|
62
|
+
|
|
63
|
+
.container {{
|
|
64
|
+
max-width: 800px;
|
|
65
|
+
margin: 40px auto;
|
|
66
|
+
background: rgba(255, 255, 255, 0.95);
|
|
67
|
+
border-radius: 15px;
|
|
68
|
+
padding: 40px 40px 30px 40px;
|
|
69
|
+
box-shadow: 0 0 25px rgba(0, 0, 0, 0.3);
|
|
70
|
+
color: #333;
|
|
71
|
+
}}
|
|
72
|
+
|
|
73
|
+
.banner {{
|
|
74
|
+
position: relative;
|
|
75
|
+
width: 100%;
|
|
76
|
+
height: 250px;
|
|
77
|
+
background-image: url('bg.jpeg');
|
|
78
|
+
background-size: cover;
|
|
79
|
+
background-position: center;
|
|
80
|
+
border-radius: 15px 15px 0 0;
|
|
81
|
+
display: flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
justify-content: center;
|
|
84
|
+
}}
|
|
85
|
+
|
|
86
|
+
.banner::after {{
|
|
87
|
+
content: "";
|
|
88
|
+
position: absolute;
|
|
89
|
+
top: 0; left: 0; right: 0; bottom: 0;
|
|
90
|
+
background: rgba(0, 0, 0, 0.4);
|
|
91
|
+
border-radius: 15px 15px 0 0;
|
|
92
|
+
}}
|
|
93
|
+
|
|
94
|
+
.banner h1 {{
|
|
95
|
+
position: relative;
|
|
96
|
+
color: #fff;
|
|
97
|
+
font-size: 28px;
|
|
98
|
+
text-shadow: 1px 1px 4px #000;
|
|
99
|
+
z-index: 1;
|
|
100
|
+
}}
|
|
101
|
+
|
|
102
|
+
h2 {{
|
|
103
|
+
color: #555;
|
|
104
|
+
border-bottom: 1px solid #ddd;
|
|
105
|
+
padding-bottom: 5px;
|
|
106
|
+
margin-top: 20px;
|
|
107
|
+
}}
|
|
108
|
+
|
|
109
|
+
p {{
|
|
110
|
+
font-size: 18px;
|
|
111
|
+
margin: 10px 0;
|
|
112
|
+
}}
|
|
113
|
+
|
|
114
|
+
pre {{
|
|
115
|
+
background: #f8f8f8;
|
|
116
|
+
padding: 15px;
|
|
117
|
+
border-radius: 8px;
|
|
118
|
+
overflow-x: auto;
|
|
119
|
+
font-family: "Courier New", monospace;
|
|
120
|
+
font-size: 16px;
|
|
121
|
+
}}
|
|
122
|
+
</style>
|
|
123
|
+
</head>
|
|
124
|
+
<body>
|
|
125
|
+
<div class="container">
|
|
126
|
+
<div class="banner">
|
|
127
|
+
<h1>🍽 {title}</h1>
|
|
128
|
+
</div>
|
|
129
|
+
<p><strong>主菜:</strong>{m}</p>
|
|
130
|
+
<p><strong>配菜:</strong>{s}</p>
|
|
131
|
+
<p><strong>做法:</strong>{t}</p>
|
|
132
|
+
<h2>生成的食谱:</h2>
|
|
133
|
+
<pre>{content_body}</pre>
|
|
134
|
+
</div>
|
|
135
|
+
</body>
|
|
136
|
+
</html>
|
|
137
|
+
"""
|
|
138
|
+
|
|
139
|
+
# 保存为 HTML 文件
|
|
140
|
+
filename = title.strip().replace(" ", "_").replace(":", "").replace(":", "") + ".html"
|
|
141
|
+
filename = re.sub(r'[\/\\\:\*\?\"\<\>\|]', '', f"{title}.html")
|
|
142
|
+
with open(filename, "w", encoding="utf-8") as f:
|
|
143
|
+
f.write(html)
|
|
144
|
+
|
|
145
|
+
# 自动打开网页
|
|
146
|
+
webbrowser.open(filename)
|
|
147
|
+
|
|
148
|
+
return content + "\n"
|
|
@@ -5,26 +5,30 @@ import os
|
|
|
5
5
|
import zipfile
|
|
6
6
|
|
|
7
7
|
|
|
8
|
+
# AI绘图大师函数
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
# U1-02 Story GPT----------------------------------
|
|
8
12
|
def story(role, time, address, event, key=""):
|
|
9
13
|
content = role+time+address+event
|
|
10
14
|
url = "https://spark-api-open.xf-yun.com/v1/chat/completions"
|
|
11
15
|
data = {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
16
|
+
"max_tokens": 1000, # 回复长度限制
|
|
17
|
+
"top_k": 4, # 灵活度
|
|
18
|
+
"temperature": 0.5, # 随机性
|
|
19
|
+
"messages": [
|
|
20
|
+
{
|
|
21
|
+
# 设置对话背景或赋予模型角色,该设定会贯穿整轮对话,对全局的模型生成结果产生影响。对应作为'role'为'system'时,'content'的值
|
|
22
|
+
"role": "system",
|
|
23
|
+
"content": "我是一个非常会写童话的儿童写作作家,根据我写出的关键词,帮我生成一篇童话故事。"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
# 对大模型发出的具体指令,用于描述需要大模型完成的目标任务和需求说明。会与角色设定中的内容拼接,共同作为'role'为'system'时,'content'的值
|
|
27
|
+
"role": "user",
|
|
28
|
+
"content": content
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"model": "4.0Ultra"
|
|
28
32
|
}
|
|
29
33
|
data["stream"] = True
|
|
30
34
|
if key == "":
|
|
@@ -34,7 +38,7 @@ def story(role, time, address, event, key=""):
|
|
|
34
38
|
print("秘钥错误!请重新输入!")
|
|
35
39
|
return "秘钥错误!请重新输入!"
|
|
36
40
|
header = {
|
|
37
|
-
|
|
41
|
+
"Authorization": "Bearer paNyL"+key+"OpyOBmflKZp:yhBhAlSFMwaqlVKAtDbv"
|
|
38
42
|
}
|
|
39
43
|
response = requests.post(url, headers=header, json=data, stream=True)
|
|
40
44
|
|
|
@@ -43,7 +47,7 @@ def story(role, time, address, event, key=""):
|
|
|
43
47
|
contents = ""
|
|
44
48
|
result = response.iter_lines(decode_unicode="utf-8")
|
|
45
49
|
result = str(list(result))
|
|
46
|
-
|
|
50
|
+
|
|
47
51
|
# 正则表达式模式
|
|
48
52
|
pattern = r'"content":"(.*?)"'
|
|
49
53
|
|
|
@@ -55,8 +59,10 @@ def story(role, time, address, event, key=""):
|
|
|
55
59
|
s = s.replace('\\', "")
|
|
56
60
|
s = s.replace("n", "")
|
|
57
61
|
return s
|
|
62
|
+
# -------------------------------------------------
|
|
58
63
|
|
|
59
64
|
|
|
65
|
+
# U1-06 我说你画-----------------------------------
|
|
60
66
|
def photo(content, style, size, key=""):
|
|
61
67
|
# 图像生成的 API URL
|
|
62
68
|
if key == "":
|
|
@@ -72,18 +78,18 @@ def photo(content, style, size, key=""):
|
|
|
72
78
|
headers = {
|
|
73
79
|
"Content-Type": "application/json"
|
|
74
80
|
}
|
|
75
|
-
resolution = {"1024*1024":3, "1280*720":4, "720*1280":5}
|
|
81
|
+
resolution = {"1024*1024": 3, "1280*720": 4, "720*1280": 5}
|
|
76
82
|
if content == "":
|
|
77
83
|
return
|
|
78
84
|
if style == "":
|
|
79
|
-
style="默认"
|
|
85
|
+
style = "默认"
|
|
80
86
|
if size == "":
|
|
81
|
-
size="1024*1024"
|
|
82
|
-
|
|
87
|
+
size = "1024*1024"
|
|
88
|
+
|
|
83
89
|
# 请求的主体内容
|
|
84
90
|
data = {
|
|
85
91
|
'prompt': content, # 你想要生成的图像描述
|
|
86
|
-
'imgStyle': style,
|
|
92
|
+
'imgStyle': style,
|
|
87
93
|
'imgSize': resolution[size] # 图像的尺寸
|
|
88
94
|
}
|
|
89
95
|
|
|
@@ -99,27 +105,29 @@ def photo(content, style, size, key=""):
|
|
|
99
105
|
skin = requests.get(photo_url).content
|
|
100
106
|
with open("{}.png".format(content), 'wb') as s:
|
|
101
107
|
s.write(skin)
|
|
108
|
+
# ------------------------------------------------
|
|
102
109
|
|
|
103
110
|
|
|
111
|
+
# U1-11 百变助手----------------------------------
|
|
104
112
|
def reply(role, content, key=""):
|
|
105
113
|
url = "https://spark-api-open.xf-yun.com/v1/chat/completions"
|
|
106
114
|
data = {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
115
|
+
"max_tokens": 60, # 回复长度限制
|
|
116
|
+
"top_k": 5, # 灵活度
|
|
117
|
+
"temperature": 0.6, # 随机性
|
|
118
|
+
"messages": [
|
|
119
|
+
{
|
|
120
|
+
# 设置对话背景或赋予模型角色,该设定会贯穿整轮对话,对全局的模型生成结果产生影响。对应作为'role'为'system'时,'content'的值
|
|
121
|
+
"role": "system",
|
|
122
|
+
"content": "你是一位非常优秀的" + role + ",请根据我的提问,非常科学、有趣和严谨的回答我。"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
# 对大模型发出的具体指令,用于描述需要大模型完成的目标任务和需求说明。会与角色设定中的内容拼接,共同作为'role'为'system'时,'content'的值
|
|
126
|
+
"role": "user",
|
|
127
|
+
"content": content + "(一定要80个字左右,语句必须完整,语句必须完整,不准出现断句。)"
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"model": "4.0Ultra"
|
|
123
131
|
}
|
|
124
132
|
data["stream"] = True
|
|
125
133
|
if key == "":
|
|
@@ -129,7 +137,7 @@ def reply(role, content, key=""):
|
|
|
129
137
|
print("秘钥错误!请重新输入!")
|
|
130
138
|
return "秘钥错误!请重新输入!"
|
|
131
139
|
header = {
|
|
132
|
-
|
|
140
|
+
"Authorization": "Bearer paNyL"+key+"OpyOBmflKZp:yhBhAlSFMwaqlVKAtDbv"
|
|
133
141
|
}
|
|
134
142
|
response = requests.post(url, headers=header, json=data, stream=True)
|
|
135
143
|
|
|
@@ -138,7 +146,7 @@ def reply(role, content, key=""):
|
|
|
138
146
|
contents = ""
|
|
139
147
|
result = response.iter_lines(decode_unicode="utf-8")
|
|
140
148
|
result = str(list(result))
|
|
141
|
-
|
|
149
|
+
|
|
142
150
|
# 正则表达式模式
|
|
143
151
|
pattern = r'"content":"(.*?)"'
|
|
144
152
|
|
|
@@ -152,32 +160,13 @@ def reply(role, content, key=""):
|
|
|
152
160
|
if '*' in s:
|
|
153
161
|
s = s.replace('*', "")
|
|
154
162
|
sum_ = """"""
|
|
155
|
-
for i in range(0,len(s),17):
|
|
163
|
+
for i in range(0, len(s), 17):
|
|
156
164
|
sum_ = sum_ + s[i:i+17] + "\n"
|
|
157
165
|
return sum_
|
|
166
|
+
# ------------------------------------------------
|
|
158
167
|
|
|
159
168
|
|
|
160
|
-
|
|
161
|
-
"""
|
|
162
|
-
使用 AK,SK 生成鉴权签名(Access Token)
|
|
163
|
-
:return: access_token,或是None(如果错误)
|
|
164
|
-
"""
|
|
165
|
-
API_KEY = "Ox1CTF00wD50XmXF1hiPSqdh"
|
|
166
|
-
SECRET_KEY = "4ZQt4Zj"+ key +"zuT2XtBtRojdRZ3HgZOtrP"
|
|
167
|
-
url = "https://aip.baidubce.com/oauth/2.0/token"
|
|
168
|
-
params = {
|
|
169
|
-
"grant_type": "client_credentials",
|
|
170
|
-
"client_id": API_KEY,
|
|
171
|
-
"client_secret": SECRET_KEY
|
|
172
|
-
}
|
|
173
|
-
response = requests.post(url, params=params)
|
|
174
|
-
if response.status_code == 200:
|
|
175
|
-
return response.json().get("access_token")
|
|
176
|
-
else:
|
|
177
|
-
print("Error getting access token:", response.text)
|
|
178
|
-
return None
|
|
179
|
-
|
|
180
|
-
|
|
169
|
+
# U2-05 码字成诗----------------------------------
|
|
181
170
|
def poem(title, key=""):
|
|
182
171
|
if key == "":
|
|
183
172
|
print("没有秘钥!请提供秘钥!")
|
|
@@ -186,18 +175,18 @@ def poem(title, key=""):
|
|
|
186
175
|
print("秘钥错误!请重新输入!")
|
|
187
176
|
return "秘钥错误!请重新输入!"
|
|
188
177
|
messagesList = [
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
178
|
+
{
|
|
179
|
+
"role": "system",
|
|
180
|
+
"content": "唐代诗人"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"role": "user",
|
|
184
|
+
"content": f"请以《{title}》为题,创作一首七言绝句,每句7个字,一共4句,符合古诗韵律规范,内容积极乐观向上,适合中小学生阅读,不要解析,不要题目,不要标点符号,所有文字放在一行"
|
|
185
|
+
}
|
|
186
|
+
]
|
|
187
|
+
|
|
199
188
|
url = "https://qianfan.baidubce.com/v2/chat/completions"
|
|
200
|
-
|
|
189
|
+
|
|
201
190
|
payload = json.dumps({
|
|
202
191
|
"model": "ernie-4.5-turbo-32k",
|
|
203
192
|
"messages": messagesList
|
|
@@ -207,22 +196,26 @@ def poem(title, key=""):
|
|
|
207
196
|
'appid': '',
|
|
208
197
|
'Authorization': 'Bearer bce-v3/ALTAK-cGbxpVA5AbSz6h8nbLaFh/b539762075d55c76d93dc78bcf0a91beeaf0490a'
|
|
209
198
|
}
|
|
210
|
-
|
|
211
|
-
response = requests.request(
|
|
212
|
-
|
|
199
|
+
|
|
200
|
+
response = requests.request(
|
|
201
|
+
"POST", url, headers=headers, data=payload.encode("utf-8"))
|
|
202
|
+
|
|
213
203
|
response_data = json.loads(response.text)
|
|
214
204
|
content = response_data["choices"][0]["message"]["content"]
|
|
215
205
|
content = content.replace("\n", "")
|
|
216
206
|
while " " in content:
|
|
217
207
|
content = content.replace(" ", "")
|
|
218
208
|
return content
|
|
209
|
+
# ------------------------------------------------
|
|
219
210
|
|
|
220
211
|
|
|
212
|
+
# U2-06 凯撒加密----------------------------------
|
|
221
213
|
def crack(name, pwd):
|
|
222
214
|
try:
|
|
223
|
-
zFile=zipfile.ZipFile(name + ".zip")
|
|
215
|
+
zFile = zipfile.ZipFile(name + ".zip")
|
|
224
216
|
zFile.extractall(pwd=str(pwd).encode())
|
|
225
217
|
print("已成功破解密码")
|
|
226
218
|
os.system("Treasuremap.png")
|
|
227
219
|
except:
|
|
228
220
|
print("密码错误")
|
|
221
|
+
# ------------------------------------------------
|
|
File without changes
|
|
@@ -4,9 +4,10 @@ from importlib.resources import files
|
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
# U2-04 成语接龙----------------------------------
|
|
7
8
|
def get_json_path():
|
|
8
9
|
"""获取 idiom.json 的正确路径(兼容 PyPI 安装后的包内资源)"""
|
|
9
|
-
return Path(files("XMWAI").joinpath("idiom.json"))
|
|
10
|
+
return Path(files("XMWAI/file").joinpath("idiom.json"))
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
def idiom(word, mode=0):
|
|
@@ -52,3 +53,4 @@ def searchIdiom(text, num=1):
|
|
|
52
53
|
except:
|
|
53
54
|
pass
|
|
54
55
|
return random.choice(wordList) if wordList else False
|
|
56
|
+
# -------------------------------------------------
|
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
from datetime import date
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
# U1-07 生日猜猜猜----------------------------------
|
|
3
5
|
def birthday():
|
|
4
6
|
while True:
|
|
5
7
|
try:
|
|
6
8
|
# 获取并验证生日计算结果
|
|
7
9
|
code = int(input("\n从上方选出你的生日日期\n将生日的月份乘以4,加上9,再乘以25,最后加上日期后的结果:"))
|
|
8
|
-
secret_number = code - 225
|
|
10
|
+
secret_number = code - 225
|
|
9
11
|
# 解析月份和日期
|
|
10
12
|
month = secret_number // 100
|
|
11
13
|
day = secret_number % 100
|
|
12
|
-
|
|
14
|
+
|
|
13
15
|
# 基础验证
|
|
14
16
|
if not (1 <= month <= 12 and 1 <= day <= 31):
|
|
15
17
|
raise ValueError("神秘数字解析失败,请确认计算正确!✨")
|
|
16
|
-
|
|
18
|
+
|
|
17
19
|
# 创建日期对象
|
|
18
20
|
today = date.today()
|
|
19
21
|
try:
|
|
20
22
|
current_year_bday = date(today.year, month, day)
|
|
21
23
|
except ValueError as e:
|
|
22
24
|
raise ValueError(f"🔮 魔法日历显示:{str(e)},请检查你的生日日期!")
|
|
23
|
-
|
|
25
|
+
|
|
24
26
|
# 计算时间差
|
|
25
27
|
if current_year_bday < today:
|
|
26
28
|
next_bday = date(today.year + 1, month, day)
|
|
@@ -35,7 +37,7 @@ def birthday():
|
|
|
35
37
|
days_left = (current_year_bday - today).days
|
|
36
38
|
print(f"\n🎂 你的生日是 {month}月{day}日")
|
|
37
39
|
print(f"⏳ 距离生日还有 {days_left} 天")
|
|
38
|
-
|
|
40
|
+
|
|
39
41
|
# 添加节日彩蛋
|
|
40
42
|
if (month, day) == (12, 25):
|
|
41
43
|
print("🎁 圣诞奇迹儿!你的到来就是最棒的圣诞礼物!")
|
|
@@ -56,7 +58,8 @@ def birthday():
|
|
|
56
58
|
print("🪅 双倍快乐王!全世界的孩子都在为你庆生!")
|
|
57
59
|
print("🎠 愿你的生活永远像游乐场,每天都有新发现!")
|
|
58
60
|
break # 退出循环
|
|
59
|
-
|
|
61
|
+
|
|
60
62
|
except ValueError as e:
|
|
61
63
|
print(f"\n⚠️ 魔法出错啦:{e}")
|
|
62
64
|
print("请重新输入正确的神秘数字!")
|
|
65
|
+
# -------------------------------------------------
|
|
@@ -4,8 +4,8 @@ README.md
|
|
|
4
4
|
setup.py
|
|
5
5
|
XMWAI/__init__.py
|
|
6
6
|
XMWAI/bomb_core.py
|
|
7
|
+
XMWAI/cookbook_core.py
|
|
7
8
|
XMWAI/core.py
|
|
8
|
-
XMWAI/idiom.json
|
|
9
9
|
XMWAI/idiom_core.py
|
|
10
10
|
XMWAI/magic_core.py
|
|
11
11
|
XMWAI.egg-info/PKG-INFO
|
|
@@ -13,6 +13,7 @@ XMWAI.egg-info/SOURCES.txt
|
|
|
13
13
|
XMWAI.egg-info/dependency_links.txt
|
|
14
14
|
XMWAI.egg-info/requires.txt
|
|
15
15
|
XMWAI.egg-info/top_level.txt
|
|
16
|
+
XMWAI/file/__init__.py
|
|
16
17
|
XMWAI/gif/0.gif
|
|
17
18
|
XMWAI/gif/1.gif
|
|
18
19
|
XMWAI/gif/10.gif
|
|
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|
|
2
2
|
|
|
3
3
|
setup(
|
|
4
4
|
name="XMWAI", # 包名(pip install XMWAI)
|
|
5
|
-
version="0.2.
|
|
5
|
+
version="0.2.5", # 初始版本号
|
|
6
6
|
author="pydevelopment", # 作者
|
|
7
7
|
author_email="hekai@xiaoma.cn", # 邮箱
|
|
8
8
|
description="Small code King AI related library", # 简短描述
|
|
@@ -10,7 +10,7 @@ setup(
|
|
|
10
10
|
long_description_content_type="text/markdown", # 描述格式
|
|
11
11
|
url="https://github.com/Tonykai88/XMWAI.git", # GitHub 链接
|
|
12
12
|
packages=find_packages(), # 自动找包
|
|
13
|
-
include_package_data=True,
|
|
13
|
+
include_package_data=True, # 若没有它,包里面的除代码文件,都无法打包。
|
|
14
14
|
install_requires=[
|
|
15
15
|
"requests>=2.32.3", # 依赖包
|
|
16
16
|
],
|