## 1. [2025年11月最新AI排行,Gemini3.0断崖式领先!(附使用教程)](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483657&idx=1&sn=314e947b7a3d59ae6e1dda438d072ea2&chksm=f0a0c3cdc7d74adb00b74b6c43498733f02dc59a589459a91133bf999358d542b1183f31aff7#rd)**发布时间:** 2025年11月21日 13:21### 内容11月份确实是令人激动的时刻,马斯克新发布的地表最强AI模型grok4.1还没坐稳Ai宝座,被谷歌新发布的Ai大语言模型gemini3.o一脚踢下去了,并且成为时间最强AI。**排行榜:**数据来源:``` perlhttps://livebench.ai/#/```**使用方法:**``` javascriptGoogle Gemini 官方网页版|https://gemini.google.comGoogle AI Studio|https://aistudio.google.com```------------------------------------------------------------## 2. [GEMINI-CLI——完全用Ai来接管服务器!](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483665&idx=1&sn=d359b4f7087c613c63ba027215a8eff5&chksm=f0a0c3d5c7d74ac3706ef1a1a53d7f67990e2a7302229ea570bfb640ceac08e875270650849b#rd)**发布时间:** 2025年11月22日 12:03### 内容大家好,今天给你们带来了安装gemini-cli并用它搭建一个Ai网站的教程。**1.安装Nodejs:**``` bashcd /tmp && curl -fsSL https://nodejs.org/dist/v20.19.0/node-v20.19.0-linux-x64.tar.xz | sudo tar -xJ -C /usr/local --strip-components=1 && sudo ln -sf /usr/local/bin/node /usr/bin/node && sudo ln -sf /usr/local/bin/npm /usr/bin/npm && sudo ln -sf /usr/local/bin/npx /usr/bin/npx && hash -r && node -v && npm -v```**2.安装Gemini-Cli:**``` cssnpm install -g @google/gemini-cli```**3.初始化:**输入gemini选择登录方式,第一个可以免费使用,需要登录谷歌账户完整认证即可:``` gemini```**4.使用:**输入gemini就可以和它聊天方式进行Ai创作创作比如:“帮我写一个每日热点网站”------------------------------------------------------------## 3. [Claude Code套壳GLM4.6,吊打Gemini3.0!——快速安装使用教程](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483674&idx=1&sn=03e1f9833b81c745d1fb7e5a7b274de6&chksm=f0a0c3dec7d74ac89a037a1b06fe7f1cc6318af21ac5230b3fc099e4064ccc1eb606e58f3d92#rd)**发布时间:** 2025年11月23日 15:59### 内容大家好!今天给你们带来了在windows环境中claudecode+glm免费安装使用教程!**1.安装nodejs:**``` apachehttps://npmmirror.com/mirrors/node/v24.11.1/node-v24.11.1-x64.msi```下载后一直点下一步安装即可。**2.安装GIT:**``` apachehttps://gh-proxy.org/https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/Git-2.52.0-64-bit.exe```claude显示需要git时安装,一直点next来安装**3.安装cmder:(可选)**``` rubyhttps://hk.gh-proxy.org/https://github.com/cmderdev/cmder/releases/download/v1.3.25/cmder.zip```解压后bin文件夹加入PATH环境变量即可,主要是cmd美化使用,可以不安装。**4.安装claudecode:**``` cssnpm install -g @anthropic-ai/claude-code```通过cmd安装**5.获取GLM密钥:**``` javascripthttps://open.bigmodel.cn/```注册就送100万免费token,先用着。**6.设置环境变量:**``` javascript变量:ANTHROPIC_BASE_URL 值:https://open.bigmodel.cn/api/anthropic`````` 变量:ANTHROPIC_AUTH_TOKEN 值:你的密钥`````` 变量:ANTHROPIC_MODEL 值:glm-4.6```**7.使用**(1)查看状态``` bash/claude status```(2)使用``` nginxclaude 帮我做一个博客```------------------------------------------------------------## 4. [香蕉来了,黄仁勋要黄了吗?(附使用教程)](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483683&idx=1&sn=6eefa9cecc51ac468a82d5515f6541fa&chksm=f0a0c3e7c7d74af1f2340d5dbdf4a6debf2b54c92a56f4c6e79a5f8c896f1d09d6f73409ff98#rd)**发布时间:** 2025年11月25日 03:32### 内容2025年11月20日 谷歌NanoBanana Pro图片生成模型正式发布,和前段发布的gemini3一样,完全使用谷歌自研芯的Ai片训练出来的。这表明英伟达再也不是算力扛把子,近期英伟达数千万股票遭到抛售,给英伟达股市带来了一定的波动,其中股神巴菲特抛售量最大,他已经在gemini3.0发布前夕就抛售了大量英伟达股票。黄仁勋也陆续发布了未来AI芯片和合作计划,股市暂时保住了。使用方法:``` bashhttps://gemini.google.com/ #官方网站https://zenmux.ai/ ##非官方网站```------------------------------------------------------------## 5. [四种CLI工具——让Ai帮你干活!](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483691&idx=1&sn=f8dac62199cf5c18f9ce01a1514ebbd5&chksm=f0a0c3efc7d74af974497408d360c2e49b159b78de382c04646fbe39b9c9599aeced54727f3a#rd)**发布时间:** 2025年11月25日 16:00### 内容大家好!今天给你们带来了四种终端cli工具的安装和使用方法。**1.Ollama Cli**安装:windows:``` javascripthttps://ollama.com/download/OllamaSetup.exe```linux:``` nginxcurl -fsSL https://ollama.ai/install.sh | sh```使用:``` nginxollama run gemma3```**2.****GitHub Copilot CLI**安装:``` cssnpm install -g @github/copilot```使用:``` copilot```**3.****Gemini CLI**``` cssnpm install -g @google/gemini-cli```使用:``` gemini```**4.****Claude Code**安装:``` cssnpm install -g @anthropic-ai/claude-code```使用:``` claude```------------------------------------------------------------## 6. [国产1B模型单方面碾压Gemini3.0pro!(附使用教程)](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483726&idx=1&sn=12373aed06c5d1d33430812b579e22e9&chksm=f0a0c38ac7d74a9cfa2159ddc2b1c65650796d11c4ddad969446f5bd912a8ca72cb9e809c2b7#rd)**发布时间:** 2025年11月28日 19:59### 内容腾讯在2025年11月25新发布的HunyuanOCR模型,图像识别OCR领域(文档、艺术字、街景、手写、广告、票据、截屏、游戏、视频)全面领先所有Ai模型,成为最强图像识别模型。其功能有图像识别文档解析等等。**1.使用教程**(1)启用 WSL 和虚拟化功能用powersheel管理员权限运行:``` bashdism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart```(2)安装 WSL 和 Linux 发行版``` csswsl --install```(3)设置 WSL 默认版本为 WSL2``` cswsl --set-default-version 2```重启电脑(4)安装git:``` bashsudo apt install git```(5)安装python``` bashcd /tmp && { curl -fL https://gh-proxy.org/https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.12.0+20231002-x86_64-unknown-linux-gnu-install_only.tar.gz || curl -fL https://launchpad.net/python-build-standalone/3.12/20231002/+download/cpython-3.12.0+20231002-x86_64-unknown-linux-gnu-install_only.tar.gz ; } | sudo tar -xz -C /opt 2>/dev/null && sudo rm -rf /opt/python/lib/python3.12/site-packages/pip* && /opt/python/bin/python3 -m ensurepip --upgrade >/dev/null 2>&1 && /opt/python/bin/python3 -m pip install -U pip >/dev/null 2>&1 && { sudo ln -sf /opt/python/bin/python3 /usr/bin/python3 && sudo ln -sf /opt/python/bin/python3 /usr/bin/python && sudo ln -sf /opt/python/bin/pip3 /usr/bin/pip && sudo ln -sf /opt/python/bin/pip3 /usr/bin/pip3 ; } 2>/dev/null && echo 'export PATH=/opt/python/bin:$PATH' | sudo tee /etc/profile.d/python312.sh >/dev/null && export PATH=/opt/python/bin:$PATH && hash -r && python -V && pip -V```(6)python镜像改成清华``` cspip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple```(7)安装定制化transformer``` rubypip install git+https://gh-proxy.org/https://github.com/huggingface/transformers@82a06db03535c49aa987719ed0746a76093b1ec4```(8)安装其他依赖(需要时可选)``` apachepip install torch==2.3.1 torchaudio==2.3.1 torchvision==0.18.1 pillow==9.0.0 numpy==1.21.0```使用实例:``` pythonfrom transformers import AutoProcessorfrom transformers import HunYuanVLForConditionalGenerationfrom PIL import Imageimport numpy as npimport requestsimport torchimport base64import requestsfrom io import BytesIOdef clean_repeated_substrings(text): """Clean repeated substrings in text""" n = len(text) if n<8000: return text for length in range(2, n // 10 + 1): candidate = text[-length:] count = 0 i = n - length while i >= 0 and text[i:i + length] == candidate: count += 1 i -= length if count >= 10: return text[:n - length * (count - 1)] return textdef get_image(input_source): if input_source.startswith(('http://', 'https://')): response = requests.get(input_source) response.raise_for_status() return Image.open(BytesIO(response.content)) else: return Image.open(input_source)def main(): model_name_or_path = "tencent/HunyuanOCR" processor = AutoProcessor.from_pretrained(model_name_or_path, use_fast=False) img_path = "https://hf-mirror.com/datasets/huggingface/documentation-images/resolve/main/chat-ui/tools-dark.png" messages1 = [ { "role": "user", "content": [ {"type": "image", "image": img_path}, {"type": "text", "text": ( "提取文档图片中正文的所有信息用markdown格式表示,其中页眉、页脚部分忽略,表格用html格式表达,文档中公式用latex格式表示,按照阅读顺序组织进行解析。" )}, ], } ] messages = [messages1] texts = [ processor.apply_chat_template(msg, tokenize=False, add_generation_prompt=True) for msg in messages ] image_inputs = get_image(img_path) inputs = processor( text=texts, images=image_inputs, padding=True, return_tensors="pt", ) model = HunYuanVLForConditionalGeneration.from_pretrained( model_name_or_path, attn_implementation="eager", dtype=torch.bfloat16, device_map="auto" ) with torch.no_grad(): device = next(model.parameters()).device inputs = inputs.to(device) generated_ids = model.generate(**inputs, max_new_tokens=1024, do_sample=False) if "input_ids" in inputs: input_ids = inputs.input_ids else: print("inputs: # fallback", inputs) input_ids = inputs.inputs generated_ids_trimmed = [ out_ids[len(in_ids):] for in_ids, out_ids in zip(input_ids, generated_ids) ] output_texts = clean_repeated_substrings(processor.batch_decode( generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False )) print(output_texts)if __name__ == '__main__': main()```or下载脚本:``` bashwget https://gh-proxy.org/https://github.com/Tencent-Hunyuan/HunyuanOCR/blob/main/Hunyuan-OCR-master/Hunyuan-OCR-hf/run_hy_ocr.py```运行脚本:``` nginxpython run_hy_ocr.py```设置加速下载:``` javascriptexport HF_ENDPOINT=https://hf-mirror.com```------------------------------------------------------------## 7. [用ai一秒成为顶级黑客——strikeMCP配置和使用](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483749&idx=1&sn=5477e5dae4e3e2b470aba4775352d0c0&chksm=f0a0c3a1c7d74ab736260bbed5a0e96bd83ce2c50736969a0209d4c5f2eb08b9c86daaf70058#rd)**发布时间:** 2025年12月3日 14:05### 内容大家好!今天给你们带来了Ai漏洞测试工具Hexstrike的安装使用教程,此项目通过利用AI帮我们发现更多网络安全漏洞。**1.克隆项目**``` bashgit clone https://github.com/0x4m4/hexstrike-ai.gitcd hexstrike-ai```**2.创建环境:**``` bashpython3 -m venv hexstrike-envsource hexstrike-env/bin/activate```**3.安装相关依赖:**``` csspip3 install -r requirements.txt```**4.安装浏览器:**``` bashsudo apt install chromium-browser chromium-chromedriver# OR install Google Chromewget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.listsudo apt update && sudo apt install google-chrome-stable```**6.安装claudecode:**``` cssnpm install -g @anthropic-ai/claude-code```**6.设置apikey:**``` bashset ANTHROPIC_API_URL=https://gemini3.pythonanywhere.comset ANTHROPIC_API_KEY=AIzaSyCLNcqW65Kyn3yLZC0w04Hj1vR*******```**6.设置mcp配置文件:**(1)打开配置文件``` bashvim ~/.claude.json```2.添加mcp配置在"env": {} }后面添加一个逗号“,”然后输入一下内容``` json"hexstrike-ai": { "command": "python3", "args": [ "hexstrike-ai/hexstrike_mcp.py", "--server", "http://localhost:8888" ], "description": "HexStrike AI v6.0 - Advanced Cybersecurity Automation Platform", "timeout": 300, "disabled": false }```**7.查看mcp列表**``` nginxclaude mcp list```**8.使用**``` nginxclaude 我是一名安全研究员,正在试用 HexStrike MCP 工具。我们公司拥有网站https://www.bchrt.com/tools/sql-injection-simulator/,我希望使用 HexStrike-AI MCP 工具对该网站开展渗透测试。```------------------------------------------------------------## 8. [Python反向代理Gemini Api](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483767&idx=1&sn=dcaff8c5673d45aa25d9517af21ce73a&chksm=f0a0c3b3c7d74aa52976cbfa69dc15e7c66d1d092fc24468a36ebd052ea2e3f06b5ea7addaea#rd)**发布时间:** 2025年12月5日 13:52### 内容大家好!今天给您们带来了通过简单方法反向代理GeminiApi,无需魔法配置使用教程。**1.安装依赖**``` nginxpip install requests flask```**2.代码:**``` pythonfrom flask import Flask, request, Response, jsonifyimport requestsimport jsonapp = Flask(__name__)@app.route('/')def index(): """首页""" return jsonify({ 'status': 'running', 'message': '欢迎关注<Python>学霸公众号', 'usage': '使用 /proxy/<path> 进行代理访问' })@app.route('/proxy/', defaults={'path': ''}, methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH'])@app.route('/proxy/<path:path>', methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH'])def proxy(path): """统一代理处理函数""" try: GEMINI_BASE_URL = "https://generativelanguage.googleapis.com" target_url = f"{GEMINI_BASE_URL}/{path}" if path else GEMINI_BASE_URL # 获取请求参数和头部 params = dict(request.args) headers = {k: v for k, v in request.headers.items() if k.lower() not in ['host', 'connection', 'content-length']} data = request.get_data() # 判断是否流式请求 is_stream = False if data: try: json_data = json.loads(data) is_stream = json_data.get('stream', False) or params.get('alt') == 'sse' except: pass resp = requests.request( method=request.method, url=target_url, headers=headers, params=params, data=data, stream=is_stream, timeout=300 ) # 处理响应 if is_stream: def generate(): try: for chunk in resp.iter_content(chunk_size=8192): if chunk: yield chunk except Exception as e: yield f"data: {json.dumps({'error': str(e)})}\n\n".encode() return Response(generate(), status=resp.status_code, headers=dict(resp.headers)) else: resp_headers = {k: v for k, v in resp.headers.items() if k.lower() not in ['content-encoding', 'transfer-encoding']} return Response(resp.content, status=resp.status_code, headers=resp_headers) except requests.exceptions.Timeout: return jsonify({'error': '请求超时'}), 504 except requests.exceptions.RequestException as e: return jsonify({'error': f'请求失败: {str(e)}'}), 502 except Exception as e: return jsonify({'error': f'服务器错误: {str(e)}'}), 500if __name__ == '__main__': app.run(host='0.0.0.0', port=8080, debug=False, threaded=True)```**3.使用:**``` swiftcurl -X POST "https://gemini3.pythonanywhere.com/proxy/v1beta/models/gemini-2.5-flash:generateContent?key=AIzaSyCLNcqW65Kyn3yLZC0w04Hj1vR5******A&alt=sse" ^ -H "Content-Type: application/json" ^ -d "{\"contents\":[{\"parts\":[{\"text\":\"你好\"}]}]}"```部署完之后把https://gemini3.pythonanywhere.com/换成自己域名或ip即可。输出:``` css{ "candidates": [ { "content": { "parts": [ { "text": "你好!有什么我能帮你的吗?" } ], "role": "model" }, "finishReason": "STOP", "index": 0 } ], "usageMetadata": { "promptTokenCount": 1, "candidatesTokenCount": 9, "totalTokenCount": 70, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 1 } ], "thoughtsTokenCount": 60 }, "modelVersion": "gemini-2.5-flash", "responseId": "ad0yac2mJ7Lv_uMPuM-****"}```------------------------------------------------------------## 9. [免费使用谷歌香蕉(Nano BananaPro)](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483773&idx=1&sn=98a03d40c2cb6358517341717a846dcc&chksm=f0a0c3b9c7d74aafe92d6f7c48dad3e985d993097af26bbf8a916d6422143a27766d4518084a#rd)**发布时间:** 2025年12月6日 11:35### 内容大家好,今天给你们带来了通过python使用图片神器香蕉(Nano Banana)的实例,只需要apikey就能免费使用banana图片生成和编辑功能。**使用地址:**``` javascripthttps://bananapro.pythonanywhere.com/```**源代码:**``` xmlfrom flask import Flask, render_template_string, request, jsonify, sessionimport requestsimport base64import osfrom datetime import datetimeimport jsonapp = Flask(__name__)app.secret_key = os.urandom(24)GEMINI_API_BASE = "https://generativelanguage.googleapis.com/v1beta"HTML_TEMPLATE = '''<!DOCTYPE html><htmllang="zh-CN"><head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width, initial-scale=1.0"> <title>Gemini AI 助手</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #f7f7f8; height: 100vh; display: flex; flex-direction: column; } .header { background: white; border-bottom: 1px solid #e5e5e5; padding: 16px 24px; display: flex; align-items: center; justify-content: space-between; box-shadow: 0 1px 3px rgba(0,0,0,0.05); } .header-left { display: flex; align-items: center; gap: 12px; } .logo { font-size: 24px; font-weight: 700; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .settings-btn { padding: 8px 16px; background: #f0f0f0; border: none; border-radius: 8px; cursor: pointer; font-size: 14px; transition: all 0.2s; display: flex; align-items: center; gap: 6px; } .settings-btn:hover { background: #e0e0e0; } .model-selector { padding: 8px 16px; border: 1px solid #e0e0e0; border-radius: 8px; background: white; font-size: 14px; cursor: pointer; transition: all 0.2s; } .model-selector:hover { border-color: #667eea; } .chat-container { flex: 1; overflow-y: auto; padding: 24px; display: flex; flex-direction: column; gap: 16px; } .message { display: flex; gap: 12px; max-width: 800px; animation: slideIn 0.3s ease; } @keyframes slideIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .message.user { margin-left: auto; flex-direction: row-reverse; } .message-avatar { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; } .user .message-avatar { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; } .assistant .message-avatar { background: #e5e5e5; } .message-content { background: white; padding: 12px 16px; border-radius: 16px; box-shadow: 0 1px 3px rgba(0,0,0,0.08); max-width: 100%; line-height: 1.6; } .user .message-content { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; } .message-content img { max-width: 100%; border-radius: 12px; margin-top: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .message-image-upload { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; } .uploaded-image-preview { position: relative; width: 100px; height: 100px; border-radius: 8px; overflow: hidden; border: 2px solid rgba(255,255,255,0.5); } .uploaded-image-preview img { width: 100%; height: 100%; object-fit: cover; margin: 0; } .input-area { background: white; border-top: 1px solid #e5e5e5; padding: 16px 24px; box-shadow: 0 -2px 10px rgba(0,0,0,0.05); } .input-wrapper { max-width: 800px; margin: 0 auto; position: relative; } .image-preview-container { display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; } .image-preview-item { position: relative; width: 80px; height: 80px; border-radius: 8px; overflow: hidden; border: 2px solid #e0e0e0; } .image-preview-item img { width: 100%; height: 100%; object-fit: cover; } .remove-image { position: absolute; top: 4px; right: 4px; width: 20px; height: 20px; background: rgba(0,0,0,0.7); color: white; border: none; border-radius: 50%; cursor: pointer; font-size: 12px; display: flex; align-items: center; justify-content: center; padding: 0; } .remove-image:hover { background: rgba(0,0,0,0.9); } .input-container { display: flex; gap: 8px; align-items: flex-end; background: #f7f7f8; border-radius: 24px; padding: 8px 12px; border: 1px solid #e0e0e0; transition: all 0.2s; } .input-container:focus-within { border-color: #667eea; box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); } .file-upload-btn { width: 36px; height: 36px; background: transparent; border: none; border-radius: 8px; cursor: pointer; font-size: 20px; display: flex; align-items: center; justify-content: center; transition: all 0.2s; flex-shrink: 0; } .file-upload-btn:hover { background: #e0e0e0; } #imageUpload { display: none; } #promptInput { flex: 1; border: none; background: transparent; padding: 8px; font-size: 15px; resize: none; outline: none; max-height: 200px; font-family: inherit; line-height: 1.5; } .send-btn { width: 36px; height: 36px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; border-radius: 8px; cursor: pointer; font-size: 18px; display: flex; align-items: center; justify-content: center; transition: all 0.2s; flex-shrink: 0; } .send-btn:hover:not(:disabled) { transform: scale(1.05); box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3); } .send-btn:disabled { opacity: 0.5; cursor: not-allowed; } .loading { display: flex; align-items: center; gap: 8px; color: #666; font-size: 14px; } .loading-dots { display: flex; gap: 4px; } .loading-dots span { width: 6px; height: 6px; background: #667eea; border-radius: 50%; animation: bounce 1.4s infinite ease-in-out both; } .loading-dots span:nth-child(1) { animation-delay: -0.32s; } .loading-dots span:nth-child(2) { animation-delay: -0.16s; } @keyframes bounce { 0%, 80%, 100% { transform: scale(0); } 40% { transform: scale(1); } } .error-message { background: #fee; color: #c33; padding: 12px 16px; border-radius: 12px; border-left: 4px solid #c33; font-size: 14px; } .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; color: #999; text-align: center; padding: 40px; } .empty-state-icon { font-size: 64px; margin-bottom: 16px; } .empty-state h2 { font-size: 24px; margin-bottom: 8px; color: #333; } .empty-state p { font-size: 16px; max-width: 500px; } .modal { display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.5); z-index: 1000; align-items: center; justify-content: center; } .modal.show { display: flex; } .modal-content { background: white; border-radius: 16px; padding: 32px; max-width: 500px; width: 90%; box-shadow: 0 20px 60px rgba(0,0,0,0.3); animation: modalSlideIn 0.3s ease; } @keyframes modalSlideIn { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } .modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; } .modal-header h2 { font-size: 24px; color: #333; } .modal-close { background: none; border: none; font-size: 24px; cursor: pointer; color: #999; padding: 0; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 8px; } .modal-close:hover { background: #f0f0f0; } .form-group { margin-bottom: 20px; } .form-group label { display: block; margin-bottom: 8px; font-weight: 600; color: #333; font-size: 14px; } .form-group input, .form-group select { width: 100%; padding: 12px; border: 1px solid #e0e0e0; border-radius: 8px; font-size: 14px; transition: all 0.2s; } .form-group input:focus, .form-group select:focus { outline: none; border-color: #667eea; box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); } .save-btn { width: 100%; padding: 12px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; border-radius: 8px; font-size: 16px; font-weight: 600; cursor: pointer; transition: all 0.2s; } .save-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(102, 126, 234, 0.3); } .model-info { margin-top: 16px; padding: 12px; background: #f0f4ff; border-radius: 8px; font-size: 13px; color: #666; line-height: 1.5; } @media (max-width: 768px) { .header { padding: 12px 16px; } .chat-container { padding: 16px; } .message { max-width: 100%; } .input-area { padding: 12px 16px; } } </style></head><body> <divclass="header"> <divclass="header-left"> <divclass="logo">✨ Gemini AI</div> </div> <divstyle="display: flex; gap: 12px; align-items: center;"> <selectclass="model-selector"id="quickModelSelect"onchange="changeModel(this.value)"> <optionvalue="gemini-2.5-flash">💬 聊天模式</option> <optionvalue="gemini-2.5-flash-image">🎨 图片生成</option> <optionvalue="imagen-4.0-generate-001">🖼️ Imagen 4.0</option> </select> <buttonclass="settings-btn"onclick="openSettings()"> ⚙️ 设置 </button> </div> </div> <divclass="chat-container"id="chatContainer"> <divclass="empty-state"> <divclass="empty-state-icon">✨</div> <h2>开始对话</h2> <p>选择聊天模式进行对话,或选择图片生成模式创作AI艺术作品</p> </div> </div> <divclass="input-area"> <divclass="input-wrapper"> <divclass="image-preview-container"id="imagePreviewContainer"></div> <divclass="input-container"> <labelfor="imageUpload"class="file-upload-btn"title="上传图片"> 📎 </label> <inputtype="file"id="imageUpload"accept="image/*"multipleonchange="handleFileUpload(event)"> <textarea id="promptInput" placeholder="输入消息..." rows="1" onkeydown="handleKeyDown(event)" oninput="autoResize(this)" ></textarea> <buttonclass="send-btn"id="sendBtn"onclick="sendMessage()"> ↑ </button> </div> </div> </div> <divclass="modal"id="settingsModal"> <divclass="modal-content"> <divclass="modal-header"> <h2>⚙️ 设置</h2> <buttonclass="modal-close"onclick="closeSettings()">×</button> </div> <divclass="form-group"> <label>API 密钥</label> <inputtype="password"id="apiKeyInput"placeholder="输入你的 Gemini API Key"> </div> <divclass="form-group"> <label>默认模型</label> <selectid="defaultModelSelect"> <optionvalue="gemini-2.5-flash">Gemini 2.5 Flash (聊天)</option> <optionvalue="gemini-2.5-flash-image">Gemini 2.5 Flash (图片)</option> <optionvalue="imagen-4.0-generate-001">Imagen 4.0</option> </select> </div> <buttonclass="save-btn"onclick="saveSettings()">保存设置</button> <divclass="model-info"> 💬 <strong>聊天模式:</strong> 支持文本对话、图片理解<br> 🎨 <strong>图片生成:</strong> 快速生成和编辑图片<br> 🖼️ <strong>Imagen 4.0:</strong> 高质量图片生成 </div> </div> </div> <script> let uploadedImages = []; let conversationHistory = []; const conversationId = 'conv_' + Date.now(); function autoResize(textarea) { textarea.style.height = 'auto'; textarea.style.height = Math.min(textarea.scrollHeight, 200) + 'px'; } function handleKeyDown(event) { if (event.key === 'Enter' && !event.shiftKey) { event.preventDefault(); sendMessage(); } } function handleFileUpload(event) { const files = Array.from(event.target.files); files.forEach(file => { const reader = new FileReader(); reader.onload = function(e) { const base64 = e.target.result.split(',')[1]; uploadedImages.push({ data: base64, name: file.name }); updateImagePreview(); }; reader.readAsDataURL(file); }); event.target.value = ''; } function updateImagePreview() { const container = document.getElementById('imagePreviewContainer'); container.innerHTML = uploadedImages.map((img, index) => ` <div class="image-preview-item"> <img src="data:image/png;base64, ${img.data}" alt=" ${img.name}"> <button class="remove-image" onclick="removeImage( ${index})">×</button> </div> `).join(''); } function removeImage(index) { uploadedImages.splice(index, 1); updateImagePreview(); } function openSettings() { document.getElementById('settingsModal').classList.add('show'); } function closeSettings() { document.getElementById('settingsModal').classList.remove('show'); } function changeModel(model) { fetch('/set_model', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({model: model}) }); } async function saveSettings() { const apiKey = document.getElementById('apiKeyInput').value; const model = document.getElementById('defaultModelSelect').value; if (!apiKey) { alert('请输入 API 密钥'); return; } try { const response = await fetch('/set_api_key', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({api_key: apiKey, model: model}) }); if (response.ok) { document.getElementById('quickModelSelect').value = model; closeSettings(); alert('设置保存成功!'); } } catch (err) { alert('保存失败: ' + err); } } async function sendMessage() { const input = document.getElementById('promptInput'); const prompt = input.value.trim(); if (!prompt && uploadedImages.length === 0) { return; } addMessage('user', prompt, uploadedImages); input.value = ''; input.style.height = 'auto'; const images = [...uploadedImages]; uploadedImages = []; updateImagePreview(); const sendBtn = document.getElementById('sendBtn'); sendBtn.disabled = true; const loadingId = addMessage('assistant', '<div class="loading"><div class="loading-dots"><span></span><span></span><span></span></div>正在思考...</div>'); try { const response = await fetch('/chat', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ prompt: prompt, images: images.map(img => img.data), conversation_id: conversationId, history: conversationHistory }) }); const data = await response.json(); removeMessage(loadingId); if (data.error) { addMessage('assistant', `<div class="error-message">❌ ${data.error}</div>`); } else { if (data.image) { addMessage('assistant', data.text || '', null, data.image); } else { addMessage('assistant', data.text); } conversationHistory = data.history || conversationHistory; } } catch (err) { removeMessage(loadingId); addMessage('assistant', `<div class="error-message">❌ 发送失败: ${err}</div>`); } finally { sendBtn.disabled = false; } } function addMessage(role, text, images = null, generatedImage = null) { const container = document.getElementById('chatContainer'); const emptyState = container.querySelector('.empty-state'); if (emptyState) { emptyState.remove(); } const messageId = 'msg_' + Date.now() + '_' + Math.random(); const messageDiv = document.createElement('div'); messageDiv.className = 'message ' + role; messageDiv.id = messageId; let imagesHtml = ''; if (images && images.length > 0) { imagesHtml = '<div class="message-image-upload">' + images.map(img => `<div class="uploaded-image-preview"><img src="data:image/png;base64, ${img.data}" alt=" ${img.name}"></div>`).join('') + '</div>'; } let generatedImageHtml = ''; if (generatedImage) { generatedImageHtml = `<img src="data:image/png;base64, ${generatedImage}" alt="Generated Image">`; } messageDiv.innerHTML = ` <div class="message-avatar"> ${role === 'user' ? '👤' : '🤖'}</div> <div class="message-content"> ${text} ${imagesHtml} ${generatedImageHtml} </div> `; container.appendChild(messageDiv); container.scrollTop = container.scrollHeight; return messageId; } function removeMessage(messageId) { const message = document.getElementById(messageId); if (message) { message.remove(); } } </script></body></html>'''@app.route('/')def index(): return render_template_string(HTML_TEMPLATE)@app.route('/set_api_key', methods=['POST'])def set_api_key(): data = request.json session['api_key'] = data.get('api_key') session['model'] = data.get('model', 'gemini-2.5-flash') return jsonify({'status': 'success'})@app.route('/set_model', methods=['POST'])def set_model(): data = request.json session['model'] = data.get('model', 'gemini-2.5-flash') return jsonify({'status': 'success'})@app.route('/chat', methods=['POST'])def chat(): try: api_key = session.get('api_key') if not api_key: return jsonify({'error': '请先设置API密钥'}), 400 model_name = session.get('model', 'gemini-2.5-flash') data = request.json prompt = data.get('prompt', '') images = data.get('images', []) conversation_id = data.get('conversation_id', 'default') history = data.get('history', []) is_image_generation = model_name in ['gemini-2.5-flash-image', 'imagen-4.0-generate-001'] if is_image_generation: generated_image = generate_or_edit_image(api_key, model_name, prompt, images) if isinstance(generated_image, dict) and 'error' in generated_image: return jsonify(generated_image), 500 return jsonify({ 'text': prompt, 'image': generated_image, 'history': history }) else: url = f"{GEMINI_API_BASE}/models/{model_name}:generateContent?key={api_key}" parts = [] for img_base64 in images: parts.append({ "inline_data": { "mime_type": "image/png", "data": img_base64 } }) if prompt: parts.append({"text": prompt}) if not parts: return jsonify({'error': '请提供文本或图片'}), 400 contents = [] for msg in history: contents.append({ "role": msg.get("role", "user"), "parts": [{"text": msg.get("content", "")}] }) contents.append({ "role": "user", "parts": parts }) payload = { "contents": contents } headers = {'Content-Type': 'application/json'} response = requests.post(url, json=payload, headers=headers) if response.status_code != 200: return jsonify({'error': f'API调用失败: {response.text}'}), 500 result = response.json() if 'candidates' in result and len(result['candidates']) > 0: response_text = result['candidates'][0]['content']['parts'][0]['text'] else: return jsonify({'error': '未能生成回复'}), 500 history.append({"role": "user", "content": prompt}) history.append({"role": "model", "content": response_text}) if len(history) > 20: history = history[-20:] return jsonify({ 'text': response_text, 'history': history }) except Exception as e: return jsonify({'error': str(e)}), 500def generate_or_edit_image(api_key, model_name, prompt, images): """生成或编辑图片""" try: url = "" payload = {} headers = {'Content-Type': 'application/json'} if model_name == 'gemini-2.5-flash-image': url = f"{GEMINI_API_BASE}/models/{model_name}:generateContent?key={api_key}" parts = [] if images: for img_base64 in images: parts.append({ "inline_data": { "mime_type": "image/png", "data": img_base64 } }) if prompt: parts.append({"text": prompt}) if not parts: return {'error': '请提供文本或图片以生成/编辑图片'} payload = { "contents": [{ "parts": parts }], "generationConfig": { "response_modalities": ["image"] } } elif model_name == 'imagen-4.0-generate-001': url = f"{GEMINI_API_BASE}/models/{model_name}:predict?key={api_key}" if not prompt: return {'error': '请提供文本提示以生成图片'} instance = {"prompt": prompt} if images: instance["image"] = { "bytesBase64Encoded": images[0] } payload = { "instances": [instance], "parameters": { "sampleCount": 1 } } else: return {'error': f'不支持的模型: {model_name}'} response = requests.post(url, json=payload, headers=headers) if response.status_code != 200: return {'error': f'API调用失败: {response.text}'} result = response.json() if model_name == 'gemini-2.5-flash-image': if 'candidates' in result and len(result['candidates']) > 0: parts = result['candidates'][0]['content']['parts'] for part in parts: if 'inline_data' in part: return part['inline_data']['data'] elif model_name == 'imagen-4.0-generate-001': if 'predictions' in result and len(result['predictions']) > 0: return result['predictions'][0]['bytesBase64Encoded'] return {'error': '未能生成图片'} except Exception as e: return {'error': str(e)}if __name__ == '__main__': print("=" * 60) print("🚀 Gemini AI 助手启动成功!") print("=" * 60) print("📝 访问地址: http://localhost:5000") print("💡 请在设置中配置你的 Gemini API 密钥") print("🔑 获取API密钥: https://makersuite.google.com/app/apikey") print("=" * 60) print("✨ 支持的功能:") print(" 💬 聊天模式: 文本对话、图片理解") print(" 🎨 图片生成: 快速生成和编辑") print(" 🖼️ Imagen 4.0: 高质量图片生成") print(" 📎 支持上传多张图片") print(" 🔄 保持完整对话上下文") print("=" * 60) app.run(debug=True, host='0.0.0.0', port=5000)```------------------------------------------------------------## 10. [编程神器Codex安装使用教程(附国产模型替换)](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483778&idx=1&sn=74c5a6d505f02cac8e63ef7d978fe128&chksm=f0a0c346c7d74a509c5bd57713acb3afc8eb01c03d92687af731c6a7707388b66b6052afbd00#rd)**发布时间:** 2025年12月7日 15:48### 内容大家好!今天给您们带来了chatgpt编程工具Codex安装和国产模型免费使用教程。**1.安装Nodejs:**``` javascripthttps://nodejs.cn/download/```**2.安装Codex:**``` cssnpm install -g @openai/codex```**3.使用**(替换之前可以先不使用)``` codex```**4.国产模型替换:**(1)获取apikey``` javascripthttps://www.modelscope.cn/```注册后绑定阿里云账号即可(2)打开config.toml``` javascriptvim ~/.codex/config.toml```(3)写入国产模型配置信息``` iniprofile = "modelscope"[model_providers.modelscope]name = "ModelScope"base_url = "https://api-inference.modelscope.cn/v1"env_key = "MODELSCOPE_API_KEY"wire_api = "chat"[profiles.modelscope]model = "ZhipuAI/GLM-4.6"model_provider = "modelscope"model_reasoning_effort = "high"```(4)设置密钥``` javascriptexport MODELSCOPE_API_KEY="ms-你的密钥"```(5)使用``` codex```------------------------------------------------------------## 11. [零编程本地部署一万种Ai模型,吊打Ollama!](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483784&idx=1&sn=68c8ea4b040743fd1396875b834361cf&chksm=f0a0c34cc7d74a5a195ee8810bb7b7b2aebaf500ea785e1494d59238af12dc99908c62218cf6#rd)**发布时间:** 2025年12月8日 13:40### 内容大家好!今天我给你们带来了非常好用的本地部署AI大语言模型工具 localAi,此工具相对于ollama更好的操作和使用无需多余的命令,只需要通过图形界面安装喜欢的模型并使用就可以。优点:1.自带图形界面2.自带聊天界面3.一键下载|卸载4.更加安全5.支持多个平台**使用教程:****1.安装Docker**``` javascripthttps://www.docker.com/```**2.安装LocalAI:**(1)cpu运行:``` apachedocker run -ti --name local-ai -p 8080:8080 localai/localai:latest```(2)N卡gpu运行:根据cuda版本自行选择``` apache# CUDA 12.0docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-gpu-nvidia-cuda-12# CUDA 11.7docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-gpu-nvidia-cuda-11# NVIDIA Jetson (L4T) ARM64docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-nvidia-l4t-arm64```(3)Amd Gpu显卡运行:``` bashdocker run -ti --name local-ai -p 8080:8080 --device=/dev/kfd --device=/dev/dri --group-add=video localai/localai:latest-gpu-hipblas```(4)英特尔Gpu运行``` bashdocker run -ti --name local-ai -p 8080:8080 --device=/dev/dri/card1 --device=/dev/dri/renderD128 localai/localai:latest-gpu-intel```**3.使用**``` javascripthttp://localhost:8080```打开图形界面安装喜欢的模型使用就可以了。------------------------------------------------------------## 12. [地表最强Ai爬虫工具——脚踢firecrawl!](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483789&idx=1&sn=8672050977a9b467e19570abed37ca73&chksm=f0a0c349c7d74a5f0c6c1bb1cb2d3d9ed3942e2813976c9479b2719f2a625f5d015c918f9912#rd)**发布时间:** 2025年12月9日 13:58### 内容大家好!今天给你们带来了一个非常强大的python网页爬虫工具crawl4ai,能够单个或者多个页面的内容提取为ai能看懂的markdown或json格式。**1.安装:**(1)安装crawl4ai``` nginxpip install -U crawl4ai```(2)安装浏览器依赖``` javascriptpython -m playwright install --with-deps chromium```**2.使用**(1)爬取单页``` nginxcrwl https://www.runoob.com/ -o markdown```输出:``` markdown# [菜鸟教程 -- 学的不仅是技术,更是梦想!](https://www.runoob.com/) * [首页](https://www.runoob.com/ "菜鸟教程") * [菜鸟工具](https://www.jyshare.com/ "不止于工具") * [菜鸟笔记](https://www.runoob.com/w3cnote/ "菜鸟笔记") * [参考手册](javascript:void\(0\); "参考手册") * [用户笔记](https://www.runoob.com/commentslist "英文文档集合") * [测验/考试](https://www.runoob.com/quiz/html-quiz.html "测验/考试") * [本地书签](https://www.runoob.com/browser-history) * [HTML 手册](https://www.runoob.com/tags/html-reference.html) * [Javascript ](https://www.runoob.com/jsref/jsref-tutorial.html) * [CSS 1,2,3](https://www.runoob.com/cssref/css-reference.html) * [Zepto 中文手册](https://www.runoob.com/manual/zeptojs.html) * [Flat UI](https://www.runoob.com/manual/Flat-UI/) * [PostgreSQL 手册](https://www.runoob.com/manual/PostgreSQL/) * [HTML 测验](https://www.runoob.com/quiz/html-quiz.html "HTML 测验") * [HTML5 测验](https://www.runoob.com/quiz/html5-quiz.html "HTML5 测验") * [XHTML 测验](https://www.runoob.com/quiz/xhtml-quiz.html "XHTML 测验") * [CSS 测验](https://www.runoob.com/quiz/css-quiz.html "CSS 测验") * [JavaScript 测验](https://www.runoob.com/quiz/javascript-quiz.html "JavaScript 测验") * [jQuery 测验](https://www.runoob.com/quiz/jquery-quiz.html "jQuery 测验") * [XML 测验](https://www.runoob.com/quiz/xml-quiz.html "XML 测验") * [ASP 测验](https://www.runoob.com/quiz/asp-quiz.html "ASP 测验") * [PHP 测验](https://www.runoob.com/quiz/php-quiz.html "PHP 测验") * [SQL 测验](https://www.runoob.com/quiz/sql-quiz.html "SQL 测验") * [ Python 测验 ](https://www.runoob.com/quiz/python-quiz.html "Python 测验")#### [【学习 HTML】  **HTML,即超文本标记语言(Hyper Text Markup Language)**](https://www.runoob.com/html/html-tutorial.html) #### [【学习 HTML5】  **HTML5 是下一代 HTML 标准**](https://www.runoob.com/html/html5-intro.html) #### [【学习 CSS】  **层叠样式表(Cascading StyleSheet)**](https://www.runoob.com/css/css-tutorial.html) #### [【学习 CSS3】  **CSS3是CSS技术的升级版本**](https://www.runoob.com/css3/css3-tutorial.html) #### [【学习 Tailwind CSS】  **功能丰富的、实用性优先的 CSS 框架**](https://www.runoob.com/tailwindcss/tailwindcss-tutorial.html) #### [【学习 Bootstrap4】  **Bootstrap4 前端框架**](https://www.runoob.com/bootstrap4/bootstrap4-tutorial.html) #### [【学习 Bootstrap5】  **Bootstrap5 目前是 Bootstrap 的最新版本**](https://www.runoob.com/bootstrap5/bootstrap5-tutorial.html) #### [【学习 Font Awesome】  **Font Awesome 是一套绝佳的图标字体库和CSS框架。**](https://www.runoob.com/font-awesome/fontawesome-tutorial.html) #### [【学习 Foundation】  **Foundation 用于开发响应式的 HTML, CSS and JavaScript 框架**](https://www.runoob.com/foundation/foundation-tutorial.html)#### [【学习 JavaScript】  **JavaScript 是 Web 的编程语言**](https://www.runoob.com/js/js-tutorial.html) #### [【学习 HTML DOM】  **HTML DOM 定义了访问和操作 HTML 文档的标准方法**](https://www.runoob.com/htmldom/htmldom-tutorial.html) #### [【学习 jQuery】  **jQuery 是一个 JavaScript 库**](https://www.runoob.com/jquery/jquery-tutorial.html) #### [【学习 AngularJS】  **AngularJS 通过新的属性和表达式扩展了 HTML**](https://www.runoob.com/angularjs/angularjs-tutorial.html) #### [【学习 AngularJS2】  **AngularJS2 是一款开源JavaScript库,由Google维护。**](https://www.runoob.com/angularjs2/angularjs2-tutorial.html) #### [【学习 Vue.js】  **Vue.js 是一套构建用户界面的渐进式框架。**](https://www.runoob.com/vue2/vue-tutorial.html) #### [【学习 Vue3】  **Vue 是一套构建用户界面的渐进式框架。**](https://www.runoob.com/vue3/vue3-tutorial.html) #### [【学习 React】  **React 是一个用于构建用户界面的 JAVASCRIPT 库**](https://www.runoob.com/react/react-tutorial.html) #### [【学习 Next.js】  **基于 React 的开源框架**](https://www.runoob.com/nextjs/nextjs-tutorial.html) #### [【学习 TypeScript】  **TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准**](https://www.runoob.com/typescript/ts-tutorial.html) #### [【学习 jQuery UI】  **jQuery UI 是建立在 jQuery上的一组用户界面交互、特效、小部件及主题**](https://www.runoob.com/jqueryui/jqueryui-tutorial.html) #### [【学习 jQuery EasyUI 】  **jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件**](https://www.runoob.com/jeasyui/jqueryeasyui-tutorial.html) #### [【学习 Node.js】  **Node.js 是运行在服务端的 JavaScript**](https://www.runoob.com/nodejs/nodejs-tutorial.html) #### [【学习 Electron】  **使用Web技术来构建跨平台的桌面应用程序**](https://www.runoob.com/electron/electron-tutorial.html) #### [【学习 Playwright】  **Playwright 是一个用于 Web 自动化和端到端测试的开源框架**](https://www.runoob.com/playwright/playwright-tutorial.html) #### [【学习 AJAX】  **AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)**](https://www.runoob.com/ajax/ajax-tutorial.html) #### [【学习 JSON】  **JSON 是存储和交换文本信息的语法**](https://www.runoob.com/json/json-tutorial.html) #### [【学习 Echarts】  **ECharts 是一个使用 JavaScript 实现的开源可视化库**](https://www.runoob.com/echarts/echarts-tutorial.html) #### [【学习 Chart.js】  **Chart.js 是一个简单、灵活的 JavaScript 图表工具**](https://www.runoob.com/chartjs/chartjs-tutorial.html) #### [【学习 Highcharts】  **Highcharts 是一个用纯JavaScript编写的一个图表库**](https://www.runoob.com/highcharts/highcharts-tutorial.html) #### [【学习 Google 地图】  **Google 地图接口使用说明**](https://www.runoob.com/googleapi/google-maps-basic.html)#### [【学习 Python】  **Python3.x 版本,未来主流版本。**](https://www.runoob.com/python3/python3-tutorial.html) #### [【学习 Python2.x】  **Python 是一种面向对象、解释型计算机程序设计语言**](https://www.runoob.com/python/python-tutorial.html) #### [【学习 Linux】  **Linux是一套免费使用和自由传播的类Unix操作系统**](https://www.runoob.com/linux/linux-tutorial.html) #### [【学习 Docker】  **Docker 是一个开源的应用容器引擎,基于 Go 语言**](https://www.runoob.com/docker/docker-tutorial.html) #### [【学习 Ruby】  **一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言**](https://www.runoob.com/ruby/ruby-tutorial.html) #### [【学习 Java】  **一种可以撰写跨平台应用软件的面向对象的程序设计语言**](https://www.runoob.com/java/java-tutorial.html) #### [【学习 C】  **一门通用计算机编程语言**](https://www.runoob.com/c/c-tutorial.html) #### [【学习 C++】  **C++是在C语言的基础上开发的一种通用编程语言**](https://www.runoob.com/cplusplus/cpp-tutorial.html) #### [【学习 Perl】  **Perl 是高级、通用、直译式、动态的程序语言**](https://www.runoob.com/perl/perl-tutorial.html) #### [【学习 Servlet 】  **运行在 Web 服务器或应用服务器上的程序**](https://www.runoob.com/servlet/servlet-tutorial.html) #### [【学习 JSP】  **JSP与PHP、ASP、ASP.NET等语言类似,运行在服务端的语言**](https://www.runoob.com/jsp/jsp-tutorial.html) #### [【学习 Lua】  **Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放**](https://www.runoob.com/lua/lua-tutorial.html) #### [【学习 Rust】  **Rust 语言是一种高效、可靠的通用高级语言**](https://www.runoob.com/rust/rust-tutorial.html) #### [【学习 Zig】  **Zig 是一个命令式、通用、静态类型、编译的系统编程语言**](https://www.runoob.com/zig/zig-tutorial.html) #### [【学习 Scala】  **Scala 是一门多范式(multi-paradigm)的编程语言。**](https://www.runoob.com/scala/scala-tutorial.html) #### [【学习 Go】  **Go语言是谷歌推出的一种全新的编程语言**](https://www.runoob.com/go/go-tutorial.html) #### [【学习 PHP】  **PHP 是一种通用开源脚本语言**](https://www.runoob.com/php/php-tutorial.html) #### [【数据结构与算法】  **数据结构是计算机中存储、组织数据的方式。**](https://www.runoob.com/data-structures/data-structures-tutorial.html) #### [【学习 Django】  **Django 是一个开放源代码的Web应用框架,由Python写成**](https://www.runoob.com/django/django-tutorial.html) #### [【学习 FastAPI】  **FastAPI 是一个用于构建 API 的 web 框架**](https://www.runoob.com/fastapi/fastapi-tutorial.html) #### [【学习 Flask】  **Flask 是一个用 Python 编写的轻量级 Web 应用框架**](https://www.runoob.com/flask/flask-tutorial.html) #### [【学习 Pillow】  **Pillow 是 Python 中处理图像的主要库**](https://www.runoob.com/pillow/pillow-tutorial.html) #### [【学习 Zookeeper】  **ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务**](https://www.runoob.com/w3cnote/zookeeper-tutorial.html) #### [【设计模式】  **设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用**](https://www.runoob.com/design-pattern/design-pattern-tutorial.html) #### [【Python 设计模式】  **Python 写代码的套路**](https://www.runoob.com/python-design-pattern/python-design-pattern-tutorial.html) #### [【正则表达式】  **正则表达式是对字符串操作的一种逻辑公式**](https://www.runoob.com/regexp/regexp-tutorial.html) #### [【学习 Maven】  **Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理**](https://www.runoob.com/maven/maven-tutorial.html) #### [【学习 CMake】  **CMake 是个一个开源的跨平台自动化建构系统**](https://www.runoob.com/cmake/cmake-tutorial.html) #### [【学习 Verilog】  **Verilog 是一种用于设计数字电路的硬件描述语言,主要应用在集成电路系统中**](https://www.runoob.com/w3cnote/verilog-tutorial.html) #### [【学习 ASP】  **ASP(Active Server Pages 动态服务器页面)是一种生成动态交互性网页的强有力工具**](https://www.runoob.com/asp/asp-tutorial.html) #### [【学习 AppML】  **AppML 是一个为web应用程序设计的HTML扩展框**](https://www.runoob.com/appml/appml-tutorial.html) #### [【学习 VBScript】  **一种微软环境下的轻量级的解释型语言**](https://www.runoob.com/vbscript/vbscript-tutorial.html)#### [【学习 SQL】  **结构化查询语言(Structured Query Language)**](https://www.runoob.com/sql/sql-tutorial.html) #### [【学习 MySQL】  **MySQL 是一个关系型数据库管理系统**](https://www.runoob.com/mysql/mysql-tutorial.html) #### [【学习 PostgreSQL】  **PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS)**](https://www.runoob.com/postgresql/postgresql-tutorial.html) #### [【学习 SQLite】  **一款轻型的数据库**](https://www.runoob.com/sqlite/sqlite-tutorial.html) #### [【学习 MongoDB】  **Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql)**](https://www.runoob.com/mongodb/mongodb-tutorial.html) #### [【学习 Redis】  **一个高性能的key-value数据库**](https://www.runoob.com/redis/redis-tutorial.html) #### [【学习 Memcached】  **Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。**](https://www.runoob.com/Memcached/Memcached-tutorial.html)#### [【学习 Python】  **Python3.x 版本,未来主流版本。**](https://www.runoob.com/python3/python3-tutorial.html) #### [【学习 NumPy】  **NumPy 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算**](https://www.runoob.com/numpy/numpy-tutorial.html) #### [【学习 Pandas】  **Pandas 是 Python 语言的一个扩展程序库,用于数据分析**](https://www.runoob.com/pandas/pandas-tutorial.html) #### [【学习 Matplotlib】  **Matplotlib 是 Python 的绘图库**](https://www.runoob.com/matplotlib/matplotlib-tutorial.html) #### [【学习 Scipy】  **SciPy 是一个开源的 Python 算法库和数学工具包。**](https://www.runoob.com/scipy/scipy-tutorial.html) #### [【学习 Pytorch】  **Pytorch 是一个开源的机器学习库。**](https://www.runoob.com/pytorch/pytorch-tutorial.html) #### [【学习 TensorFlow】  **TensorFlow 是一个开源机器学习框架。**](https://www.runoob.com/tensorflow/tensorflow-tutorial.html) #### [【学习 Ollama】  **开源的本地大语言模型运行框架。**](https://www.runoob.com/ollama/ollama-tutorial.html) #### [【机器学习】  **机器学习是让机器通过经验(数据)来做决策和预测。**](https://www.runoob.com/ml/ml-tutorial.html) #### [【AI Agent(智能体)】  **AI Agent(智能体)让模型不只回答问题,而是按步骤完成动作。**](https://www.runoob.com/ai-agent/ai-agent-tutorial.html) #### [【学习 scikit-learn】  **scikit-learn 是一个开源的机器学习库。**](https://www.runoob.com/sklearn/sklearn-tutorial.html) #### [【学习 R】  **R 语言是为数学研究工作者设计的一种数学编程语言**](https://www.runoob.com/r/r-tutorial.html) #### [【学习 OpenCV】  **开源的计算机视觉和机器学习软件库**](https://www.runoob.com/opencv/opencv-tutorial.html) #### [【学习 NLP】  **NLP (自然语言处理)是人工智能和语言学的一个交叉领域**](https://www.runoob.com/nlp/nlp-tutorial.html) #### [【学习 Selenium】  **用于自动化 Web 浏览器操作的工具集**](https://www.runoob.com/selenium/selenium-tutorial.html) #### [【学习 Julia】  **Julia 是一个面向科学计算的高性能动态高级程序设计语言**](https://www.runoob.com/julia/julia-tutorial.html) #### [【量化交易】  **利用计算机编程来进行金融交易的一种策略。**](https://www.runoob.com/qt/qt-tutorial.html) #### [【学习 Dash】  **构建数据分析和数据可视化的 Web 应用程序。**](https://www.runoob.com/dash/dash-tutorial.html)#### [【学习 Android】  **Android 是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备**](https://www.runoob.com/w3cnote/android-tutorial-intro.html) #### [【学习 Swift】  **Swift 是一种支持多编程范式和编译式的编程语言,用于开发 iOS,OS X 和 watchOS应用程序。**](https://www.runoob.com/swift/swift-tutorial.html) #### [【学习 jQuery Mobile】  **jQuery Mobile是jQuery 在手机上和平板设备上的版本**](https://www.runoob.com/jquerymobile/jquerymobile-tutorial.html) #### [【学习 ionic】  **ionic 是一个强大的 HTML5 应用程序开发框架(HTML5 Hybrid Mobile App Framework )。**](https://www.runoob.com/ionic/ionic-tutorial.html) #### [【学习 Kotlin】  **在 Java 虚拟机上运行的静态类型编程语言,Android 官方开发语言**](https://www.runoob.com/kotlin/kotlin-tutorial.html)#### [【学习 VS Code】  **VS Code 是由微软开发的一个现代化、轻量级的代码编辑器**](https://www.runoob.com/vscode/vscode-tutorial.html) #### [【学习 PyCharm】  **专门用于 Python 编程的集成开发环境(IDE)**](https://www.runoob.com/pycharm/pycharm-tutorial.html) #### [【学习 Swagger】  **RESTful API 的开源工具集**](https://www.runoob.com/swagger/swagger-tutorial.html) #### [【学习 RESTful API】  **RESTful API 是应用程序之间通信的标准**](https://www.runoob.com/restfulapi/restful-api-tutorial.html) #### [【学习 Eclipse】  **Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台**](https://www.runoob.com/eclipse/eclipse-tutorial.html) #### [【学习 Git】  **Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目**](https://www.runoob.com/git/git-tutorial.html) #### [【学习 Svn】  **SVN 是一个开放源代码的版本控制系统**](https://www.runoob.com/svn/svn-tutorial.html) #### [【学习 Markdown】  **Markdown 是一种轻量级标记语言**](https://www.runoob.com/markdown/md-tutorial.html)#### [【学习 XML】  **XML 被设计用来传输和存储数据**](https://www.runoob.com/xml/xml-tutorial.html) #### [【学习 DTD】  **DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块**](https://www.runoob.com/dtd/dtd-tutorial.html) #### [【学习 XML DOM】  **XML DOM 定义访问和操作XML文档的标准方法**](https://www.runoob.com/dom/dom-tutorial.html) #### [【学习 XSLT】  **XSL 是一个 XML 文档的样式表语言,XSLT 指 XSL 转换**](https://www.runoob.com/xsl/xsl-tutorial.html) #### [【学习 XPath】  **XPath 是一门在 XML 文档中查找信息的语言**](https://www.runoob.com/xpath/xpath-tutorial.html) #### [【学习 XQuery】  **XQuery 被设计用来查询 XML 数据**](https://www.runoob.com/xquery/xquery-tutorial.html) #### [【学习 XLink】  **XLink 定义在 XML 文档中创建超级链接的标准方法**](https://www.runoob.com/xlink/xlink-tutorial.html) #### [【学习 XPointer】  **XPointer是在可扩展标志语言(XML)文件中定位数据的一种语言**](https://www.runoob.com/xlink/xlink-tutorial.html) #### [【学习 XML Schema】  **XML Schema 描述了 XML文档的结构**](https://www.runoob.com/schema/schema-tutorial.html) #### [【学习 XSL-FO】  **XSL-FO 指可扩展样式表语言格式化对象**](https://www.runoob.com/xslfo/xslfo-tutorial.html) #### [【学习 SVG】  **SVG 使用 XML 格式定义图像**](https://www.runoob.com/svg/svg-tutorial.html)#### [【学习 ASP.NET】  **ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架**](https://www.runoob.com/aspnet/aspnet-tutorial.html) #### [【学习 C#】  **C# 是一个简单的、现代的、通用的、面向对象的编程语言**](https://www.runoob.com/csharp/csharp-tutorial.html) #### [【学习 PowerShell】  **PowerShell 是微软开发的任务自动化和配置管理框架**](https://www.runoob.com/powershell/powershell-tutorial.html) #### [【学习 Web Pages】  **Web Pages 是三种网页编程模型中的一种,用于创建网站和web 应用程序**](https://www.runoob.com/aspnet/webpages-intro.html) #### [【学习 Razor】  **Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 C#)嵌入到网页中**](https://www.runoob.com/aspnet/razor-intro.html) #### [【学习 MVC】  **MVC(Model View Controller 模型-视图-控制器)**](https://www.runoob.com/aspnet/mvc-intro.html) #### [【学习 Web Forms】  **Web Forms 是三种创建 ASP.NET 网站和 Web 应用程序的编程模式中的一种**](https://www.runoob.com/aspnet/aspnet-intro.html)#### [【学习 Web Service】  **Web Service 脚本平台需支持 XML + HTTP**](https://www.runoob.com/webservices/webservices-tutorial.html) #### [【学习 WSDL】  **WSDL是一门基于 XML 的语言,用于描述 Web Service 以及如何对它们进行访问**](https://www.runoob.com/wsdl/wsdl-tutorial.html) #### [【学习 SOAP】  **SOAP 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息**](https://www.runoob.com/soap/soap-tutorial.html) #### [【学习 RSS】  **RSS基于XML标准,在互联网上被广泛采用的内容包装和投递协议**](https://www.runoob.com/rss/rss-tutorial.html) #### [【学习 RDF】  **DF(资源描述框架)是描述网络资源的 W3C 标准**](https://www.runoob.com/rdf/rdf-tutorial.html)#### [【学习 HTTP】  **HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议**](https://www.runoob.com/http/http-tutorial.html) #### [【网站建设指南】  **网站建设指导课程**](https://www.runoob.com/web/web-buildingprimer.html) #### [【浏览器信息】  **对于网站开发人员来说,浏览器信息和统计数据都是非常重要的**](https://www.runoob.com/browsers/browser-information.html) #### [【网络协议】  **定义设备之间通信规则和标准的集合**](https://www.runoob.com/np/np-tutorial.html) #### [【网站主机教程】  **如果您希望向全世界发布自己的网站,那么您的网站就需要被放置于一个 WEB 服务器**](https://www.runoob.com/hosting/hosting-tutorial.html) #### [【学习 TCP/IP】  **TCP/IP 是因特网的通信协议**](https://www.runoob.com/tcpip/tcpip-tutorial.html) #### [【学习 W3C】  **W3C 让每个人都能在互联网上分享资源**](https://www.runoob.com/w3c/w3c-tutorial.html) #### [【网站品质】  **学习如何创建高质量的web网站**](https://www.runoob.com/quality/quality-tutorial.html)#### [HTML ](https://www.runoob.com/html/html-tutorial.html) #### [HTML5 ](https://www.runoob.com/html/html5-intro.html) #### [CSS ](https://www.runoob.com/css/css-tutorial.html) #### [CSS3 ](https://www.runoob.com/css3/css3-tutorial.html) #### [Tailwind CSS ](https://www.runoob.com/tailwindcss/tailwindcss-tutorial.html) #### [Bootstrap4 ](https://www.runoob.com/bootstrap4/bootstrap4-tutorial.html) #### [Bootstrap5 ](https://www.runoob.com/bootstrap5/bootstrap5-tutorial.html) #### [Font Awesome ](https://www.runoob.com/font-awesome/fontawesome-tutorial.html) #### [Foundation ](https://www.runoob.com/foundation/foundation-tutorial.html)#### [JavaScript ](https://www.runoob.com/js/js-tutorial.html) #### [HTML DOM ](https://www.runoob.com/htmldom/htmldom-tutorial.html) #### [jQuery ](https://www.runoob.com/jquery/jquery-tutorial.html) #### [AngularJS ](https://www.runoob.com/angularjs/angularjs-tutorial.html) #### [AngularJS2 ](https://www.runoob.com/angularjs2/angularjs2-tutorial.html) #### [Vue.js ](https://www.runoob.com/vue2/vue-tutorial.html) #### [Vue3 ](https://www.runoob.com/vue3/vue3-tutorial.html) #### [React ](https://www.runoob.com/react/react-tutorial.html) #### [Next.js ](https://www.runoob.com/nextjs/nextjs-tutorial.html) #### [TypeScript ](https://www.runoob.com/typescript/ts-tutorial.html) #### [jQuery UI ](https://www.runoob.com/jqueryui/jqueryui-tutorial.html) #### [jQuery EasyUI ](https://www.runoob.com/jeasyui/jqueryeasyui-tutorial.html) #### [Node.js ](https://www.runoob.com/nodejs/nodejs-tutorial.html) #### [Electron ](https://www.runoob.com/electron/electron-tutorial.html) #### [Playwright ](https://www.runoob.com/playwright/playwright-tutorial.html) #### [AJAX ](https://www.runoob.com/ajax/ajax-tutorial.html) #### [JSON ](https://www.runoob.com/json/json-tutorial.html) #### [Echarts ](https://www.runoob.com/echarts/echarts-tutorial.html) #### [Chart.js ](https://www.runoob.com/chartjs/chartjs-tutorial.html) #### [Highcharts ](https://www.runoob.com/highcharts/highcharts-tutorial.html) #### [Google 地图 ](https://www.runoob.com/googleapi/google-maps-basic.html)#### [Python ](https://www.runoob.com/python3/python3-tutorial.html) #### [Python2.x ](https://www.runoob.com/python/python-tutorial.html) #### [Linux ](https://www.runoob.com/linux/linux-tutorial.html) #### [Docker ](https://www.runoob.com/docker/docker-tutorial.html) #### [Ruby ](https://www.runoob.com/ruby/ruby-tutorial.html) #### [Java ](https://www.runoob.com/java/java-tutorial.html) #### [C ](https://www.runoob.com/c/c-tutorial.html) #### [C++ ](https://www.runoob.com/cplusplus/cpp-tutorial.html) #### [Perl ](https://www.runoob.com/perl/perl-tutorial.html) #### [Servlet ](https://www.runoob.com/servlet/servlet-tutorial.html) #### [JSP ](https://www.runoob.com/jsp/jsp-tutorial.html) #### [Lua ](https://www.runoob.com/lua/lua-tutorial.html) #### [Rust ](https://www.runoob.com/rust/rust-tutorial.html) #### [Zig ](https://www.runoob.com/zig/zig-tutorial.html) #### [Scala ](https://www.runoob.com/scala/scala-tutorial.html) #### [Go ](https://www.runoob.com/go/go-tutorial.html) #### [PHP ](https://www.runoob.com/php/php-tutorial.html) #### [数据结构与算法 ](https://www.runoob.com/data-structures/data-structures-tutorial.html) #### [Django ](https://www.runoob.com/django/django-tutorial.html) #### [FastAPI ](https://www.runoob.com/fastapi/fastapi-tutorial.html) #### [Flask ](https://www.runoob.com/flask/flask-tutorial.html) #### [Pillow ](https://www.runoob.com/pillow/pillow-tutorial.html) #### [Zookeeper ](https://www.runoob.com/w3cnote/zookeeper-tutorial.html) #### [设计模式 ](https://www.runoob.com/design-pattern/design-pattern-tutorial.html) #### [Python 设计模式 ](https://www.runoob.com/python-design-pattern/python-design-pattern-tutorial.html) #### [正则表达式 ](https://www.runoob.com/regexp/regexp-tutorial.html) #### [Maven ](https://www.runoob.com/maven/maven-tutorial.html) #### [CMake ](https://www.runoob.com/cmake/cmake-tutorial.html) #### [Verilog ](https://www.runoob.com/w3cnote/verilog-tutorial.html) #### [ASP ](https://www.runoob.com/asp/asp-tutorial.html) #### [AppML ](https://www.runoob.com/appml/appml-tutorial.html) #### [VBScript ](https://www.runoob.com/vbscript/vbscript-tutorial.html)#### [SQL ](https://www.runoob.com/sql/sql-tutorial.html) #### [MySQL ](https://www.runoob.com/mysql/mysql-tutorial.html) #### [PostgreSQL ](https://www.runoob.com/postgresql/postgresql-tutorial.html) #### [SQLite ](https://www.runoob.com/sqlite/sqlite-tutorial.html) #### [MongoDB ](https://www.runoob.com/mongodb/mongodb-tutorial.html) #### [Redis ](https://www.runoob.com/redis/redis-tutorial.html) #### [Memcached ](https://www.runoob.com/Memcached/Memcached-tutorial.html)#### [Python ](https://www.runoob.com/python3/python3-tutorial.html) #### [NumPy ](https://www.runoob.com/numpy/numpy-tutorial.html) #### [Pandas ](https://www.runoob.com/pandas/pandas-tutorial.html) #### [Matplotlib ](https://www.runoob.com/matplotlib/matplotlib-tutorial.html) #### [Scipy ](https://www.runoob.com/scipy/scipy-tutorial.html) #### [Pytorch ](https://www.runoob.com/pytorch/pytorch-tutorial.html) #### [TensorFlow ](https://www.runoob.com/tensorflow/tensorflow-tutorial.html) #### [Ollama ](https://www.runoob.com/ollama/ollama-tutorial.html) #### [机器 ](https://www.runoob.com/ml/ml-tutorial.html) #### [AI Agent(智能体) ](https://www.runoob.com/ai-agent/ai-agent-tutorial.html) #### [scikit-learn ](https://www.runoob.com/sklearn/sklearn-tutorial.html) #### [R ](https://www.runoob.com/r/r-tutorial.html) #### [OpenCV ](https://www.runoob.com/opencv/opencv-tutorial.html) #### [NLP ](https://www.runoob.com/nlp/nlp-tutorial.html) #### [Selenium ](https://www.runoob.com/selenium/selenium-tutorial.html) #### [Julia ](https://www.runoob.com/julia/julia-tutorial.html) #### [量化交易 ](https://www.runoob.com/qt/qt-tutorial.html) #### [Dash ](https://www.runoob.com/dash/dash-tutorial.html)#### [Android ](https://www.runoob.com/w3cnote/android-tutorial-intro.html) #### [Swift ](https://www.runoob.com/swift/swift-tutorial.html) #### [jQuery Mobile ](https://www.runoob.com/jquerymobile/jquerymobile-tutorial.html) #### [ionic ](https://www.runoob.com/ionic/ionic-tutorial.html) #### [Kotlin ](https://www.runoob.com/kotlin/kotlin-tutorial.html)#### [VS Code ](https://www.runoob.com/vscode/vscode-tutorial.html) #### [PyCharm ](https://www.runoob.com/pycharm/pycharm-tutorial.html) #### [Swagger ](https://www.runoob.com/swagger/swagger-tutorial.html) #### [RESTful API ](https://www.runoob.com/restfulapi/restful-api-tutorial.html) #### [Eclipse ](https://www.runoob.com/eclipse/eclipse-tutorial.html) #### [Git ](https://www.runoob.com/git/git-tutorial.html) #### [Svn ](https://www.runoob.com/svn/svn-tutorial.html) #### [Markdown ](https://www.runoob.com/markdown/md-tutorial.html)#### [XML ](https://www.runoob.com/xml/xml-tutorial.html) #### [DTD ](https://www.runoob.com/dtd/dtd-tutorial.html) #### [XML DOM ](https://www.runoob.com/dom/dom-tutorial.html) #### [XSLT ](https://www.runoob.com/xsl/xsl-tutorial.html) #### [XPath ](https://www.runoob.com/xpath/xpath-tutorial.html) #### [XQuery ](https://www.runoob.com/xquery/xquery-tutorial.html) #### [XLink ](https://www.runoob.com/xlink/xlink-tutorial.html) #### [XPointer ](https://www.runoob.com/xlink/xlink-tutorial.html) #### [XML Schema ](https://www.runoob.com/schema/schema-tutorial.html) #### [XSL-FO ](https://www.runoob.com/xslfo/xslfo-tutorial.html) #### [SVG ](https://www.runoob.com/svg/svg-tutorial.html)#### [ASP.NET ](https://www.runoob.com/aspnet/aspnet-tutorial.html) #### [C# ](https://www.runoob.com/csharp/csharp-tutorial.html) #### [PowerShell ](https://www.runoob.com/powershell/powershell-tutorial.html) #### [Web Pages ](https://www.runoob.com/aspnet/webpages-intro.html) #### [Razor ](https://www.runoob.com/aspnet/razor-intro.html) #### [MVC ](https://www.runoob.com/aspnet/mvc-intro.html) #### [Web Forms ](https://www.runoob.com/aspnet/aspnet-intro.html)#### [Web Service ](https://www.runoob.com/webservices/webservices-tutorial.html) #### [WSDL ](https://www.runoob.com/wsdl/wsdl-tutorial.html) #### [SOAP ](https://www.runoob.com/soap/soap-tutorial.html) #### [RSS ](https://www.runoob.com/rss/rss-tutorial.html) #### [RDF ](https://www.runoob.com/rdf/rdf-tutorial.html)#### [HTTP ](https://www.runoob.com/http/http-tutorial.html) #### [网站建设指南 ](https://www.runoob.com/web/web-buildingprimer.html) #### [浏览器信息 ](https://www.runoob.com/browsers/browser-information.html) #### [网络协议 ](https://www.runoob.com/np/np-tutorial.html) #### [网站主机教程 ](https://www.runoob.com/hosting/hosting-tutorial.html) #### [TCP/IP ](https://www.runoob.com/tcpip/tcpip-tutorial.html) #### [W3C ](https://www.runoob.com/w3c/w3c-tutorial.html) #### [网站品质 ](https://www.runoob.com/quality/quality-tutorial.html) 在线实例 ·[HTML 实例](https://www.runoob.com/html/html-examples.html) ·[CSS 实例](https://www.runoob.com/css/css-examples.html) ·[JavaScript 实例](https://www.runoob.com/js/js-examples.html) ·[Ajax 实例](https://www.runoob.com/ajx/ajax-examples.html) ·[jQuery 实例](https://www.runoob.com/jquery/jquery-examples.html) ·[XML 实例](https://www.runoob.com/xml/xml-examples.html) ·[Java 实例](https://www.runoob.com/java/java-examples.html) 字符集&工具 · [HTML 字符集设置](https://www.runoob.com/charsets/html-charsets.html) · [HTML ASCII 字符集](https://www.runoob.com/tags/html-ascii.html) · [JS 混淆/加密](https://www.jyshare.com/front-end/6939/) · [PNG/JPEG 图片压缩](https://www.jyshare.com/front-end/6232/) · [HTML 拾色器](https://www.runoob.com/tags/html-colorpicker.html) · [JSON 格式化工具](https://www.jyshare.com/front-end/53) · [随机数生成器](https://www.jyshare.com/front-end/6680/) 最新更新 · [Obsidian 使用教程](http://www.runoob.com/markdown/obsidian-tutorial.html "Obsidian 使用教程") · [CSS 编辑器](http://www.runoob.com/css/css-editor.html "CSS 编辑器") · [CSS AI 编程](http://www.runoob.com/css/fitten-code-css.html "CSS AI 编程") · [Python 实现 AI ...](http://www.runoob.com/ai-agent/python-ai-agent.html "Python 实现 AI Agent") · [第一个 AI Agent](http://www.runoob.com/ai-agent/first-ai-agent.html "第一个 AI Agent") · [AI Agent 核心组件](http://www.runoob.com/ai-agent/ai-agent-core.html "AI Agent 核心组件") · [AI Agent 简介](http://www.runoob.com/ai-agent/ai-agent-intro.html "AI Agent 简介") 站点信息 · 意见反馈 · [免责声明](https://www.runoob.com/disclaimer) · [关于我们](https://www.runoob.com/aboutus) · [文章归档](https://www.runoob.com/archives)**关注微信**Copyright © 2013-2025 **[菜鸟教程](https://www.runoob.com/)** **[runoob.com](https://www.runoob.com/)** All Rights Reserved. 备案号:[闽ICP备15012807号-1](https://beian.miit.gov.cn/)[ ](javascript:void\(0\) "返回顶部") [](javascript:void\(0\) "关注我们") [](javascript:void\(0\) "标记/收藏")#### 微信关注```(2)深层爬取``` nginxcrwl https://www.runoob.com/ --deep-crawl bfs --max-pages 10 &> output.txt```(3)脚本爬取``` pythonimport asynciofrom crawl4ai import *async def main(): async with AsyncWebCrawler() as crawler: result = await crawler.arun( url="https://www.nbcnews.com/business", ) print(result.markdown)if __name__ == "__main__": asyncio.run(main())```更多扩展内容请看官方文档:``` javascripthttps://crawl4ai.docslib.dev/```------------------------------------------------------------## 13. [奥特曼回归,2025年度最强AI模型已确定!](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483822&idx=1&sn=caa4fc5574bcc4bc1fb2be1dd8e8fd84&chksm=f0a0c36ac7d74a7c282314db25e1dcf8324a6159abbb76ea246d4f2670b00f2d96cae2fcc73f#rd)**发布时间:** 2025年12月12日 14:10### 内容2025年12月12日2点时,openai对自家旗舰AI大语言模型进行更新迭代,虽然编程和低幻觉率方面有了进一步提升但是还是输给谷歌最强Ai Gemini3.0pro。总结,2025年最强Ai是Gemini3.0pro,最强开源Ai是glm4.6。**1.chatgpt官网:**``` javascripthttps://chatgpt.com/```**2.gemini官网:**``` javascripthttps://gemini.google.com/```**3.gemini免费体验网址:**``` javascripthttps://gemini.google.com/```**4.glm官方:**``` javascripthttps://z.ai/```**ai排行榜:****开源ai排行榜:**来源:``` javascripthttps://openlm.ai/chatbot-arena/```------------------------------------------------------------## 14. [Python A股数据库工具——轻松成为巴菲特!(附Ai股票预测工具)](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483827&idx=1&sn=05d2a6923014029d039d104990bc3eca&chksm=f0a0c377c7d74a6128d39631c77d0e93d4286a18d19364d0677d3d606749eb52e78927b5ede4#rd)**发布时间:** 2025年12月13日 10:05### 内容大家好! 今天给你们带来了python A股数据查询库——adata,开源轻松的查询股票代码、股票信息等信息且完全免费。**1.安装:**``` nginxpip install adata```**2.使用:**(1)查询股票代码``` javaimport adatares_df = adata.stock.info.all_code()print(res_df)```输出:``` cssstock_code short_name exchange list_date0 000001 平安银行 SZ 1991-04-031 000002 万科A SZ 1991-01-292 000003 PT金田A SZ NaN3 000004 *ST国华 SZ 1990-12-014 000005 ST星源 SZ 1990-12-10... ... ... ... ...5880 920978 开特股份 BJ 2023-09-285881 920981 晶赛科技 BJ 2021-11-155882 920982 锦波生物 BJ 2023-07-205883 920985 海泰新能 BJ 2022-08-085884 920992 中科美菱 BJ 2022-10-18```(2)查询股票信息``` apacheimport adata# k_type: k线类型:1.日;2.周;3.月 默认:1 日kres_df = adata.stock.market.get_market(stock_code='000001', k_type=1, start_date='2021-01-01')print(res_df)```输出:``` sqlstock_code trade_time trade_date open close high low volume amount change_pct change turnover_ratio pre_close0 000001 2021-01-04 00:00:00 2021-01-04 16.84 16.34 16.84 16.18 155421600 2.891682e+09 -4.33 -0.74 0.80 17.081 000001 2021-01-05 00:00:00 2021-01-05 16.14 15.91 16.22 15.54 182135200 3.284607e+09 -2.63 -0.43 0.94 16.342 000001 2021-01-06 00:00:00 2021-01-06 15.82 17.30 17.30 15.74 193494500 3.648522e+09 8.74 1.39 1.00 15.913 000001 2021-01-07 00:00:00 2021-01-07 17.26 17.64 17.72 16.97 158418500 3.111275e+09 1.97 0.34 0.82 17.304 000001 2021-01-08 00:00:00 2021-01-08 17.64 17.59 17.84 17.05 119547300 2.348316e+09 -0.28 -0.05 0.62 17.64... ... ... ... ... ... ... ... ... ... ... ... ... ...1194 000001 2025-12-08 00:00:00 2025-12-08 11.49 11.52 11.60 11.48 85589900 9.885100e+08 -0.09 -0.01 0.44 11.531195 000001 2025-12-09 00:00:00 2025-12-09 11.52 11.43 11.54 11.43 73395700 8.427324e+08 -0.78 -0.09 0.38 11.521196 000001 2025-12-10 00:00:00 2025-12-10 11.44 11.33 11.46 11.29 104406500 1.184088e+09 -0.87 -0.10 0.54 11.431197 000001 2025-12-11 00:00:00 2025-12-11 11.35 11.37 11.39 11.30 92526100 1.049906e+09 0.35 0.04 0.48 11.331198 000001 2025-12-12 00:00:00 2025-12-12 11.37 11.35 11.43 11.30 119189500 1.357465e+09 -0.18 -0.02 0.61 11.37[1199 rows x 13 columns]```更多详细教程:``` bashhttps://adata.30006124.xyz/dic/stockInfo.html```AI股票预测工具(新闻+数据+AI):``` pythonimport requestsimport jsonfrom datetime import datetime, timedeltafrom colorama import Fore, Back, Style, initimport osimport time# 初始化coloramainit(autoreset=True)class StockPredictor: def __init__(self, zhipu_api_key): self.zhipu_api_key = zhipu_api_key self.zhipu_api_url = "https://open.bigmodel.cn/api/paas/v4/chat/completions" def clear_screen(self): """清屏""" os.system('cls' if os.name == 'nt' else 'clear') def print_header(self): """打印工具头部""" print(Fore.CYAN + "=" * 80) print(Fore.CYAN + Style.BRIGHT + " 📈 AI股票分析预测工具 (股票数据+新闻+AI分析) 📊".center(90)) print(Fore.CYAN + "=" * 80) print() def print_section_title(self, title): """打印章节标题""" print(Fore.YELLOW + Style.BRIGHT + f"\n{'─' * 40}") print(Fore.YELLOW + Style.BRIGHT + f" {title}") print(Fore.YELLOW + Style.BRIGHT + f"{'─' * 40}") def get_stock_name(self, stock_code): """通过股票代码获取企业名称""" try: import akshare as ak # 获取股票信息 stock_info = ak.stock_individual_info_em(symbol=stock_code) if not stock_info.empty: # 查找股票名称 name_row = stock_info[stock_info['item'] == '股票简称'] if not name_row.empty: stock_name = name_row['value'].values[0] print(Fore.GREEN + f"✅ 识别股票: {stock_name} ({stock_code})") return stock_name except Exception as e: print(Fore.YELLOW + f"⚠️ 获取股票名称失败,使用代码搜索: {str(e)}") return stock_code def get_stock_data_from_api(self, stock_code, days=30): """从多个数据源获取股票数据""" try: # 尝试使用adata库 try: import adata end_date = datetime.now().strftime('%Y-%m-%d') start_date = (datetime.now() - timedelta(days=days)).strftime('%Y-%m-%d') print(Fore.CYAN + f"🔍 正在从adata获取股票 {stock_code} 的数据...") res_df = adata.stock.market.get_market( stock_code=stock_code, k_type=1, start_date=start_date ) if not res_df.empty: print(Fore.GREEN + f"✅ 成功获取 {len(res_df)} 条数据记录") return res_df, 'adata' except Exception as e: print(Fore.YELLOW + f"⚠️ adata获取失败: {str(e)}") # 备用方案: 使用akshare try: import akshare as ak print(Fore.CYAN + f"🔍 正在从akshare获取股票 {stock_code} 的数据...") # akshare获取A股日线数据 df = ak.stock_zh_a_hist( symbol=stock_code, period="daily", start_date=(datetime.now() - timedelta(days=days)).strftime('%Y%m%d'), end_date=datetime.now().strftime('%Y%m%d'), adjust="qfq" ) if not df.empty: # 标准化列名 df = df.rename(columns={ '日期': 'trade_date', '开盘': 'open', '收盘': 'close', '最高': 'high', '最低': 'low', '成交量': 'volume', '成交额': 'amount', '涨跌幅': 'change_pct', '涨跌额': 'change' }) df['stock_code'] = stock_code print(Fore.GREEN + f"✅ 成功获取 {len(df)} 条数据记录") return df, 'akshare' except Exception as e: print(Fore.YELLOW + f"⚠️ akshare获取失败: {str(e)}") print(Fore.RED + "❌ 所有数据源均失败") print(Fore.YELLOW + "💡 提示: 请安装数据源库") print(Fore.WHITE + " pip install adata") print(Fore.WHITE + " 或 pip install akshare") return None, None except Exception as e: print(Fore.RED + f"❌ 获取股票数据失败: {str(e)}") return None, None def search_stock_news(self, stock_name): """使用binggo搜索股票企业相关新闻并获取内容""" self.print_section_title("📰 搜索相关新闻") try: import binggo # 构建搜索词 - 使用企业名称 search_query = f"{stock_name} +最新消息" print(Fore.CYAN + f"🔍 正在使用Bing搜索: {search_query}") # 使用binggo搜索 search_results = binggo.go(search_query) if search_results and len(search_results) > 0: print(Fore.GREEN + f"✅ 找到 {len(search_results)} 条搜索结果") print(Fore.CYAN + f"📥 正在获取前5条新闻详细内容...\n") news_data = [] for i, (url, title) in enumerate(search_results[:5], 1): print(Fore.YELLOW + f"{i}. {title}") print(Fore.CYAN + f" 🔗 {url}") # 获取新闻内容 content = self.fetch_news_content(url) if content: print(Fore.GREEN + f" ✅ 内容获取成功 ({len(content)} 字)") else: print(Fore.YELLOW + f" ⚠️ 无法获取内容,将使用标题") print() # 构建新闻数据结构 news_data.append({ "title": title, "url": url, "source": self.extract_domain(url), "date": datetime.now().strftime('%Y-%m-%d'), "content": content if content else title }) return news_data else: print(Fore.YELLOW + "⚠️ 未找到相关新闻") return [] except ImportError: print(Fore.RED + "❌ 未安装binggo库,请运行: pip install binggo") return [] except Exception as e: print(Fore.RED + f"❌ 搜索新闻失败: {str(e)}") return [] def fetch_news_content(self, url): """获取新闻页面内容""" try: headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' } response = requests.get(url, headers=headers, timeout=10) response.encoding = response.apparent_encoding if response.status_code == 200: from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'html.parser') # 移除脚本和样式 for script in soup(["script", "style"]): script.decompose() # 获取文本内容 text = soup.get_text() lines = (line.strip() for line in text.splitlines()) chunks = (phrase.strip() for line in lines for phrase in line.split(" ")) text = ' '.join(chunk for chunk in chunks if chunk) # 限制长度,取前1000字 return text[:1000] if len(text) > 1000 else text else: return None except ImportError: print(Fore.YELLOW + " ⚠️ 需要安装 beautifulsoup4: pip install beautifulsoup4") return None except Exception as e: return None def extract_domain(self, url): """从URL提取域名""" try: from urllib.parse import urlparse domain = urlparse(url).netloc # 移除www.前缀 if domain.startswith('www.'): domain = domain[4:] return domain except: return "未知来源" def display_stock_summary(self, df, source=''): """展示股票数据摘要""" self.print_section_title(f"📊 最近交易数据 (数据源: {source})") # 显示最近5天数据 recent_data = df.tail(5) print(Fore.WHITE + f"{'日期':<12} {'收盘价':<10} {'涨跌幅%':<10} {'成交量(万)':<15}") print(Fore.WHITE + "-" * 60) for _, row in recent_data.iterrows(): date = str(row['trade_date'])[:10] close = f"{float(row['close']):.2f}" # 处理涨跌幅 try: change = float(row['change_pct']) except: change = 0.0 # 处理成交量 try: volume = f"{float(row['volume'])/10000:.0f}" except: volume = "N/A" # 根据涨跌设置颜色 if change > 0: color = Fore.RED change_str = f"+{change:.2f}%" elif change < 0: color = Fore.GREEN change_str = f"{change:.2f}%" else: color = Fore.WHITE change_str = f"{change:.2f}%" print(f"{date:<12} {close:<10} {color}{change_str:<10}{Style.RESET_ALL} {volume:<15}") # 统计信息 print(Fore.YELLOW + f"\n📈 统计信息:") print(Fore.WHITE + f" 最高价: {Fore.RED}{df['high'].max():.2f}{Style.RESET_ALL}") print(Fore.WHITE + f" 最低价: {Fore.GREEN}{df['low'].min():.2f}{Style.RESET_ALL}") print(Fore.WHITE + f" 平均价: {df['close'].mean():.2f}") print(Fore.WHITE + f" 当前价: {df.iloc[-1]['close']:.2f}") def prepare_comprehensive_analysis(self, df, news_data, stock_code): """准备综合分析数据(股票+新闻)""" recent = df.tail(10) # 股票数据总结 stock_summary = f"""股票代码: {stock_code}分析周期: {str(recent.iloc[0]['trade_date'])[:10]} 至 {str(recent.iloc[-1]['trade_date'])[:10]}【股票行情数据】最近10个交易日:""" for _, row in recent.iterrows(): try: stock_summary += f"日期: {str(row['trade_date'])[:10]}, 收盘: {float(row['close']):.2f}, " stock_summary += f"涨跌: {float(row['change_pct']):.2f}%, 成交量: {float(row['volume'])/10000:.0f}万\n" except: continue stock_summary += f"""技术指标:- 最高价: {df['high'].max():.2f}- 最低价: {df['low'].min():.2f}- 平均价: {df['close'].mean():.2f}- 当前价: {df.iloc[-1]['close']:.2f}- 最近5日均价: {df.tail(5)['close'].mean():.2f}- 最近10日均价: {df.tail(10)['close'].mean():.2f}""" # 新闻数据总结 news_summary = "\n【相关新闻资讯】(来自Bing搜索)\n" if news_data: for i, news in enumerate(news_data, 1): news_summary += f"\n新闻{i}: {news['title']}\n" news_summary += f"来源: {news['source']} | 链接: {news['url']}\n" news_summary += f"内容摘要: {news['content'][:300]}...\n" else: news_summary += "暂无相关新闻数据\n" return stock_summary + news_summary def get_ai_prediction(self, analysis_data): """使用AI进行综合分析预测""" self.print_section_title("🤖 AI智能分析中") prompt = f"""作为一名专业的股票分析师,请基于以下数据进行综合分析:{analysis_data}请提供:1. 技术面分析(趋势、支撑位、压力位)2. 基本面分析(结合新闻资讯)3. 短期走势预测(未来3-5个交易日)4. 投资建议(买入/持有/卖出,并说明理由)5. 风险提示请用简洁专业的语言回答,重点突出。""" headers = { "Content-Type": "application/json", "Authorization": f"Bearer {self.zhipu_api_key}" } data = { "model": "glm-4", "messages": [ { "role": "user", "content": prompt } ], "stream": False, "max_tokens": 2000, "temperature": 0.7 } try: print(Fore.CYAN + "⏳ 正在连接AI分析引擎...") response = requests.post(self.zhipu_api_url, headers=headers, json=data, timeout=30) if response.status_code == 200: result = response.json() ai_response = result['choices'][0]['message']['content'] print(Fore.GREEN + "✅ AI分析完成!\n") return ai_response else: print(Fore.RED + f"❌ API调用失败: {response.status_code}") print(Fore.RED + f"错误信息: {response.text}") return None except Exception as e: print(Fore.RED + f"❌ AI分析失败: {str(e)}") return None def display_ai_analysis(self, analysis): """展示AI分析结果""" self.print_section_title("📝 AI综合分析报告") # 美化输出AI分析 lines = analysis.split('\n') for line in lines: if '买入' in line or '上涨' in line or '积极' in line or '看好' in line: print(Fore.RED + Style.BRIGHT + line) elif '卖出' in line or '下跌' in line or '风险' in line or '谨慎' in line: print(Fore.GREEN + Style.BRIGHT + line) elif '持有' in line or '震荡' in line or '观望' in line: print(Fore.YELLOW + Style.BRIGHT + line) elif any(keyword in line for keyword in ['1.', '2.', '3.', '4.', '5.', '#', '##', '【', '】']): print(Fore.CYAN + Style.BRIGHT + line) else: print(Fore.WHITE + line) def run(self): """运行主程序""" self.clear_screen() self.print_header() # 获取用户输入 print(Fore.CYAN + "请输入股票代码 (例如: 000001=平安银行, 600036=招商银行): ", end="") stock_code = input().strip() if not stock_code: print(Fore.RED + "❌ 股票代码不能为空!") return print(Fore.CYAN + "请输入分析天数 (默认30天): ", end="") days_input = input().strip() days = int(days_input) if days_input.isdigit() else 30 print() # 获取股票名称 stock_name = self.get_stock_name(stock_code) # 获取股票数据 df, source = self.get_stock_data_from_api(stock_code, days) if df is None: return # 显示数据摘要 self.display_stock_summary(df, source) # 使用企业名称搜索相关新闻 news_data = self.search_stock_news(stock_name) # 准备综合分析数据 comprehensive_data = self.prepare_comprehensive_analysis(df, news_data, stock_code) # 获取AI预测 ai_analysis = self.get_ai_prediction(comprehensive_data) if ai_analysis: self.display_ai_analysis(ai_analysis) # 底部信息 print(Fore.CYAN + "\n" + "=" * 80) print(Fore.YELLOW + "⚠️ 免责声明: 本工具仅供参考,不构成投资建议,投资有风险,入市需谨慎!") print(Fore.CYAN + "=" * 80 + "\n")def main(): print(Fore.CYAN + Style.BRIGHT + "欢迎使用AI股票分析预测工具! (股票数据+新闻+AI)") print(Fore.YELLOW + "\n请输入您的智谱AI API Key: ", end="") api_key = input().strip() if not api_key: print(Fore.RED + "❌ API Key不能为空!") print(Fore.YELLOW + "\n💡 如何获取API Key:") print(Fore.WHITE + " 1. 访问 https://open.bigmodel.cn") print(Fore.WHITE + " 2. 注册并登录") print(Fore.WHITE + " 3. 在控制台获取API Key") return predictor = StockPredictor(api_key) while True: predictor.run() print(Fore.CYAN + "\n是否继续分析其他股票? (y/n): ", end="") choice = input().strip().lower() if choice != 'y': print(Fore.GREEN + Style.BRIGHT + "\n感谢使用,再见! 👋") breakif __name__ == "__main__": main()```输出:``` markdown✅ 识别股票: 比亚迪 (002594)🔍 正在从adata获取股票 002594 的数据...✅ 成功获取 22 条数据记录──────────────────────────────────────── 📊 最近交易数据 (数据源: adata)────────────────────────────────────────日期 收盘价 涨跌幅% 成交量(万) ------------------------------------------------------------2025-12-08 96.53 +0.57% 2478 2025-12-09 96.03 -0.52% 1632 2025-12-10 96.47 +0.46% 1984 2025-12-11 96.23 -0.25% 2509 2025-12-12 97.00 +0.80% 5546 📈 统计信息: 最高价: 100.50 最低价: 91.70 平均价: 95.80 当前价: 97.00──────────────────────────────────────── 📰 搜索相关新闻────────────────────────────────────────🔍 正在使用Bing搜索: 比亚迪 +最新消息✅ 找到 10 条搜索结果📥 正在获取前5条新闻详细内容...1. 2025年7月28日比亚迪股价为什么会变成112元了? - 知乎 🔗 https://www.zhihu.com/question/1933468416292946164 ⚠️ 无法获取内容,将使用标题2. 比亚迪2025年销量目标为什么要定那么高? - 知乎 🔗 https://www.zhihu.com/question/1915510542484902231 ⚠️ 无法获取内容,将使用标题3. 王传福坦言技术领先度不及以往,比亚迪的护城河还在吗?你 ... 🔗 https://www.zhihu.com/question/1980308534362144772 ⚠️ 无法获取内容,将使用标题4. 王传福称「比亚迪是龙头老大,可以被别人欺负一下,但不能 ... 🔗 https://www.zhihu.com/question/1981087153627886557 ⚠️ 无法获取内容,将使用标题5. 比亚迪 - 知乎 🔗 https://www.zhihu.com/topic/19555280 ⚠️ 无法获取内容,将使用标题──────────────────────────────────────── 🤖 AI智能分析中────────────────────────────────────────⏳ 正在连接AI分析引擎...✅ AI分析完成!──────────────────────────────────────── 📝 AI综合分析报告────────────────────────────────────────1. 技术面分析: - 趋势:近10个交易日,股价整体呈现横盘震荡态势,涨跌幅不大,重心略有上移。 - 支撑位:初步判断在91.70-95.00元区间,该区间内有多次股价止跌反弹。 - 压力位:100.50元为近期最高价,可视为短期压力位。2. 基本面分析: - 结合新闻资讯,比亚迪在行业竞争中保持龙头地位,但面临技术领先度下降的风险。 - 公司设定较高的销量目标,显示对未来市场前景的信心。3. 短期走势预测: - 预计未来3-5个交易日,股价可能维持横盘整理,有小幅上涨的可能,但需关注成交量变化。4. 投资建议: - 买入:对于长期投资者,可考虑在支撑位附近适当买入,关注公司基本面改善及行业前景。 - 持有:对于已经持有的投资者,可以继续持有,关注公司业绩及行业动态。 - 卖出:短期投资者,若股价接近压力位且成交量大增,可考虑获利了结。5. 风险提示: - 技术领先度下降,可能导致市场份额被竞争对手抢占。 - 行业竞争加剧,可能影响公司盈利能力。 - 关注宏观经济及政策变化,对股价产生影响。================================================================================⚠️ 免责声明: 本工具仅供参考,不构成投资建议,投资有风险,入市需谨慎!================================================================================```------------------------------------------------------------## 15. [用Ai完全掌控手机——Open-AutoGLM](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483832&idx=1&sn=607a79d3295c41b8861b0f93c7cd683a&chksm=f0a0c37cc7d74a6accda3da4c3b184c7b1f2d1a935cc87092f512ce53c82e14097f0d5d046c0#rd)**发布时间:** 2025年12月14日 03:08### 内容大家好!今天给你们带来了新出的好用AI项目Open-AutoGLM,能够控制你的手机或者模拟器进行操作,适合自动化场景。**使用教程:**所需环境:``` apachePython 环境:建议使用 Python 3.10 及以上版本。ADB (Android Debug Bridge):需要下载并配置 ADB 环境变量。Android 设备:Android 7.0+ 的设备或模拟器,并启用“开发者模式”和“USB 调试”。ADB Keyboard:用于文本输入,需安装并启用。```(1)下载adb``` rubyhttps://developer.android.com/tools/releases/platform-tools?hl=zh-cn```解压后的 platform-tools 添加到系统 PATH 环境变量中(2)下载安卓模拟器``` javascripthttps://mumu.163.com/```安装完模拟器后启用开发者模式|启用 USB 调试验证是否成功:``` nginxadb devices```(3)安装并切换虚拟输入法``` rubyhttps://github.com/senzhk/ADBKeyBoard/blob/master/ADBKeyboard.apk```(4)克隆项目``` bashgit clone https://github.com/zai-org/Open-AutoGLM.gitcd Open-AutoGLM```(5)安装依赖``` csspip install -r requirements.txt```(6)设置apikey``` javascriptexport ZHIPU_API_KEY="YOUR_ZHIPU_API_KEY"```**使用:**``` csspython main.py --task "打开小红书搜索美食"```------------------------------------------------------------## 16. [如何让Ai编程工具智商提升10倍](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483846&idx=1&sn=9b866d61963b4af63335b3a03b26bce4&chksm=f0a0c302c7d74a142fbc0b19260fd86bac80d9b3d6e77b82a2d63371929c8e9dc39e97fb3383#rd)**发布时间:** 2025年12月16日 15:01### 内容大家好 !今天给你们带来了Github火爆的编程mcp context7,它能够在我们进行编程工作时更规范的进行规划和开发,让简单的开发要求翻译成专业的提示词,适合小白使用。**1.获取密钥**``` javascripthttps://context7.com/```普通用户每天有200次免费请求**2.安装:**``` bashclaude mcp add --transport http context7 https://mcp.context7.com/mcp \ --header "CONTEXT7_API_KEY: YOUR_API_KEY"```上面为安装好ClaudeCode前提下进行操作,YOUR_API_KEY替换成自己密钥,如果安装了其他cli参考下面链接:``` bashhttps://context7.com/docs/installation```**3.使用**``` cssCreate a Next.js middleware that checks for a valid JWT in cookiesand redirects unauthenticated users to `/login`. use context7```使用时要求后面加上 use context7就可以了。------------------------------------------------------------## 17. [一秒钟手机部署deepseek Ai大语言模型并使用](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483863&idx=1&sn=d94dcf2d1ac16def6f455c07f2d5ff91&chksm=f0a0c313c7d74a054dc7ce46b85192b73fe0e015233ee9f2dfe00b47956a201818948abf26ec#rd)**发布时间:** 2025年12月18日 07:26### 内容大家好,今天给你们带来了手机上快速部署并使用大语言模型教程。**1.下载|安装termux终端**https://m.downkuai.com/android/140917.html**2.安装python和pip**pkg install python python-pip2.1改pip源(可选)```pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package```**3.安装ollama**pkg install -y ollama**4.启动ollama**ollama serve**5.安装deepseek大语言模型**(创建新终端窗口安装)ollama run deepseek-r1:1.5b**6.安装聊天界面(可选)**pip install ollamawebui( 使用)ollamawebui------------------------------------------------------------## 18. [Gemini-3.0-flash发布,击败刚发布的gpt5.2!(免费使用教程)](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483868&idx=1&sn=1103a3c7091a22f832426e4a95d5609b&chksm=f0a0c318c7d74a0e9ece1199f33f46bacc6e380e849448ac414facb21146cb33782c2bc821ac#rd)**发布时间:** 2025年12月19日 03:40### 内容2025 年 12 月 16 日 谷歌为了应付新发布的gpt5.2发布了自家低价高性能模型gemini-3.0-flash,价格比200美元会员gpt5.2便宜10倍,性能也同时超过了gpt5.2。**官方使用:**``` javascripthttps://gemini.google.com/```**代理网站:**``` javascripthttps://geepseek.pythonanywhere.com/```**或**``` javascripthttps://pythonxueba.github.io/```----------------------------------------------------------------网站源代码:``` xml# -*- coding: UTF-8 -*-import loggingfrom datetime import datetimefrom typing import List, Dictimport requestsimport jsonfrom flask import Flask, Response, request, render_template_stringfrom flask_cors import CORSimport refrom bs4 import BeautifulSoupimport timelogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')logger = logging.getLogger(__name__)app = Flask(__name__)CORS(app)CONFIGURED_DEFAULT_API_KEY = "谷歌密钥"GEMINI_BASE_URL = "https://generativelanguage.googleapis.com/v1beta/models/{model}:streamGenerateContent"MODEL_MAP = { "gemini-2.0-flash-lite": "gemini-2.0-flash-lite", "gemini-2.0-flash": "gemini-2.0-flash", "gemini-2.5-pro": "gemini-2.5-pro", "gemini-2.5-flash-lite": "gemini-2.5-flash-lite", "gemini-2.5-flash-image": "gemini-2.5-flash-image", "gemini-2.5-flash-preview-09-2025": "gemini-2.5-flash-preview-09-2025", "gemini-2.5-flash": "gemini-2.5-flash", "gemini-3-pro-image-preview": "gemini-3-pro-image-preview", "gemini-3-flash-preview": "gemini-3-flash-preview", "gemini-3-pro-preview": "gemini-3-pro-preview",}SYSTEM_INSTRUCTION_TEXT = ( "你是一个高级AI助手GeepSeek,使用模型 {}。当前时间约 {}。\n" "请始终用中文回复,保持简洁准确。\n" "支持Markdown、LaTeX公式、代码高亮。\n" "如果消息含网址,请读取并总结内容。\n" "避免有害、歧视、色情内容。适当使用表情符号😉")SAFETY_SETTINGS = [ {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}, {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}, {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}, {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},]GENERATION_CONFIG = { "temperature": 0.7, "top_p": 0.95, "top_k": 64, "max_output_tokens": 1048576}def fetch_url_content(url: str) -> str: headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'} try: response = requests.get(url, headers=headers, timeout=15) response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser') for tag in soup(["script", "style"]): tag.decompose() return soup.get_text(separator=' ', strip=True)[:65536] except Exception as e: return f"链接获取失败: {str(e)}"def extract_urls(text: str) -> List[str]: pattern = re.compile(r'(https?://[^\s<>"{}|\\^`\[\]]+|www\.[^\s<>"{}|\\^`\[\]]+)') urls = pattern.findall(text) normalized = [] for url in urls: if url.startswith('www.'): url = 'https://' + url if url not in normalized: normalized.append(url) return normalizeddef normalize_context(context: List[Dict]) -> List[Dict]: normalized = [] for item in context: if item.get("role") == "system": continue role = "model" if item.get("role") in ("assistant", "model") else "user" parts = [] for p in item.get("parts", []): if p.get("text"): parts.append({"text": p["text"]}) elif p.get("inline_data"): parts.append({"inline_data": p["inline_data"]}) if parts: normalized.append({"role": role, "parts": parts}) return normalizeddef generate_gemini_stream(prompt: str, history: List[Dict], images: List[str], model_name: str, api_key: str): model = MODEL_MAP.get(model_name, "gemini-2.5-flash") url = GEMINI_BASE_URL.format(model=model) key = api_key if api_key else CONFIGURED_DEFAULT_API_KEY if not key: return Response("data: " + json.dumps({'error': 'API Key 未提供'}) + "\n\n", mimetype="text/event-stream") current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") system_instruction = {"parts": [{"text": SYSTEM_INSTRUCTION_TEXT.format(model, current_time)}]} urls = extract_urls(prompt) url_parts = [{"text": f"\n--- 引用内容 ({u}) ---\n{fetch_url_content(u)}\n-------------------------\n"} for u in urls] contents = normalize_context(history) user_parts = url_parts[:] for chunk in [prompt[i:i+4096] for i in range(0, len(prompt), 4096)]: user_parts.append({"text": f"用户的请求:{chunk}"}) if images: user_parts.extend([{"inline_data": {"mime_type": "image/jpeg", "data": img}} for img in images]) if not user_parts: user_parts.append({"text": "(无具体请求)"}) contents.append({"role": "user", "parts": user_parts}) payload = { "contents": contents, "safetySettings": SAFETY_SETTINGS, "generationConfig": GENERATION_CONFIG, "systemInstruction": system_instruction } if len(json.dumps(payload).encode()) > 2 * 1024 * 1024: return Response("data: " + json.dumps({'error': '请求负载过大'}) + "\n\n", mimetype="text/event-stream") def stream(): for attempt in range(3): try: with requests.post(url, params={"key": key, "alt": "sse"}, json=payload, stream=True, timeout=120) as r: if r.status_code != 200: full_error = r.text.strip() safe_error = re.sub(r'[A-Za-z0-9_-]{30,}', '[隐藏]', full_error) if r.status_code == 429: yield f"data: {json.dumps({'error': '请求太频繁,请稍后再试'})}\n\n" elif "API_KEY_INVALID" in full_error or "invalid api key" in full_error.lower(): yield f"data: {json.dumps({'error': 'API Key 无效,请检查设置'})}\n\n" elif r.status_code == 400: yield f"data: {json.dumps({'error': '请求参数错误'})}\n\n" elif r.status_code == 500: yield f"data: {json.dumps({'error': 'Gemini 服务内部错误'})}\n\n" else: yield f"data: {json.dumps({'error': f'服务器错误 {r.status_code}: {safe_error[:100]}'})}\n\n" return for line in r.iter_lines(): if line and line.startswith(b"data: "): data = json.loads(line[6:]) text = "".join(p.get("text", "") for c in data.get("candidates", []) for p in c.get("content", {}).get("parts", [])) if text: yield f"data: {json.dumps({'text': text})}\n\n" if data.get("candidates") and data["candidates"][0].get("finishReason"): yield f"data: {json.dumps({'done': True})}\n\n" return yield f"data: {json.dumps({'done': True})}\n\n" return except requests.exceptions.ConnectionError as e: if attempt < 2: time.sleep(2 ** attempt) continue yield f"data: {json.dumps({'error': '网络连接中断,请检查网络后重试'})}\n\n" except requests.exceptions.Timeout as e: if attempt < 2: time.sleep(2 ** attempt) continue yield f"data: {json.dumps({'error': '请求超时,请重试'})}\n\n" except Exception as e: safe_msg = re.sub(r'[A-Za-z0-9_-]{30,}', '[隐藏]', str(e)) if attempt < 2: time.sleep(2 ** attempt) continue yield f"data: {json.dumps({'error': f'请求异常: {safe_msg}'})}\n\n" return app.response_class(stream(), mimetype="text/event-stream")@app.route('/chat', methods=['POST'])def chat(): data = request.get_json(silent=True) if not data: return Response("data: " + json.dumps({'error': '无效请求'}) + "\n\n", mimetype="text/event-stream") images = data.get('images', []) return generate_gemini_stream( data.get('message', ''), data.get('context', []), images, data.get('model_name', 'gemini-2.5-flash'), data.get('api_key', '') )@app.route('/')def index(): return render_template_string(r'''<!DOCTYPE html><htmllang="zh"><head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>GeepSeek</title> <linkrel="stylesheet"href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/base16/tomorrow-night.min.css"> <linkrel="stylesheet"href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css"> <linkhref="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap"rel="stylesheet"> <linkhref="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@500;600&display=swap"rel="stylesheet"> <scriptsrc="https://cdn.jsdelivr.net/npm/marked@4.3.0/lib/marked.umd.min.js"></script> <scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script> <scriptsrc="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script> <scriptsrc="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js"></script> <scriptsrc="https://cdn.jsdelivr.net/npm/dompurify@2.4.0/dist/purify.min.js"></script> <style> :root { --bg: #ffffff; --text: #000000; --border: #e0e0e0; --shadow: rgba(0,0,0,0.08); --hover: #f5f5f5; --code-bg: #000000; --code-text: #f8f8f8; --inline-code-bg: #000000; --inline-code-text: #ffffff; --ai-bg: #f0f0f0; --user-bg: #000000; --input-bg: #ffffff; --scrollbar: #000000; --marker: #666666; } [data-theme="dark"] { --bg: #000000; --text: #ffffff; --border: #333333; --shadow: rgba(0,0,0,0.4); --hover: #1e1e1e; --code-bg: #1e1e1e; --code-text: #f8f8f8; --inline-code-bg: #2d2d2d; --inline-code-text: #d4a76a; --ai-bg: #111111; --user-bg: #ffffff; --input-bg: #000000; --scrollbar: #000000; --marker: #bbbbbb; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg); color: var(--text); min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 20px; font-weight: 500; font-size: 16px; line-height: 1.6; } .container { width: 100%; max-width: 1400px; height: calc(100vh - 170px); background: var(--bg); box-shadow: 0 8px 32px var(--shadow); border-radius: 16px; overflow: hidden; display: flex; position: relative; } .sidebar { width: 300px; background: var(--bg); border-right: 1px solid var(--border); display: flex; flex-direction: column; position: fixed; left: -300px; top: 0; height: 100%; transition: left 0.3s ease; z-index: 1000; } .sidebar.active { left: 0; } .menu-toggle { position: fixed; top: 32px; left: 32px; background: none; border: none; cursor: pointer; z-index: 1001; font-size: 24px; color: var(--text); } .menu-toggle.hidden { display: none; } .new-chat-btn { position: fixed; top: 32px; right: 32px; background: var(--text); color: var(--bg); border: none; border-radius: 50%; width: 48px; height: 48px; cursor: pointer; z-index: 1001; font-size: 26px; display: flex; align-items: center; justify-content: center; } .settings-panel { padding: 24px; border-bottom: 1px solid var(--border); } .settings-summary { font-weight: 600; cursor: pointer; padding: 12px 0; display: flex; justify-content: space-between; align-items: center; font-size: 18px; } .settings-summary .arrow { transition: transform 0.2s; } .settings-panel[close] .arrow { transform: rotate(180deg); } .settings-content { padding-top: 12px; display: flex; flex-direction: column; gap: 16px; } .settings-content label { font-size: 14px; color: var(--text); opacity: 0.8; } .settings-content select, .settings-content input { width: 100%; padding: 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--input-bg); color: var(--text); font-size: 16px; } .theme-toggle { width: 100%; padding: 14px; background: var(--hover); border: none; border-radius: 12px; cursor: pointer; margin-top: 8px; font-size: 16px; } .history-search { margin: 20px 24px; padding: 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--input-bg); color: var(--text); font-size: 16px; } .chat-history { flex: 1; overflow-y: auto; padding: 0 24px 24px; } .history-item { padding: 16px; border-radius: 12px; cursor: pointer; margin-bottom: 12px; transition: background 0.2s; } .history-item:hover, .history-item.active { background: var(--hover); } .history-item-title { font-weight: 600; font-size: 16px; margin-bottom: 8px; word-break: break-word; } .history-item-preview { font-size: 14px; color: var(--text); opacity: 0.7; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; margin-bottom: 8px; } .history-item-time { font-size: 13px; color: var(--text); opacity: 0.6; } .clear-history { padding: 16px 24px; text-align: center; cursor: pointer; font-weight: 500; font-size: 16px; } .clear-history:hover { background: var(--hover); } .chat-container { flex: 1; display: flex; flex-direction: column; width: 100%; } .chat-messages { flex: 1; overflow-y: auto; padding: 32px 32px 140px; display: flex; flex-direction: column; gap: 28px; } .message { max-width: 95%; border-radius: 24px; padding: 18px 24px; box-shadow: 0 4px 16px var(--shadow); } .message.user { align-self: flex-end; background: var(--user-bg); color: var(--bg); border-bottom-right-radius: 6px; } .message.ai { align-self: flex-start; background: var(--ai-bg); border-bottom-left-radius: 6px; } .message-content { line-height: 1.8; font-size: 17px; font-weight: 500; } /* 内联代码 */ .message-content code:not(pre code) { background: var(--inline-code-bg); color: var(--inline-code-text); padding: 2px 6px; border-radius: 6px; font-family: 'JetBrains Mono', monospace; font-weight: 600; font-size: 15px; } /* Markdown 美化 */ .message-content h1 { font-size: 26px; font-weight: 600; margin: 28px 0 16px; } .message-content h2 { font-size: 22px; font-weight: 600; margin: 24px 0 14px; } .message-content h3 { font-size: 19px; font-weight: 600; margin: 20px 0 12px; } .message-content p { margin: 14px 0; } .message-content strong { font-weight: 600; } .message-content em { font-style: italic; } .message-content blockquote { border-left: 4px solid var(--text); padding-left: 20px; margin: 20px 0; opacity: 0.85; font-style: italic; } .message-content ul, .message-content ol { padding-left: 28px; margin: 16px 0; } .message-content li { margin: 10px 0; } .message-content li::marker { color: var(--marker); font-weight: bold; } .message-content table { border-collapse: collapse; width: 100%; margin: 24px 0; font-size: 16px; } .message-content table th, .message-content table td { border: 1px solid var(--border); padding: 12px 16px; text-align: left; } .message-content table th { background: var(--hover); font-weight: 600; } .message-content hr { border: none; border-top: 2px solid var(--border); margin: 40px 0; } /* 代码块 */ .message-content pre { background: var(--code-bg); color: var(--code-text); padding: 20px; border-radius: 16px; overflow: hidden; margin: 20px 0; position: relative; font-family: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'SF Mono', Monaco, Consolas, monospace; font-weight: 600; font-size: 15px; box-shadow: 0 4px 16px var(--shadow); } .message-content pre code { background: none; padding: 0; white-space: pre; overflow-x: auto; display: block; -webkit-overflow-scrolling: touch; } .code-actions { position: absolute; bottom: 12px; right: 12px; opacity: 0; transition: opacity 0.2s; z-index: 10; display: flex; gap: 8px; } pre:hover .code-actions, pre:focus-within .code-actions { opacity: 1; } .code-actions button { background: rgba(255,255,255,0.15); color: #fff; border: none; padding: 8px 16px; border-radius: 8px; cursor: pointer; font-size: 14px; backdrop-filter: blur(4px); } .html-preview-btn { background: rgba(100,150,255,0.2); } .input-container { position: fixed; bottom: 0; left: 0; right: 0; padding: 24px 32px; background: var(--bg); border-top: 1px solid var(--border); max-width: 1400px; margin: 0 auto; box-shadow: 0 -8px 32px var(--shadow); z-index: 100; } .input-wrapper { display: flex; background: var(--input-bg); border: 1px solid var(--border); border-radius: 32px; padding: 16px 24px; gap: 16px; align-items: flex-end; box-shadow: 0 4px 16px var(--shadow); } #message-input { flex: 1; background: transparent; border: none; outline: none; color: var(--text); font-size: 17px; font-weight: 500; resize: none; min-height: 24px; max-height: 200px; overflow-y: auto; line-height: 1.6; } #send-button, .upload-button { background: none; border: none; color: var(--text); font-size: 24px; cursor: pointer; opacity: 0.8; transition: opacity 0.2s; } #send-button:hover, .upload-button:hover { opacity: 1; } #stop-button { display: none; color: #ff4444; } .image-preview-container { display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 16px; } .image-preview-item { position: relative; width: 120px; height: 120px; border-radius: 16px; overflow: hidden; box-shadow: 0 4px 12px var(--shadow); } .remove-image { position: absolute; top: 8px; right: 8px; background: rgba(0,0,0,0.7); color: white; border: none; width: 28px; height: 28px; border-radius: 50%; cursor: pointer; font-size: 16px; } ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--scrollbar); border-radius: 5px; } ::-webkit-scrollbar-thumb:hover { background: var(--scrollbar); } .loading-dots { display: flex; gap: 8px; padding: 16px 0; } .loading-dots span { width: 10px; height: 10px; background: var(--text); border-radius: 50%; display: inline-block; animation: pulse 1.4s infinite ease-in-out both; opacity: 0.6; } .loading-dots span:nth-child(1) { animation-delay: -0.32s; } .loading-dots span:nth-child(2) { animation-delay: -0.16s; } @keyframes pulse { 0%, 100% { opacity: 0.4; } 50% { opacity: 1; } } #html-modal { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.85); z-index: 2000; justify-content: center; align-items: center; } .modal-content { background: var(--bg); width: 95%; max-width: 1200px; height: 95%; border-radius: 16px; overflow: hidden; position: relative; box-shadow: 0 16px 64px var(--shadow); } .modal-close { position: absolute; top: 16px; right: 16px; background: none; border: none; color: var(--text); font-size: 32px; cursor: pointer; z-index: 10; width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; } #html-frame { width: 100%; height: 100%; border: none; } @media (max-width: 768px) { body { padding: 12px; } .container { height: calc(100vh - 174px); border-radius: 12px; } .sidebar { width: 70%; left: -100%; } .chat-messages { padding: 20px 20px 140px; } .input-container { padding: 20px; } .input-wrapper { padding: 14px 20px; } } </style></head><body> <buttonclass="menu-toggle"id="menu-toggle"> <svgwidth="24"height="24"viewBox="0 0 24 24"fill="none"> <pathd="M3 12h18M3 6h18M3 18h18"stroke="currentColor"stroke-width="2"stroke-linecap="round"/> </svg> </button> <buttonclass="new-chat-btn"onclick="startNewChat()">+</button> <divclass="container"> <divclass="sidebar"id="sidebar"> <detailsclass="settings-panel"> <summaryclass="settings-summary">设置 <spanclass="arrow">▼</span></summary> <divclass="settings-content"> <label>模型</label> <selectid="model-select"> <optionvalue="gemini-2.0-flash-lite">Gemini 2.0 Flash Lite</option> <optionvalue="gemini-2.0-flash">Gemini 2.0 Flash</option> <optionvalue="gemini-2.5-pro">Gemini 2.5 Pro</option> <optionvalue="gemini-2.5-flash-lite">Gemini 2.5 Flash Lite</option> <optionvalue="gemini-2.5-flash-image">Gemini 2.5 Flash Image</option> <optionvalue="gemini-2.5-flash-preview-09-2025">Gemini 2.5 Flash Preview (09-2025)</option> <optionvalue="gemini-2.5-flash"selected>Gemini 2.5 Flash</option> <optionvalue="gemini-3-pro-image-preview">Gemini 3 Pro Image Preview</option> <optionvalue="gemini-3-flash-preview">Gemini 3 Flash Preview</option> <optionvalue="gemini-3-pro-preview">Gemini 3 Pro Preview</option> </select> <label>API Key (本地保存)</label> <inputtype="password"id="api-key-input"placeholder="可选,留空使用默认"> <buttonclass="theme-toggle"onclick="toggleTheme()">夜间模式</button> </div> </details> <inputtype="text"class="history-search"placeholder="搜索历史"oninput="updateChatHistory(this.value.trim())"> <divclass="chat-history"id="chat-history"></div> <divclass="clear-history"onclick="clearHistory()">清空历史</div> </div> <divclass="chat-container"> <divclass="chat-messages"id="chat-messages"></div> <divclass="input-container"> <divclass="image-preview-container"id="image-preview"></div> <divclass="input-wrapper"> <buttonclass="upload-button"id="upload-button">📎</button> <textareaid="message-input"placeholder="发送消息..."rows="1"></textarea> <buttonid="send-button">➤</button> <buttonid="stop-button">■</button> </div> </div> </div> </div> <divid="html-modal"> <divclass="modal-content"> <buttonclass="modal-close">×</button> <iframeid="html-frame"></iframe> </div> </div> <script> const Config = { MAX_IMAGE_UPLOADS: 5 }; let conversations = JSON.parse(localStorage.getItem('conversations') || '[]'); let currentConversationId = localStorage.getItem('currentConversationId') || Date.now().toString(); localStorage.setItem('currentConversationId', currentConversationId); let currentContext = []; let uploadedImages = []; let isGenerating = false; let loadingElement = null; const messagesDiv = document.getElementById('chat-messages'); const input = document.getElementById('message-input'); const sendBtn = document.getElementById('send-button'); const stopBtn = document.getElementById('stop-button'); const preview = document.getElementById('image-preview'); const sidebar = document.getElementById('sidebar'); const menuToggle = document.getElementById('menu-toggle'); const chatHistory = document.getElementById('chat-history'); const modelSelect = document.getElementById('model-select'); const apiKeyInput = document.getElementById('api-key-input'); const htmlModal = document.getElementById('html-modal'); function toggleTheme() { const root = document.documentElement; const isDark = root.hasAttribute('data-theme'); if (isDark) root.removeAttribute('data-theme'); else root.setAttribute('data-theme', 'dark'); localStorage.setItem('theme', isDark ? 'light' : 'dark'); closeSidebar(); } function closeSidebar() { sidebar.classList.remove('active'); menuToggle.classList.remove('hidden'); } function renderMath(el) { renderMathInElement(el, { delimiters: [ {left: "$$", right: "$$", display: true}, {left: "$", right: "$", display: false}, {left: "\\[", right: "\\]", display: true}, {left: "\\(", right: "\\)", display: false} ], throwOnError: false }); } function scrollToBottom() { messagesDiv.scrollTop = messagesDiv.scrollHeight; } function highlightAndAddButtons() { document.querySelectorAll('pre code').forEach((block) => { hljs.highlightElement(block); }); renderMath(document.body); document.querySelectorAll('pre').forEach(pre => { if (pre.querySelector('.code-actions')) return; const actions = document.createElement('div'); actions.className = 'code-actions'; actions.innerHTML = ` <button onclick="navigator.clipboard.writeText(this.closest('pre').querySelector('code').textContent).then(()=>{this.textContent='已复制';setTimeout(()=>this.textContent='复制',2000)})">复制</button> <button class="html-preview-btn" onclick="previewHTML(this.closest('pre').querySelector('code').textContent)">预览</button> `; pre.appendChild(actions); }); } document.addEventListener('DOMContentLoaded', () => { htmlModal.style.display = 'none'; const savedTheme = localStorage.getItem('theme'); if (savedTheme === 'dark') document.documentElement.setAttribute('data-theme', 'dark'); const savedKey = localStorage.getItem('geminiApiKey'); if (savedKey) apiKeyInput.value = savedKey; const savedModel = localStorage.getItem('selectedModel'); if (savedModel) modelSelect.value = savedModel; apiKeyInput.addEventListener('input', () => localStorage.setItem('geminiApiKey', apiKeyInput.value)); modelSelect.addEventListener('change', () => localStorage.setItem('selectedModel', modelSelect.value)); loadConversation(currentConversationId); updateChatHistory(); setupEvents(); setTimeout(highlightAndAddButtons, 100); }); htmlModal.addEventListener('click', (e) => { if (e.target === htmlModal || e.target.classList.contains('modal-close')) { htmlModal.style.display = 'none'; } }); function setupEvents() { menuToggle.addEventListener('click', (e) => { e.stopPropagation(); sidebar.classList.toggle('active'); menuToggle.classList.toggle('hidden'); }); document.addEventListener('click', (e) => { if (sidebar.classList.contains('active') && !sidebar.contains(e.target) && e.target !== menuToggle) { closeSidebar(); } }); sendBtn.onclick = sendMessage; stopBtn.onclick = () => { isGenerating = false; stopBtn.style.display = 'none'; sendBtn.style.display = 'block'; }; input.onkeydown = e => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); sendMessage(); } }; input.oninput = () => { input.style.height = 'auto'; input.style.height = `${Math.min(input.scrollHeight, 200)}px`; }; document.getElementById('upload-button').onclick = () => { const fileInput = document.createElement('input'); fileInput.type = 'file'; fileInput.accept = 'image/*'; fileInput.multiple = true; fileInput.onchange = e => handleImageUpload(e.target.files); fileInput.click(); }; input.onpaste = e => { for (const item of e.clipboardData.items) { if (item.type.indexOf('image') !== -1) { const file = item.getAsFile(); const reader = new FileReader(); reader.onload = ev => addImagePreview(ev.target.result, file.type || 'image/jpeg'); reader.readAsDataURL(file); } } }; } function handleImageUpload(files) { const remaining = Config.MAX_IMAGE_UPLOADS - uploadedImages.length; Array.from(files).slice(0, remaining).forEach(file => { const reader = new FileReader(); reader.onload = e => addImagePreview(e.target.result, file.type || 'image/jpeg'); reader.readAsDataURL(file); }); } function addImagePreview(dataUrl, mime) { if (uploadedImages.length >= Config.MAX_IMAGE_UPLOADS) return; const base64 = dataUrl.split(',')[1]; const id = Date.now() + Math.random(); uploadedImages.push({id, data: base64, mime}); const div = document.createElement('div'); div.className = 'image-preview-item'; div.dataset.id = id; div.innerHTML = `<img src="${dataUrl}"> <button class="remove-image" onclick="this.parentElement.remove(); uploadedImages = uploadedImages.filter(i=>i.id!=${id})">×</button>`; preview.appendChild(div); } function updateChatHistory(filter = '') { chatHistory.innerHTML = ''; [...conversations].reverse().filter(c => c.messages?.length && (!filter || JSON.stringify(c.messages).toLowerCase().includes(filter))).forEach(c => { const div = document.createElement('div'); div.className = `history-item ${c.id === currentConversationId ? 'active' : ''}`; const userMsg = c.messages.find(m => m.role === 'user'); const title = userMsg?.parts?.find(p => p.text)?.text?.trim() || '[图片]'; const aiMsg = c.messages.find(m => m.role === 'model'); const previewText = aiMsg?.parts?.find(p => p.text)?.text?.trim() || ''; const time = new Date(c.messages[c.messages.length-1].timestamp).toLocaleString(); div.innerHTML = ` <div class="history-item-title">${title.slice(0, 50)}${title.length > 50 ? '...' : ''}</div> <div class="history-item-preview">${previewText.slice(0, 180)}${previewText.length > 180 ? '...' : ''}</div> <div class="history-item-time">${time}</div> `; div.onclick = () => loadConversation(c.id); chatHistory.appendChild(div); }); } function loadConversation(id) { if (isGenerating) return; currentConversationId = id; localStorage.setItem('currentConversationId', id); const conv = conversations.find(c => c.id === id) || {id, messages: []}; messagesDiv.innerHTML = ''; conv.messages.forEach(m => { const text = m.parts.find(p => p.text)?.text || ''; const imgs = m.parts.filter(p => p.inline_data).map(p => p.inline_data); addMessage(text, m.role === 'user' ? 'user' : 'ai', imgs); }); currentContext = conv.messages.slice(-60); updateChatHistory(); closeSidebar(); setTimeout(highlightAndAddButtons, 100); } function addMessage(text, type, images = []) { const div = document.createElement('div'); div.className = `message ${type}`; const content = document.createElement('div'); content.className = 'message-content'; div.appendChild(content); if (images.length) { const container = document.createElement('div'); container.className = 'image-preview-container'; images.forEach(i => { const item = document.createElement('div'); item.className = 'image-preview-item'; item.innerHTML = `<img src="data:${i.mime_type || 'image/jpeg'};base64,${i.data}">`; container.appendChild(item); }); div.appendChild(container); } if (type === 'user') { content.textContent = text || '[图片]'; } else { const clean = DOMPurify.sanitize(marked.parse(text || ''), {FORBID_TAGS:['style','script']}); content.innerHTML = clean; highlightAndAddButtons(); } messagesDiv.appendChild(div); scrollToBottom(); } function previewHTML(code) { const frame = document.getElementById('html-frame'); frame.srcdoc = code; htmlModal.style.display = 'flex'; } async function sendMessage() { const text = input.value.trim(); if ((!text && uploadedImages.length === 0) || isGenerating) return; isGenerating = true; sendBtn.style.display = 'none'; stopBtn.style.display = 'block'; const imagesToSend = uploadedImages.map(i => i.data); uploadedImages = []; addMessage(text || '[图片]', 'user', imagesToSend.map(d => ({data: d, mime_type: 'image/jpeg'}))); input.value = ''; preview.innerHTML = ''; input.style.height = 'auto'; loadingElement = document.createElement('div'); loadingElement.className = 'message ai'; loadingElement.innerHTML = '<div class="message-content"><div class="loading-dots"><span></span><span></span><span></span></div></div>'; messagesDiv.appendChild(loadingElement); scrollToBottom(); const payload = { message: text, context: currentContext, images: imagesToSend, model_name: modelSelect.value, api_key: apiKeyInput.value }; try { const res = await fetch('/chat', {method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify(payload)}); if (!res.ok) throw new Error('请求失败'); const reader = res.body.getReader(); const decoder = new TextDecoder(); let buffer = ''; let fullText = ''; // 安全移除 loading if (loadingElement && loadingElement.parentNode) { messagesDiv.removeChild(loadingElement); } loadingElement = null; const aiDiv = document.createElement('div'); aiDiv.className = 'message ai'; const content = document.createElement('div'); content.className = 'message-content'; aiDiv.appendChild(content); messagesDiv.appendChild(aiDiv); while (true) { const {done, value} = await reader.read(); if (done) { finalize(text, fullText, imagesToSend); break; } buffer += decoder.decode(value, {stream: true}); let pos; while ((pos = buffer.indexOf('\n\n')) > -1) { const line = buffer.slice(0, pos).trim(); buffer = buffer.slice(pos + 2); if (line.startsWith('data: ')) { const data = JSON.parse(line.slice(6)); if (data.text) { fullText += data.text; const clean = DOMPurify.sanitize(marked.parse(fullText), {FORBID_TAGS:['style','script']}); content.innerHTML = clean; highlightAndAddButtons(); scrollToBottom(); } if (data.error) { content.innerHTML = `<span style="color:#ff4444">${data.error}</span>`; } } } } } catch (e) { // 安全移除 loading if (loadingElement && loadingElement.parentNode) { messagesDiv.removeChild(loadingElement); } loadingElement = null; addMessage('网络错误,请检查连接', 'ai'); finalize(text, '', imagesToSend); } } function finalize(userText, aiText, images) { currentContext.push({role:'user', parts:[{text:userText||'[图片]'}].concat(images.map(d=>({inline_data:{mime_type:'image/jpeg',data:d}})))}); currentContext.push({role:'model', parts:[{text:aiText}]}); currentContext = currentContext.slice(-60); let conv = conversations.find(c => c.id === currentConversationId); if (!conv) { conv = {id:currentConversationId, messages:[]}; conversations.push(conv); } conv.messages.push( {role:'user', parts:[{text:userText||'[图片]'}].concat(images.map(d=>({inline_data:{mime_type:'image/jpeg',data:d}}))), timestamp:new Date().toISOString()}, {role:'model', parts:[{text:aiText}], timestamp:new Date().toISOString()} ); localStorage.setItem('conversations', JSON.stringify(conversations)); updateChatHistory(); isGenerating = false; sendBtn.style.display = 'block'; stopBtn.style.display = 'none'; input.focus(); } function startNewChat() { if (isGenerating) return; currentConversationId = Date.now().toString(); localStorage.setItem('currentConversationId', currentConversationId); messagesDiv.innerHTML = ''; currentContext = []; if (!conversations.find(c => c.id === currentConversationId)) conversations.push({id:currentConversationId, messages:[]}); localStorage.setItem('conversations', JSON.stringify(conversations)); updateChatHistory(); closeSidebar(); } function clearHistory() { conversations = []; localStorage.removeItem('conversations'); startNewChat(); closeSidebar(); } </script></body></html>''')if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, threaded=True)```------------------------------------------------------------## 19. [Github火爆!一行代码全端本地部署Ai(多端通用)](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483872&idx=1&sn=d488a19a49c8464e7c92b59f99173399&chksm=f0a0c324c7d74a325b51f1bf994507126b9133eacc4d7ce2258573adae0aeb25ad7950e09c2f#rd)**发布时间:** 2025年12月20日 07:13### 内容**1.安装:****(1)linux**``` bashcurl -fsSL https://github.com/NexaAI/nexa-sdk/releases/latest/download/nexa-cli_linux_x86_64.sh -o install.sh && chmod +x install.sh && ./install.sh && rm install.sh```**(2)macos**①arm64 for Apple Neural Engine``` bashhttps://nexa-model-hub-bucket.s3.us-west-1.amazonaws.com/public/nexa_sdk/downloads/nexa-cli_macos_arm64_ane.pkg```**②**arm64 for MLX``` bashhttps://public-storage.nexa4ai.com/nexa_sdk/downloads/nexa-cli_macos_arm64.pkg```③x86_64``` bashhttps://public-storage.nexa4ai.com/nexa_sdk/downloads/nexa-cli_macos_x86_64.pkg```(3)Windows①arm64 with Qualcomm NPU support``` bashhttps://public-storage.nexa4ai.com/nexa_sdk/downloads/nexa-cli_windows_arm64.exe```②x86_64 with Intel / AMD NPU support``` bashhttps://public-storage.nexa4ai.com/nexa_sdk/downloads/nexa-cli_windows_x86_64.exe```2.使用``` apachenexa infer ggml-org/Qwen3-1.7B-GGUF```官方文档:``` bashhttps://github.com/NexaAI/nexa-sdk```------------------------------------------------------------## 20. [Python版本管理工具——UV](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483888&idx=1&sn=50a84931335aa8fb543b94fe55c96f99&chksm=f0a0c334c7d74a2220d8f82a24012cf340354c1acef7664c2591eb2e15e4b605b99640857f31#rd)**发布时间:** 2025年12月23日 08:38### 内容uv是一个高性能的Python包和项目管理工具。它旨在成为现有工具(如pip、venv、pip-tools和pip-compile)的快速替代品,提供包安装、依赖解析、虚拟环境创建和管理等功能。uv使用Rust语言编写,因此在速度上表现卓越,能够显著加快Python项目的依赖管理和构建过程,为开发者提供更流畅的体验。**1.安装**(1)python环境中安装:``` nginxpip install uv```(2)windows安装:``` nginxpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"```(3)Macos|Linux``` nginxcurl -LsSf https://astral.sh/uv/install.sh | sh```**2.使用**(1)查看可用python版本``` nginxuv python list```(2)安装特定版本python``` apacheuv python install 3.12```(3)设置全局python``` apacheuv python default 3.12```(4)安装/卸载包``` nginx#安装uv pip install requests#卸载uv pip uninstall requests```(5)导出环境依赖``` nginxuv pip freeze > requirements.txt```(6)安装依赖(与pip install -r requirements.txt类似,可用于安装pyproject.toml中依赖)``` bashuv sync```------------------------------------------------------------## 21. [如何让你的闲置苹果电脑AI性能超越NVIDIA H200?](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483892&idx=1&sn=4e427acbb821ce6327b64d685dc74f4e&chksm=f0a0c330c7d74a26ee9dfd76ace8da07fb3a22b7b8a0512427f37c3bac5881707ba616d7cdf7#rd)**发布时间:** 未知时间### 内容无内容------------------------------------------------------------## 22. [快速零编程搭建个人网站,吊打30年老程序员!](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483909&idx=2&sn=b896a2c5c7c94486ee2cb8f3c852f860&chksm=f0a0c0c1c7d749d72c45184385298f21dbc26ce08ee4cf7125e88e96127049f97bacfe1ad576#rd)**发布时间:** 2025年12月27日 07:02### 内容大家好!今天给你们介绍的是z.ai的全栈式开发模式,我们通过聊天就能搭建自己想要的个人网站,而且质量也是比较高,重要是是免费。此外官方免费提供三级域名,通过域名直接访问你搭建的网站,无需任何成本。**使用教程**1.打开智谱官网:``` javascripthttps://chat.z.ai/```2.选择全栈式开发``` 表达需求```3.点击发布``` 编辑域名```等等片刻就可以几个好用ai生成网站:``` bashhttps://githubsearch.space.z.ai/ # github项目搜索工具`````` bashhttps://nicesearch.space.z.ai/ #聚合搜索```------------------------------------------------------------## 23. [像人类一样使用电脑——Agent-S(附配置glm免费使用)](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483920&idx=1&sn=2e262e0ffce2b91d536be24ea5e328ec&chksm=f0a0c0d4c7d749c2d1594b210ce4a58a42562d4bed95ec5523904f14939287910b49aa1bbbf3#rd)**发布时间:** 2025年12月28日 04:35### 内容大家好今天给你们带来了超好用的agent项目agent-s,能够帮我们像人一样操作电脑,完成一系列操作,使我们学习和研究变得更加简单。**1.安装:**``` nginxpip install gui-agents```(1)安装相关依赖:``` bashsudo apt install gnome-screenshotsudo apt-get install xvfbsudo apt install wmctrl```(2)设置环境变量(可能不需要设置ANTHROPIC_BASE_URL和ANTHROPIC_MODEL)``` javascriptexport ANTHROPIC_BASE_URL=https://open.bigmodel.cn/api/anthropicexport ANTHROPIC_API_KEY=你的apikeyexport ANTHROPIC_MODEL=glm-4.6```获取apikey网址:``` javascripthttps://open.bigmodel.cn/```**2.使用**``` apachexvfb-run agent_s \ --provider anthropic \ --model glm-4.6 \ --ground_provider anthropic \ --ground_url https://open.bigmodel.cn/api/anthropic \ --ground_model glm-4.6 \ --grounding_width 1920 \ --grounding_height 1080 \ --enable_local_env```运行后可以通过聊天进行操作,比如“帮我整理最新新闻保存到md文件里”需要长期使用,可以订阅套餐:``` javascripthttps://www.bigmodel.cn/glm-coding?ic=4VS6F6LJ4H```------------------------------------------------------------## 24. [Github最吊项目,1000多种语言转换成语音——coqui-ai-TTS](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483924&idx=1&sn=dd4e14d518e87dc3825249a4a9451952&chksm=f0a0c0d0c7d749c63e1aad0a44bcc3acb0e56210b568abc95f4fe100abd38f64a9e2639fa2ef#rd)**发布时间:** 2025年12月29日 04:30### 内容大家好,今天给你们带来了github最强项目coqui-ai-TTS,它不仅能够基于文本生成1000多种语言的语音,还支持4000多种语言的语音识别,彻底帮助人类解决语言交流障碍。**1.安装**``` nginxpip install 'coqui-tts[zh]' pypinyin```**2.使用**(1)命令式使用``` csstts --text "你好,我是python学霸" --model_name "tts_models/zh-CN/baker/tacotron2-DDC-GST" --out_path speech.wav```(2)使用代码``` pythonimport torchfrom TTS.api import TTS# 获取设备device = "cuda" if torch.cuda.is_available() else "cpu"# 列出所有可用的 🐸TTS 模型print(TTS().list_models())# 初始化 TTS 模型tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)# 列出可用说话人print(tts.speakers)# 运行 TTS# ❗ XTTS 同时支持 'speaker' 和 'speaker_wav' 参数,但许多模型只允许其中一个。# TTS 输出为振幅值列表,从 `speaker_wav` 克隆声音#wav = tts.tts(# text="Hello world!",# speaker_wav="my/cloning/audio.wav",# language="en"#)# TTS 输出到文件,使用预设的说话人tts.tts_to_file( text="你好,你是谁,我是人工智能!", speaker="Craig Gutsy", language="zh", file_path="output.wav")```默认支持语言列表:``` bashen: 英语 (English)es: 西班牙语 (Spanish)fr: 法语 (French)de: 德语 (German)it: 意大利语 (Italian)pt: 葡萄牙语 (Portuguese)pl: 波兰语 (Polish)tr: 土耳其语 (Turkish)ru: 俄语 (Russian)nl: 荷兰语 (Dutch)cs: 捷克语 (Czech)ar: 阿拉伯语 (Arabic)zh-cn: 中文(中国大陆)hu: 匈牙利语 (Hungarian)ko: 韩语 / 朝鲜语 (Korean)ja: 日语 (Japanese)hi: 印地语 (Hindi)```默认支持角色:``` css【女性名字】Claribel DervlaDaisy StudiousGracie WiseTammie EmaAlison DietlindeAna FlorenceAnnmarie NeleAsya AnaraBrenda SternGitta NikolinaHenriette UshaSofia HellenTammy GritTanja AdelinaVjollca JohnnieNova HogarthMaja RuohoUta ObandoLidiya SzekeresChandra MacFarlandSzofi GrangerCamilla HolmströmLilya StainthorpeZofija KendrickNarelle MoonBarbora MacLeanAlexandra HisakawaAlma MaríaRosemary Okafor【男性名字】Andrew ChipperBadr OdhiamboDionisio SchuylerRoyston MinViktor EkaAbrahan MackAdde MichalBaldur SanjinCraig GutsyDamien BlackGilberto MathiasIlkin UrbanoKazuhiko AtallahLudvig MilivojSuad QasimTorcull DiarmuidViktor MenelaosZacharie AimiliosIge BehringerFilip TraverseDamjan ChapmanWulf CarlevaroAaron DreschnerKumar DahlEugenio MataracıFerran SimenXavier HayasakaLuis MorayMarcos Rudaski```需要支持更多语言时可以获取语言代码并下载对应模型使用就可以获取语言代码:``` rubyhttps://dl.fbaipublicfiles.com/mms/tts/all-tts-languages.html```下载对应模型``` rubywget https://dl.fbaipublicfiles.com/mms/tts/语言代码.tar.gz```官方文档:``` javascripthttps://github.com/idiap/coqui-ai-TTS```------------------------------------------------------------## 25. [本地运行,能控制你的电脑,甚至键盘鼠标!](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483933&idx=1&sn=0e5ad80c0df66e6f2cceb92f3e3d3ba9&chksm=f0a0c0d9c7d749cf672806617abf60b158392ec9be22b1d85c69bde3e41efa56d8ba55c4b755#rd)**发布时间:** 2025年12月31日 04:01### 内容Microsoft发布的的Fara-7B是一个高效的70亿参数智能代理模型(SLM),专为计算机操作设计。它通过直接感知网页,并利用模拟鼠标和键盘的动作(如滚动、打字、点击坐标)与计算机界面进行视觉交互,从而执行多步骤任务,而无需依赖辅助功能树或单独的解析模型。**克隆项目:**``` bash# 1. Clone repositorygit clone https://github.com/microsoft/fara.gitcd fara# 2. Setup environmentpython3 -m venv .venv source .venv/bin/activatepip install -e .playwright install```**安装vllm:**``` nginxpip install vllm```**运行Fara-7B模型:**``` cppexport VLLM_LOGGING_LEVEL=DEBUGvllm serve "microsoft/Fara-7B" --port 5000 --dtype auto```**使用:**``` javascriptfara-cli --task "帮我整理最近十天热点"```项目 地址:``` javascripthttps://github.com/microsoft/fara```------------------------------------------------------------## 26. [UI UX Pro Max——让你 Ai成为顶级设计师!](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483958&idx=1&sn=60d5a056b3a7225134980f1943f81caf&chksm=f0a0c0f2c7d749e4326e7c1742b0b037972bbf9afde5226bf2a1e0619f2beeb99dc9d481ee59#rd)**发布时间:** 2026年1月3日 09:23### 内容UI UX Pro Max 是一个可搜索的数据库,包含 UI 样式、色彩搭配、字体搭配、图表类型、产品推荐、用户体验指南以及针对特定栈的最佳实践。它作为AI编码助手(Claude Code、Cursor、Windsurf等)的技能/工作流程。**特色:**``` css57种界面风格——玻璃形态、黏土形态、极简主义、野兽派、新形态、便当网格、暗色模式等95色板——针对SaaS、电子商务、医疗、金融科技、美妆等行业专属调色板。56 种字体配对——搭配 Google 字体导入的精心排版组合24种图表类型——仪表盘和分析建议8 个技术栈——React、Next.js、Vue、Svelte、SwiftUI、React Native、Flutter、HTML+Tailwind98 用户体验指南——最佳实践、反模式与无障碍规则```**安装:**(安装之前必须有python环境)``` cs# Install CLI globallynpm install -g uipro-cli# Go to your projectcd /path/to/your/project# Install for your AI assistantuipro init --ai claude # Claude Codeuipro init --ai cursor # Cursoruipro init --ai windsurf # Windsurfuipro init --ai antigravity # Antigravity (.agent + .shared)uipro init --ai copilot # GitHub Copilotuipro init --ai kiro # Kirouipro init --ai all # All assistants```**使用:**``` css/ui-ux-pro-max Build a landing page for my SaaS product```项目地址:``` javascripthttps://github.com/nextlevelbuilder/ui-ux-pro-max-skill```------------------------------------------------------------## 27. [抖音送的免费ai服务器都领了吗?](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247483964&idx=1&sn=ada75b449bf31425392951c0c64744b5&chksm=f0a0c0f8c7d749ee215666912f6ed4b27164dd1973f41f9cd3ea88e4fe3df5330717695bf626#rd)**发布时间:** 2026年1月4日 03:44### 内容# 字节跳动全自动AI编程Agent## 介绍* 一键搭建个性化网站(支持AI功能无缝集成)* 自动化部署GitHub及其他平台项目* 提供免费基础资源与灵活配置方案## 使用### 1. 访问平台打开扣字编程官方网址:`https://code.coze.cn/`### 2. 提交需求选择「网页」类型后,输入自然语言需求描述(支持补充具体细节),示例如下:* 帮我开发一个简约风格的个人博客网站(含文章管理、评论功能)* 帮我部署GitHub上的Vue电商项目* 帮我搭建一个带有AI对话功能的在线客服网站(对接企业知识库)### 3. 资源配置平台免费提供基础运行资源:资源类型配置内存2GB计算力1核CPU支持通过终端进行高级配置,包括环境变量设置、依赖包安装、端口映射等操作。### 4. 部署发布确认项目效果无误后,点击「部署」按钮完成发布:* 自定义域名绑定(需完成DNS解析配置)* 免费三级域名(平台自动生成,格式:xxx.coze.site)提示:部署过程中可实时查看日志,便于快速排查问题;发布后支持一键回滚至历史版本。**案例展示:AI版Markdown编辑器**```https://ch6gw8qpzj.coze.site```------------------------------------------------------------## 28. [66.3kstar!吊打Manus,脚踢套壳Agent!](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484000&idx=1&sn=b6c01dc7ee70e382e654c3e592381b89&chksm=f0a0c0a4c7d749b24467e52442107e113b8f6626e25d362b84244a6aca5a4151b907656c6287#rd)**发布时间:** 2026年1月6日 15:57### 内容**OpenHands**是一个专注于 AI 驱动开发的开源项目与社区,提供了从 SDK、CLI 到本地 GUI、云端服务及企业版的全场景工具链,核心围绕智能开发代理技术构建。其核心组成包括可组合的 Python 语言 SDK、易于上手的 CLI 工具、本地 GUI 应用。**安装:**1.克隆项目:``` bashgit clone https://github.com/OpenHands/software-agent-sdk.gitcd software-agent-sdk```2.安装uv:``` nginxpip install uv```3.安装python3.12:``` apacheuv python install 3.12```4.设置默认python:``` apacheuv python pin 3.12```5.安装项目``` nginxmake build```**使用:**``` apacheexport LLM_API_KEY="your-api-key"cd agent-sdkuv run python examples/01_standalone_sdk/07_mcp_integration.py```官方文档:``` rubyhttps://docs.openhands.dev/sdk/guides/agent-delegation```github项目:``` javascripthttps://github.com/OpenHands/OpenHands```------------------------------------------------------------## 29. [腾讯送的8g内存+4核cpu免费云端IDE要不要?](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484000&idx=2&sn=16c2a6c8be85e732abaa901b53a33819&chksm=f0a0c0a4c7d749b21a767460ba5d6647e31b558a1c46407c51fd0969150983763d2ba20742cd#rd)**发布时间:** 2026年1月6日 15:57### 内容**Cloud Studio**是腾讯云推出的基于浏览器的在线集成开发环境(IDE),为开发者提供免安装、跨设备、弹性算力的云端工作站,支持多语言开发、AI 辅助编程与团队协作,适配云原生与 AI 应用开发场景。**地址:**``` javascripthttps://cloudstudio.net/```使用:``` 打开网址后,点击创建应用,选择自己喜欢的编程语言和环境就可以使用了```------------------------------------------------------------## 30. [英伟达免费白嫖glm4.7和minimax-m2](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484006&idx=1&sn=ceef24c91d69b4326bae1764192573ff&chksm=f0a0c0a2c7d749b4d947834a80560e9f92c20e4e4d250a0a184eb2ed396644c3b3e11027146e#rd)**发布时间:** 2026年1月7日 15:59### 内容英伟达最近在NIM API 平台开始免费提供**GLM-4.7**和**MiniMax-M2.1**这两个Ai最新模型了,只需要有个apikey就可以使用了。注册apikey地址:``` javascripthttps://build.nvidia.com/```使用:(ClaudeCode使用)``` javascriptexport ANTHROPIC_BASE_URL=https://gvnp5fyvcy.coze.site/export ANTHROPIC_API_KEY=你的nvdia_apikey```api转换代码:``` python#!/usr/bin/env python3"""NVIDIA API 格式转换代理 (Flask版)将 Claude API 格式转换为 OpenAI 格式,用于 CC Switch"""from flask import Flask, request, jsonifyimport jsonimport urllib.requestimport urllib.errorimport timeimport osapp = Flask(__name__)# NVIDIA API 配置NVIDIA_API_KEY = os.environ.get('NVIDIA_API_KEY', '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')NVIDIA_API_URL = "https://integrate.api.nvidia.com/v1/chat/completions"# 服务器端口PORT = int(os.environ.get('PORT', '5000'))# 模型映射MODEL_MAPPING = { "claude-3-5-sonnet-20241022": "minimax/MiniMax-M2.1", "claude-3-5-haiku-20241022": "zhipuai/glm-4.7", "claude-3-opus-20240229": "qwen/qwen3-235b-a22b", "claude-sonnet-4-20250514": "qwen/qwen2.5-coder-7b-instruct", "default": "qwen/qwen2.5-coder-7b-instruct"}def convert_claude_to_openai(claude_request): """将 Claude API 请求转换为 OpenAI 格式""" claude_model = claude_request.get("model", "default") nvidia_model = MODEL_MAPPING.get(claude_model, MODEL_MAPPING["default"]) messages = [] # 处理 system 参数 if "system" in claude_request: messages.append({ "role": "system", "content": claude_request["system"] }) # 转换 messages for msg in claude_request.get("messages", []): content = msg.get("content", "") if isinstance(content, list): text_parts = [item.get("text", "") for item in content if item.get("type") == "text"] content = "\n".join(text_parts) messages.append({ "role": msg.get("role", "user"), "content": content }) return { "model": nvidia_model, "messages": messages, "temperature": claude_request.get("temperature", 0.7), "max_tokens": claude_request.get("max_tokens", 4096), }def convert_openai_to_claude(openai_response): """将 OpenAI API 响应转换为 Claude 格式""" choice = openai_response.get("choices", [{}])[0] message = choice.get("message", {}) content = message.get("content", "") return { "id": openai_response.get("id", ""), "type": "message", "role": "assistant", "content": [{"type": "text", "text": content}], "model": openai_response.get("model", ""), "stop_reason": "end_turn" if choice.get("finish_reason") == "stop" else choice.get("finish_reason"), "stop_sequence": None, "usage": { "input_tokens": openai_response.get("usage", {}).get("prompt_tokens", 0), "output_tokens": openai_response.get("usage", {}).get("completion_tokens", 0) } }@app.route('/health', methods=['GET'])def health_check(): """健康检查端点""" return jsonify({"status": "ok"})@app.route('/v1/messages', methods=['POST'])def handle_messages(): """处理 Claude API 格式的消息请求""" try: claude_request = request.get_json() if not claude_request: return jsonify({"type": "error", "error": {"type": "api_error", "message": "Invalid JSON"}}), 400 print(f"\n{'='*60}") print(f"收到 Claude 请求: {claude_request.get('model', 'unknown')}") # 转换为 OpenAI 格式 openai_request = convert_claude_to_openai(claude_request) print(f"转换为 NVIDIA 模型: {openai_request['model']}") # 调用 NVIDIA API req = urllib.request.Request( NVIDIA_API_URL, data=json.dumps(openai_request).encode('utf-8'), headers={ 'Authorization': f'Bearer {NVIDIA_API_KEY}', 'Content-Type': 'application/json' } ) start_time = time.time() with urllib.request.urlopen(req, timeout=60) as response: elapsed_time = time.time() - start_time openai_response = json.loads(response.read().decode('utf-8')) print(f"NVIDIA API 响应: {response.status} ({elapsed_time:.2f}秒)") # 转换为 Claude 格式 claude_response = convert_openai_to_claude(openai_response) print(f"✓ 成功转换为 Claude 格式") print(f"{'='*60}\n") return jsonify(claude_response) except urllib.error.HTTPError as e: print(f"✗ NVIDIA API 错误: {e.code} - {e.reason}") return jsonify({ "type": "error", "error": {"type": "api_error", "message": f"NVIDIA API error: {e.code} - {e.reason}"} }), 500 except urllib.error.URLError as e: print(f"✗ 网络错误: {str(e)}") return jsonify({ "type": "error", "error": {"type": "api_error", "message": f"Network error: {str(e)}"} }), 500 except Exception as e: print(f"✗ 错误: {str(e)}") return jsonify({ "type": "error", "error": {"type": "api_error", "message": str(e)} }), 500@app.route('/')def index(): """首页""" return jsonify({ "name": "NVIDIA API Proxy", "version": "1.0.0", "status": "running", "endpoints": { "health": "/health", "api": "/v1/messages" } })if __name__ == '__main__': print("="*60) print("NVIDIA API 格式转换代理 (Flask)") print("="*60) print() print(f"监听: http://0.0.0.0:{PORT}") print() print("CC Switch 配置:") print(f" 请求地址: http://0.0.0.0:{PORT}/v1") print(" API Key: 任意值(例如:test-key)") print() print("支持模型映射:") for k, v in MODEL_MAPPING.items(): if k != "default": print(f" {k} -> {v}") print() print("按 Ctrl+C 停止") print("="*60) print() app.run(host='0.0.0.0', port=PORT, debug=False)```------------------------------------------------------------## 31. [如何白嫖别人部署的“Ollama”Ai?](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484021&idx=1&sn=241d9199b4bb884bce6b873ce8ef7534&chksm=f0a0c0b1c7d749a75031b88e806e454459b44465773eebe7bf65d26403a61c2c751e14a571a3#rd)**发布时间:** 2026年1月9日 04:12### 内容Ollama 作为开源大语言模型部署工具,因操作简便广受欢迎,但**默认无 API 身份验证**且监听地址为`0.0.0.0`(允许所有网络访问)。若服务暴露至公网,任何人可直接使用你的 Ollama 实例,导致计算资源被"白嫖",甚至泄露本地数据。# 1. 如何白嫖公网暴露的 Ollama## (1)获取ip和端口网站名称官方网址搜索关键词FOFAhttps://fofa.info/`"Ollama is running"`Shodanhttps://www.shodan.io/`"Ollama is running"`Censyshttps://platform.censys.io/`"Ollama is running"`Criminal IPhttps://www.criminalip.io/`"Ollama is running"`# 使用## 1.通过openwebui使用:OpenWebUI## 2.通过免费第三方网站使用:https://y4cvky7578.coze.site限制 Ollama 仅监听本地地址`127.0.0.1`,阻止外部网络访问。以下是各系统配置方法:### 2.1 Linux/macOS 系统通过修改环境变量永久生效:```# 追加环境变量到 shell 配置文件(bash/zsh 二选一)echo"export OLLAMA_HOST=127.0.0.1" >> ~/.bashrc # bash 用户# echo "export OLLAMA_HOST=127.0.0.1" >> ~/.zshrc # zsh 用户# 立即生效配置source ~/.bashrc # 对应上述配置文件```**说明**:重启 Ollama 服务后仍保持设置,若需临时恢复公网访问,执行`unset OLLAMA_HOST`并重启服务。### 2.2 Windows 系统临时启动方式启动时直接指定监听地址:```ollama serve --host 127.0.0.1```永久生效设置(开机自启)1. 新建文本文件,写入以下内容:```@echo offollama serve --host 127.0.0.1```2. 保存为`ollama_start.bat`;3. 通过 Windows 任务计划程序,设置为开机自动运行该批处理。## 3. 额外安全建议1. **防火墙加固**:禁止端口`11434`的外部访问(双重防护);2. **监听检查:**源代码:``` javascripthttps://gitee.com/pythonxueba/xb-ollamachat```------------------------------------------------------------## 32. [Windows零开始安装免费使用claude-code](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484040&idx=1&sn=d203ea2870609dd6cd19177b0ebc9322&chksm=f0a0c04cc7d7495a37e572728782c44a3e2ac4f49a1d548f0efe9b57ada8f89b8e903eca52d4#rd)**发布时间:** 2026年1月10日 10:37### 内容**1.安装claude所需环境:**(1)git``` nginxwinget install Git.Git```(2)nodejs``` nginxwinget install OpenJS.NodeJS.LTS```**2.安装claudecode:**``` cssnpm install -g @anthropic-ai/claude-code```如果显示:``` nginxmight not be available in your country```找出claude.json:``` typescriptfind ~ -name "*claude*" -type f -name "*.json" 2>/dev/null```新增内容到userid下面:``` json"hasCompletedOnboarding": true, // 这是你新增的行,末尾要加逗号```**3.安装python:**``` apachewinget install Python.Python.3.12```**4.获取NIM密钥:**``` javascripthttps://build.nvidia.com/```**5.运行api转换脚本:**``` python#!/usr/bin/env python3# -*- coding: utf-8 -*-"""NVIDIA API 格式转换代理将 Claude API 格式转换为 NVIDIA API 格式并返回 Claude 格式响应配置通过 GET 参数传递:- model: Claude 模型名称- auth_token: NVIDIA API 认证令牌"""from flask import Flask, request, Response, jsonify, stream_with_contextimport jsonimport requestsimport timeimport loggingfrom datetime import datetime, timezonefrom typing import Dict, Any, Generator# 配置日志logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')logger = logging.getLogger(__name__)app = Flask(__name__)PORT = 5000HOST = '0.0.0.0'NVIDIA_API_URL = "https://integrate.api.nvidia.com/v1/chat/completions"# 模型映射:Claude 模型 -> NVIDIA 模型# 使用 NVIDIA API 目录中实际可用的模型MODEL_MAPPING = { "claude-3-5-sonnet-20241022": "meta/llama-3.1-70b-instruct", "claude-3-5-haiku-20241022": "meta/llama-3.1-8b-instruct", "claude-3-opus-20240229": "meta/llama-3.1-405b-instruct", "claude-sonnet-4-20250514": "meta/llama-3.1-70b-instruct"}DEFAULT_MODEL = "claude-3-5-sonnet-20241022"def validate_request(request_data: Dict[str, Any]) -> tuple[bool, str]: """验证请求格式""" if not request_data: return False, "Empty request body" if "messages" not in request_data: return False, "Missing 'messages' field" if not isinstance(request_data["messages"], list) or len(request_data["messages"]) == 0: return False, "'messages' must be a non-empty array" return True, ""def process_content_item(item: Dict[str, Any]) -> Dict[str, Any]: """处理单个内容项(支持多模态)""" content_type = item.get("type", "text") if content_type == "text": return {"type": "text", "text": item.get("text", "")} elif content_type == "image": source = item.get("source", {}) if source.get("type") == "base64": media_type = source.get("media_type", "image/jpeg") data = source.get("data", "") return { "type": "text", "text": f"[Image: {media_type}, size: {len(data)} bytes]" } return {"type": "text", "text": str(item.get("text", item))}def convert_claude_to_nvidia(claude_request: Dict[str, Any], claude_model: str) -> Dict[str, Any]: """转换 Claude 请求为 NVIDIA 格式""" nvidia_model = MODEL_MAPPING.get(claude_model, "qwen/qwen2.5-coder-7b-instruct") messages = [] for msg in claude_request.get("messages", []): role = msg.get("role") content = msg.get("content", "") if isinstance(content, str): messages.append({"role": role, "content": content}) elif isinstance(content, list): text_parts = [] for item in content: processed = process_content_item(item) if processed["type"] == "text": text_parts.append(processed["text"]) if text_parts: messages.append({"role": role, "content": "\n".join(text_parts)}) elif role and content: messages.append({"role": role, "content": str(content)}) return { "model": nvidia_model, "messages": messages, "temperature": claude_request.get("temperature", 0.7), "max_tokens": claude_request.get("max_tokens", 4096), "top_p": claude_request.get("top_p", 1.0), "stream": claude_request.get("stream", False) }def parse_nvidia_stream(resp: requests.Response, model: str) -> Generator[str, None, None]: """解析 NVIDIA 流式响应为 Claude 格式""" message_id = f"msg_{int(time.time())}" output_tokens = 0 try: yield "event: message_start\n" yield f"data: {json.dumps({{'type':'message_start','message':{{'id':'{message_id}','type':'message','role':'assistant','content':[],'model':'{model}'}}}}, ensure_ascii=False)}\n\n" yield "event: content_block_start\n" yield 'data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}\n\n' for line in resp.iter_lines(chunk_size=1024, decode_unicode=True): if not line or not line.strip(): continue line = line.strip() if not line.startswith('data: '): continue line = line[6:].strip() if line == '[DONE]': break try: chunk = json.loads(line) if 'choices' in chunk and len(chunk['choices']) > 0: delta = chunk['choices'][0].get('delta', {}) content = delta.get('content', '') if content: output_tokens += len(content.split()) escaped_content = content.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n').replace('\r', '\\r') yield "event: content_block_delta\n" yield f"data: {json.dumps({{'type':'content_block_delta','index':0,'delta':{{'type':'text_delta','text':'{escaped_content}'}}}}, ensure_ascii=False)}\n\n" if 'usage' in chunk: output_tokens = chunk['usage'].get('completion_tokens', output_tokens) except json.JSONDecodeError: continue except Exception as e: logger.error(f"Error processing stream chunk: {e}") continue yield "event: content_block_stop\n" yield 'data: {"type":"content_block_stop","index":0}\n\n' yield "event: message_delta\n" yield f"data: {json.dumps({{'type':'message_delta','delta':{{'stop_reason':'end_turn'}},'usage':{{'output_tokens':{output_tokens}}}}}, ensure_ascii=False)}\n\n" yield "event: message_stop\n" yield 'data: {"type":"message_stop"}\n\n' except GeneratorExit: pass except Exception as e: yield "event: error\n" yield f"data: {json.dumps({{'type':'error','error':{{'type':'api_error','message':'{str(e)}'}}}}, ensure_ascii=False)}\n\n"@app.route('/v1/models', methods=['GET'])def list_models(): """获取可用模型列表""" # 尝试从 Authorization 头获取 token 来查询 NVIDIA API 的真实模型列表 auth_header = request.headers.get('Authorization') auth_token = None if auth_header and auth_header.startswith('Bearer '): auth_token = auth_header[7:] if auth_token: try: # 尝试从 NVIDIA API 获取真实模型列表 headers = { 'Authorization': f'Bearer {auth_token}', 'Content-Type': 'application/json' } response = requests.get( f"{NVIDIA_API_URL.replace('/v1/chat/completions', '')}/v1/models", headers=headers, timeout=10 ) if response.status_code == 200: nvidia_models = response.json() logger.info(f"Successfully fetched NVIDIA models: {len(nvidia_models.get('data', []))} models") return jsonify(nvidia_models) except Exception as e: logger.warning(f"Failed to fetch NVIDIA models: {e}") # 返回默认的 Claude 模型列表 models = [ {"id": "claude-3-5-sonnet-20241022", "name": "Claude 3.5 Sonnet", "type": "model"}, {"id": "claude-3-5-haiku-20241022", "name": "Claude 3.5 Haiku", "type": "model"}, {"id": "claude-3-opus-20240229", "name": "Claude 3 Opus", "type": "model"}, {"id": "claude-sonnet-4-20250514", "name": "Claude Sonnet 4", "type": "model"} ] return jsonify({"object": "list", "data": models})@app.route('/v1/messages', methods=['POST'])def handle_messages(): """处理主要请求 配置获取优先级: 1. 请求头: X-Auth-Token, X-Model 2. GET 参数: auth_token, model 3. 默认值 """ start_time = time.time() request_id = f"req_{int(time.time())}" try: # 打印所有请求头用于调试 logger.info(f"{request_id} - All Headers: {dict(request.headers)}") # 从请求头或 GET 参数获取配置 # 尝试多种常见的 API key 请求头 auth_header = ( request.headers.get('Authorization') or request.headers.get('X-Auth-Token') or request.headers.get('x-api-key') or request.headers.get('api-key') or request.headers.get('X-API-KEY') or request.headers.get('API-KEY') ) # 从 GET 参数获取 auth_token_param = ( request.args.get('auth_token') or request.args.get('api_key') or request.args.get('key') ) # 处理 Authorization 头中的 Bearer 前缀 if auth_header: if auth_header.startswith('Bearer '): auth_token = auth_header[7:] # 去掉 'Bearer ' 前缀 else: auth_token = auth_header elif auth_token_param: auth_token = auth_token_param else: auth_token = None claude_model = ( request.headers.get('X-Model') or request.args.get('model') or DEFAULT_MODEL ) logger.info(f"{request_id} - Extracted auth_token: {auth_token[:20] if auth_token else None}...") logger.info(f"{request_id} - Extracted model: {claude_model}") if not auth_token: # 打印可用的请求头信息 available_headers = [k for k in request.headers.keys() if 'auth' in k.lower() or 'key' in k.lower() or 'token' in k.lower()] logger.warning(f"{request_id} - Missing auth_token. Available relevant headers: {available_headers}") return jsonify({ "type": "error", "error": { "type": "invalid_request_error", "message": "Missing auth_token. Available headers: " + str(list(request.headers.keys())) } }), 400 logger.info(f"{request_id} - Request with model: {claude_model}") claude_request = request.get_json() if not claude_request: return jsonify({ "type": "error", "error": {"type": "invalid_request_error", "message": "Request body must be valid JSON"} }), 400 is_valid, error_msg = validate_request(claude_request) if not is_valid: return jsonify({ "type": "error", "error": {"type": "invalid_request_error", "message": error_msg} }), 400 nvidia_request = convert_claude_to_nvidia(claude_request, claude_model) headers = { 'Authorization': f'Bearer {auth_token}', 'Content-Type': 'application/json' } # 记录发送到 NVIDIA API 的请求 logger.info(f"{request_id} - Sending to NVIDIA API: {json.dumps(nvidia_request, ensure_ascii=False)}") response = requests.post( NVIDIA_API_URL, headers=headers, json=nvidia_request, stream=nvidia_request.get("stream", False), timeout=120 ) logger.info(f"{request_id} - NVIDIA API response status: {response.status_code}") if response.status_code != 200: logger.error(f"{request_id} - NVIDIA API Error: {response.text}") return jsonify({ "type": "error", "error": {"type": "api_error", "message": f"NVIDIA API Error: {response.text}"} }), 500 if nvidia_request.get("stream", False): return Response( stream_with_context(parse_nvidia_stream(response, claude_model)), mimetype="text/event-stream", headers={ "Cache-Control": "no-cache", "X-Accel-Buffering": "no", "Connection": "keep-alive" } ) nvidia_resp = response.json() choice = nvidia_resp.get("choices", [{}])[0] content = choice.get("message", {}).get("content", "") finish_reason = choice.get("finish_reason", "stop") stop_reason_map = { "stop": "end_turn", "length": "max_tokens", "content_filter": "stop_sequence" } stop_reason = stop_reason_map.get(finish_reason, finish_reason) nvidia_usage = nvidia_resp.get("usage", {}) result = { "id": f"msg_{int(time.time())}", "type": "message", "role": "assistant", "content": [{"type": "text", "text": content}], "model": claude_model, "stop_reason": stop_reason, "stop_sequence": None, "usage": { "input_tokens": nvidia_usage.get("prompt_tokens", 0), "output_tokens": nvidia_usage.get("completion_tokens", 0), "cache_creation_input_tokens": 0, "cache_read_input_tokens": 0 }, "created_at": datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.%fZ') } logger.info(f"{request_id} - Request completed in {time.time() - start_time:.2f}s") return jsonify(result) except requests.exceptions.Timeout: return jsonify({ "type": "error", "error": {"type": "timeout_error", "message": "Request timed out"} }), 504 except Exception as e: logger.error(f"{request_id} - Unexpected error: {str(e)}", exc_info=True) return jsonify({ "type": "error", "error": {"type": "api_error", "message": str(e)} }), 500@app.route('/health', methods=['GET'])def health_check(): """健康检查端点""" return jsonify({"status": "healthy", "service": "NVIDIA API Proxy"})if __name__ == '__main__': logger.info(f"Starting NVIDIA API Proxy on {HOST}:{PORT}") logger.info(f"Usage: POST /v1/messages?model=<MODEL_NAME>&auth_token=<YOUR_TOKEN>") app.run(host=HOST, port=PORT, debug=False)```或者可以现用:``` javascripthttps://gemini3.pythonanywhere.com/```用这个可以忽略安装python和运行api转换步骤**6.设置环境变量:**``` cppsetx ANTHROPIC_BASE_URL "http://127.0.0.1:5000"#setx ANTHROPIC_BASE_URL "https://gemini3.pythonanywhere.com"setx ANTHROPIC_API_KEY "你的nim密钥"```**7.使用:**``` claude```------------------------------------------------------------## 33. [2026年以后Ai发展方向](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484040&idx=2&sn=cdb2f26cd3bad7f9a726b654f2202715&chksm=f0a0c04cc7d7495ae3e8623c403139a3100fba33ec399e4f817dde470aacd0d8a81e6db6c67a#rd)**发布时间:** 2026年1月10日 10:37### 内容2022 年 11 月 30 日发布的GPT-3.5正式发布迅速加快了通用人工智能(AGI)的到来,虽然2026年人类还没进入到AGI时代,但是未来十年内有机会无限接近AGI。一以下是2026年人工智能会被使用而且有发展潜能的几个行业。**1.实时交互人形机器人**:具备类人外观和流畅动作,能在商场为顾客导购,与人类自然对话,提供个性化服务。**2.自动驾驶**:自动驾驶出租车在城市道路上安全行驶,车内乘客舒适乘坐;自动驾驶外卖车穿梭在街道,将餐品准时送达;自动驾驶快递车在小区内精准停靠,配送包裹。**3.全能 Agent**:类似 manus/claudecode 的全能 Agent,在办公场景中协助白领处理邮件、安排日程、撰写报告,还能进行代码编写和调试,提高工作效率。**4.Ai 医生**:在医院诊室里,AI 医生通过显示屏为患者进行远程诊断,分析患者的医学影像和症状数据,给出准确的诊断结果和治疗建议,旁边有人类医生辅助确认。**5.Ai科学家**:通过大语言模型发现新的化学元素、新的dna结构、新的物理公式、甚至新的自我进化方法6.Ai娱乐内容生成:Ai聊天/AI翻译/Ai音乐视频生成/Ai建模/ai游戏制作------------------------------------------------------------## 34. [DeekSeek-OCR安装部署](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484048&idx=1&sn=b145413c47e89c267920b5c70fed07e1&chksm=f0a0c054c7d749423aec6024cd1cb4e3f3570444c631083bfba7ad44afb36fa98cb0c0bb6051#rd)**发布时间:** 2026年1月11日 03:22### 内容克隆项目:``` bashgit clone https://github.com/deepseek-ai/DeepSeek-OCR.git```创建虚拟环境:``` apacheconda create -n deepseek-ocr python=3.12.9 -yconda activate deepseek-ocrcd cd DeepSeek-OCR/DeepSeek-OCR-master/DeepSeek-OCR-vllm```安装依赖:``` apachepip install PyMuPDF img2pdftdqm torch transformers vllm einops pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118pip install vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whlpip install -r requirements.txtpip install flash-attn==2.7.3 --no-build-isolation```使用:``` nginxpython run_dpsk_ocr_pdf.py```------------------------------------------------------------## 35. [免费网页版VSCODE](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484060&idx=4&sn=9e8ce7b7f341e947cb0b6055e57ef00f&chksm=f0a0c058c7d7494ebda08965f61ebb3e69e5f20fd8340154974be56c0bb2ce7639f6c311c04c#rd)**发布时间:** 2026年1月12日 14:52### 内容``` javascripthttps://vscode.dev/```------------------------------------------------------------## 36. [Github新Agent项目,潜力无限!](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484079&idx=1&sn=8f6729f532c2c094a97d3d4cfde58a97&chksm=f0a0c06bc7d7497de4887b3ef137c515fff167966664ce94fcf4afb7420b9c15ae37fd3ba3bf#rd)**发布时间:** 2026年1月15日 15:27### 内容OpenAgents 是一款采用 Apache-2.0 开源许可证、支持 Python 3.10+ 环境的 AI 智能体网络构建工具,核心定位是提供基础网络基础设施,让 AI 智能体能够跨协议(WebSocket、gRPC、HTTP 等)无缝连接、协作与发现,无论是通过 YAML 配置快速接入还是 Python 自定义开发智能体。**安装:**``` apache# 1. 创建并激活 Python 环境(示例使用 Conda)conda create -n openagents python=3.12conda activate openagents# 2. 安装/升级 OpenAgents(需版本 ≥0.7.0)pip install openagents```**设置自定义api:**``` makefile# Optional: Set the OpenAI base URLexport OPENAI_BASE_URL="your-base-url-here"# Required: Set the OpenAI API keyexport OPENAI_API_KEY="your-key-here"```**使用:**``` nginxopenagents network start```github地址:``` javascripthttps://github.com/openagents-org/openagents```官方文档:``` rubyhttps://openagents.org/docs/zh/getting-started/installation```更多agent项目:``` markdown## 框架类1. **AutoGen** - https://github.com/microsoft/autogen2. **CrewAI** - https://github.com/joaomdmoura/crewai3. **LangChain** - https://github.com/hwchase17/langchain4. **Semantic Kernel** - https://github.com/microsoft/semantic-kernel5. **AgentVerse** - https://github.com/openbmb/agentverse6. **Swarm** - https://github.com/openai/swarm7. **MetaGPT** - https://github.com/geekan/MetaGPT8. **LlamaIndex** - https://github.com/jerryjliu/llama_index## 软件开发类9. **OpenHands** - https://github.com/All-Hands-AI/OpenHands10. **Aider** - https://github.com/Aider-AI/aider11. **Devika** - https://github.com/stitionai/devika12. **GPT Pilot** - https://github.com/Pythagora-io/gpt-pilot13. **SWE Agent** - https://github.com/princeton-nlp/swe-agent14. **Cline** - https://github.com/cline/cline## 自动化与多智能体类15. **AgentScope** - https://github.com/modelscope/agentscope16. **Swarms Framework** - https://github.com/kyegomez/swarms17. **Portia AI** - https://github.com/portiaAI/portia-sdk-python18. **SuperAGI** - https://github.com/TransformerOptimus/SuperAGI19. **TaskWeaver** - https://github.com/microsoft/TaskWeaver20. **OpenAgents** - https://github.com/openagents-org/openagents```------------------------------------------------------------## 37. [这6万个AI SKILLS,让你成为地球最强Ai程序员](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484094&idx=1&sn=98da1fe504920bfac5579d627e8ef6e5&chksm=f0a0c07ac7d7496c54f90a7775cd43a8038af0c5d89017fab188ac32ac0f23cea2342e2f9b32#rd)**发布时间:** 2026年1月16日 16:00### 内容网址:**网址:**``` javascripthttps://skillsmp.com/```------------------------------------------------------------## 38. [这Agnet屌爆了!开源一天登顶github热榜!](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484160&idx=1&sn=b051fd9a5fabcc45cc667f9c1904479d&chksm=f0a0c1c4c7d748d28220436bd2570f23c2fea54ade10ea483f5d658fc695ec0f95be837c6161#rd)**发布时间:** 2026年1月22日 16:04### 内容MiroThinker是Github最近开源的[搜索+思考]项目,它能够基于用户提出的问题全网100多个网页中搜索相关实时内容,最后提供完整的总结。它的agent能力以及准确率已经超过chatgpt-agent成为全球最强搜索研究Agent。**免费使用地址:**``` javascripthttps://dr.miromind.ai/```**一键部署:**``` bashgit clone https://github.com/MiroMindAI/MiroThinkercd MiroThinkercd apps/miroflow-agentuv sync```**设置自定义apikey:**``` bashvim .env.example .env```配置你的apikey``` iniSUMMARY_LLM_BASE_URL="https://integrate.api.nvidia.com/v1"SUMMARY_LLM_MODEL_NAME=minimax/MiniMax-M2.1SUMMARY_LLM_API_KEY=你的密钥```**使用:**``` apacheuv run python main.py \ llm=MiniMax-M2.1 \ agent=single_agent_keep5```项目地址:``` javascripthttps://github.com/MiroMindAI/MiroThinker```安装使用教程(ai整理的):``` apachehttps://dr.miromind.ai/share/665889eb-f226-4449-baa2-6da2b688a1b3```------------------------------------------------------------## 39. [赶紧白嫖!12G内存+6核处理器,永久免费!(附部署4b模型使用教程)](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484181&idx=1&sn=ead21fb317944b27af5fc2508a4888e9&chksm=f0a0c1d1c7d748c7a93b141a3cf068001d45434746d83bdf9ad18526634176eb1a4c8ba4364e#rd)**发布时间:** 2026年1月23日 17:49### 内容HyperAI 超神经(hyper.ai)作为国际领先的人工智能及高性能计算社区,旨在通过提供行业资讯报道、数据集加速下载、在线教程演示、热门模型性能评测、前沿论文推荐、高价值成果解读、顶会日历集成等一系列服务,助力全球数据科学及⼈⼯智能⾏业的开发者及爱好者学习、理解、实践,与社区⼀起构建⼈⼯智能的未来。**如何免费获得12G内存+6核处理器服务器?**1.打开网站,用邮箱登录:``` javascripthttps://hyper.ai/cn```2.创建并打开免费容器:``` sql控制台——>模型训练-->创建新容器-->随便输入个容器名称 -->点击创建-->打开工作空间```3.安装ollama``` nginxcurl -fsSL https://ollama.com/install.sh | sh```4.运行ollama``` nginxollama serve```5.安装qwen3-vl:4b:(为什么是它?因为它多模态,太大的模型免费配置跑不动。)``` apacheollama run qwen3-vl:4b```6.安装/启动openwebui:``` apachepip install uvuvx --python 3.11 open-webui serve```7.使用``` 打开系统给你分配的地址就可以通过openwebui使用ollama了```我突然发现安装ollama之后没有安装任何模型情况下内存占用到12gb了,估计是bug,所以暂时可能无法正常使用,但是用来做别的还是不错的,毕竟免费,随便折腾或者安装opencode:``` nginxcurl -fsSL https://opencode.ai/install | bash```安装opencode后给ai发这篇文章帮你安装也可以------------------------------------------------------------## 40. [Ai一句话搭建部署完整的网站](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484181&idx=3&sn=bd1ef559bb21f36c782ae4b153bed56f&chksm=f0a0c1d1c7d748c7f8a193cfdc9cb416ad294dec8b6f16626f1550281d72b9d6ee85669892d2#rd)**发布时间:** 2026年1月23日 17:49### 内容网站:``` javascripthttps://build.cloudflare.dev/```只用三个字“贪吃蛇”创建的网站:``` apachehttps://build.cloudflare.dev/app/b34b9650-7500-406d-8619-babb73a6aaad```------------------------------------------------------------## 41. [人类语言转换成Ai提示词项目——Fabric](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484193&idx=1&sn=b589c828d1f98eb6d7421d71d4e85176&chksm=f0a0c1e5c7d748f38edb94ab39a0f89fc63dc8e93074906b8fe1658b07edc26364235971ceb1#rd)**发布时间:** 2026年1月25日 07:12### 内容Fabric 是一款开源的 AI 增强框架,核心功能包括丰富的预设模式库,Shell 自动补全、会话与上下文管理等,还支持链思维(CoT)、迭代草稿(CoD)等多种提示策略,可通过别名快速调用模式、将输出保存为 Markdown 文件,同时提供调试模式、沙箱隔离等实用功能,助力用户在命令行或 Web 界面中高效整合 AI 能力到各类工作流中。**1.第一次安装初始化:**``` nginxcurl -fsSL https://raw.githubusercontent.com/danielmiessler/fabric/main/scripts/installer/install.sh | bashfabric --setup```需要输入自己的ai密钥**2.简单使用:**``` cssfabric 下载b站字幕```输出:``` markdown下载B站字幕有很多种方法,你可以根据自己的需求和使用环境选择最方便的一种。以下是几种常用的方法:---### 1. 使用在线工具(最简单快捷)这是最推荐的方法,你不需要安装任何软件。**操作步骤:**1. **复制视频链接:** 打开B站视频页面,复制浏览器地址栏中的URL(例如:`https://www.bilibili.com/video/BVxxxxxx`)。2. **打开在线字幕下载网站:** 搜索或使用一些知名的在线B站工具(例如:`DownSub`、`BiliTools` 或其他专门的B站字幕提取工具)。3. **粘贴链接并解析:** 将复制的链接粘贴到工具的输入框中,点击“解析”或“提取”。4. **选择格式并下载:** 工具会显示可用的字幕文件(通常是 `SRT` 或 `ASS` 格式)。选择你需要的格式,点击下载即可。**优点:** 方便、快捷、无需安装。**缺点:** 依赖第三方网站的稳定性。---### 2. 使用浏览器扩展程序如果你经常需要下载字幕,安装一个浏览器扩展会非常方便。**推荐扩展(以Chrome/Edge为例):*** **[BiliBili Helper / 哔哩哔哩助手]**:这个扩展功能非常强大,通常包含视频下载、弹幕下载和字幕下载功能。* **[油猴脚本 (Tampermonkey)] + 相应脚本**:安装油猴扩展后,再安装一个“B站下载增强”或“视频下载”脚本,通常会在播放器下方增加下载按钮,其中就包括字幕下载选项。**操作步骤:**1. 在你的浏览器(Chrome/Edge/Firefox)的扩展商店中搜索并安装相应的扩展。2. 打开B站视频页面。3. 扩展程序会在视频播放器附近或工具栏中显示下载按钮。4. 点击下载按钮,选择“下载字幕”即可。**优点:** 集成在页面中,操作流畅。**缺点:** 需要安装扩展,可能影响浏览器性能。---### 3. 使用专业的桌面软件或命令行工具如果你是开发者或需要批量处理,可以使用这些方法。**推荐工具:*** **[You-Get / yt-dlp]**:这是非常强大的命令行下载工具,支持绝大多数视频网站(包括B站)。**操作步骤(以 `yt-dlp` 为例):**1. **安装工具:** 需要先安装 Python 和 `yt-dlp`。 ```bash pip install yt-dlp ```2. **运行下载命令:** ```bash yt-dlp --write-subs --skip-download [B站视频链接] ``` * `--write-subs`:表示下载字幕。 * `--skip-download`:表示跳过视频本体下载,只下载字幕。**优点:** 稳定、功能强大、支持批量下载。**缺点:** 需要一定的技术基础。---### 4. 手动提取(高级用户/紧急情况)B站的字幕文件实际上是以JSON格式存储在视频数据流中的。你可以通过查看网页源代码或网络请求来找到它们。**操作步骤:**1. 打开B站视频页面。2. 按 `F12` 打开浏览器的“开发者工具”。3. 切换到 **Network (网络)** 标签页。4. 刷新页面,在过滤器中输入 `subtitle`。5. 你会找到一个或多个请求,其响应内容包含字幕的JSON链接。6. 找到包含字幕内容(通常是 `data` 字段下的 `body` 数组)的JSON文件,复制其URL,单独打开即可看到字幕内容。7. 你需要将这个JSON内容手动转换成 `SRT` 或 `ASS` 格式。**优点:** 了解底层原理,不依赖第三方工具。**缺点:** 操作复杂,需要手动转换格式。---### 总结推荐对于大多数用户来说,**使用在线工具** 或 **安装浏览器扩展** 是最简单高效的解决方案。```**3.使用搜索功能:**``` apachefabric --search 3天内ai相关项目或者新突破```用gemini 密钥测试输出:``` markdown根据您提供的时间范围(最近三天,即 2026年1月22日至1月25日),AI 领域的主要项目进展和热点突破集中在**医疗健康AI**、**大模型研发动态**以及**AI 硬件与伦理**方面。以下是近三天内AI相关的几个重要进展:### 1. 医疗健康AI(AI医疗)成为焦点AI医疗板块在资本市场和技术应用上均有显著动作:* **科技巨头发布医疗垂直模型:** 国际科技巨头纷纷推出针对医疗健康领域的大模型和工具,加速AI在临床应用的落地。例如: * **OpenAI** 正式推出了 **ChatGPT 医疗保健版(ChatGPT Healthcare)**。 * **Anthropic** 推出了类似功能的 **Claude for Healthcare**。 * **Google** 发布了 **MedGemma 1.5**,旨在帮助开发者构建能够分析医疗文本和图像的应用。* **应用场景深化:** AI医疗的应用正从辅助诊断向全流程管理深度渗透,例如 AI 辅助药物研发(AI制药)正在掀起一场新药研发的“效率革命”。### 2. 大模型研发与竞争动态* **DeepSeek 新模型曝光:** 1月24日有消息称,在 DeepSeek 官方 GitHub 更新的代码中,多次提到了此前未公开的“**Model 1**”大模型标识符。这表明 DeepSeek 的新一代模型可能已接近训练完成或推理部署阶段,预示着新一轮大模型竞争的临近。### 3. AI 硬件与产业落地* **AI 芯片企业 IPO 进展:** 国内“国产GPU四小龙”之一的**燧原科技**,其科创板 IPO 申请于 1月22日 获得上海证券交易所受理。这标志着中国云端AI芯片领域的重要企业向资本市场迈出了关键一步,计划募集资金用于五代、六代AI芯片的研发和产业化项目。* **人形机器人出货量:** 宇树科技(Unitree)发布公告,其 2025年全年纯人形机器人实际出货量超过 5500 台。### 4. AI 伦理与安全热议* **AI 安全性引发公开辩论:** 1月21日(新闻于24日报道),特斯拉 CEO 埃隆·马斯克公开炮轰 **ChatGPT**,称其已被证实与多起死亡事件有关,包括因互动导致的自杀。OpenAI CEO 奥尔特曼对此进行了回应,承认运营一个拥有近十亿用户的AI平台的挑战和悲剧性,并将此与自动驾驶事故进行了类比。这场争论将人工智能的**安全伦理、致幻风险**和**科技巨头的社会责任**等话题推向了舆论前沿。## Sources- [stcn.com](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGMRdZGp0KBGJlFdsc336S_ALgq0aZAXNClEJJjYvxzEHKEktuL5KAk5h3jxwMge6g5HaydXHXpKaKz5FifYmGKgmhmA2tZXWZ_dWRa7LjwmWjnLzjVH2a88R0ZIGB0Wi1QCHYq4reLkt3sXQ==)- [eastmoney.com](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGtgC_Tkwfm7oVeBGz7rm9cmedW_ffLrCaqn1_KKQJJYms9vsegKfsaSoRdGOynqUGPuYbr0iCyNxAdlU7_S1vC3N9qn06dju_vgXBfz5xb-Pt8cLgQw15b3WF-SkFsqSiy0qGRPGaEbH1pDTu_AA==)- [caijingmobile.com](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQH0k98KxSnG6w-MOCoVxUNZVq-2_d9bCScPC-1rUUGBNdXm5v17Vcx9iT4cBxw9OEbJsKRX2kW3Dktjc0g60g6eFkGM1z-RAEgMoD0gGRLYr0av_YGpgiDkzDqcaaIMSZI026HEeQadmhAHsUb22k_yGOVnT9NxzNHZZzvm)```------------------------------------------------------------## 42. [给你一亿篇论文,慢慢研究吧](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484193&idx=3&sn=c5385592fc7141d61546d3fc6d4929f1&chksm=f0a0c1e5c7d748f3d222e0ede5dabf68bc11434127f75f706fe20ca2dbaff18fc104cb28e106#rd)**发布时间:** 2026年1月25日 07:12### 内容Aella Science Dataset Explorer 是由 Inference.net 与 LAION 联合开发的开源科学论文可视化探索平台,旨在解决海量学术文献检索效率低、领域趋势难洞察的痛点,通过机器学习与交互式可视化技术,让上亿篇论文的探索变得直观高效,目前在 GitHub 上拥有较高关注度,是科研人员梳理文献、洞察领域动态的实用工具。论文地址:``` javascripthttps://laion-data-assets.inference.net/db.sqlite```**克隆项目:**``` bashgit clone https://github.com/context-labs/aella-data-explorer.git cd aella-data-explorer```**安装依赖:**``` nginxcurl -fsSL https://bun.sh/install | bashpip install uvnpm install -g @go-task/cli```**下载数据库:**``` nginxtask db:setup```**部署:**``` nginxtask backend:dev```**使用:**``` javascripthttp://localhost:5173```**项目地址:**``` javascripthttps://github.dopdop.top/context-labs/aella-data-explorer```------------------------------------------------------------## 43. [KimiCode+Kimi2.5(英伟达)终极白嫖方案](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484235&idx=1&sn=a1db0e165b1d7d375e8088bf5ceeb26a&chksm=f0a0c18fc7d748996a58133ae26294af6526b4f46731173a2af8b9d432fb853456ffef75eff0#rd)**发布时间:** 2026年1月29日 15:51### 内容KimiCode是Kimi推出的**AI编程工具**,可在终端(CLI)、VSCode、Cursor、JetBrains和Zed等主流编辑器中直接运行,基于KimiK2.5多模态大模型支持图片和视频输入辅助编程。工具提供端到端代码能力,涵盖构建、调试、重构、测试及脚本编写,下面提供详细安装免费使用教程。**1.获取NIM密钥:**打开英伟达build获取密钥:``` javascripthttps://build.nvidia.com/moonshotai/kimi-k2.5```**2.安装Kimi:**``` nginxpip install uvuv tool install kimi-cli```**3.环境变量设置:**``` javascriptexport KIMI_BASE_URL="https://integrate.api.nvidia.com/v1"export KIMI_MODEL_NAME="moonshotai/kimi-k2.5"export KIMI_MODEL_MAX_CONTEXT_SIZE="262144"export KIMI_API_KEY="你的密钥"```**4.使用:**输入kimi就可以使用:``` kimi```当前用起来比较慢,可能是英伟达算力不够原因。------------------------------------------------------------## 44. [Github最强Ai项目都在这里——Awesome-llm-apps](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484258&idx=1&sn=c42679565a88066a2c07cb034c92219f&chksm=f0a0c1a6c7d748b06e998ee88c660b3c0964a0907b736c2072521937e63bf5ea0bf7edcbba99#rd)**发布时间:** 2026年1月31日 06:05### 内容Awesome-llm-apps是一个精心策划的精彩大型语言模型应用合集,采用RAG、AI代理、多代理团队、MCP、语音代理等构建。该仓库包含使用 OpenAI、Anthropic、Google、xAI 以及开源模型如 Qwen 或 Llama 的大型语言模型应用,您可以在本地电脑上运行。**项目地址:**``` bashhttps://github.com/Shubhamsaboo/awesome-llm-apps```------------------------------------------------------------## 45. [11.8k Star !OpenClaw低配平替](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484262&idx=1&sn=23c7152d4347bf1cfb9bac4dfe39d06c&chksm=f0a0c1a2c7d748b4a7d2b9a8f7d5522800d365c95a14968a7a0c0efe7ef97455b1903e8969c2#rd)**发布时间:** 2026年2月1日 05:54### 内容Eigent 是开源的 Cowork 桌面应用,赋能您构建、管理和部署定制的 AI 劳动力,将最复杂的工作流程转化为自动化任务。作为领先的开源 Cowork 产品,Eigent 集开源协作与 AI 自动化的精华于一体。**特性:**``` ✅ 零设置——无需技术配置✅ 多代理协调——处理复杂的多代理工作流程✅ 企业功能 - 单点登录/访问控制✅ 本地部署人员✅ 开源✅ 自定义模型支持✅ MCP集成```一键安装使用:``` bashgit clone https://github.com/eigent-ai/eigent.gitcd eigentnpm installnpm run dev```或者:``` javascripthttps://www.eigent.ai/get-started```直接下载桌面版体验------------------------------------------------------------## 46. [地表最强前端提示词工程师——Agentation](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484282&idx=1&sn=db7442affda9f1ed0a771a3521d09934&chksm=f0a0c1bec7d748a86ee94a443f90cd88834e9f3193bf96fc539ff106f102f521d9491d0f8326#rd)**发布时间:** 2026年2月1日 16:00### 内容**Agentation**(agent + annotation)是一种开发工具,允许你在网页上注释元素,并为AI编码代理生成结构化反馈。点击元素,选择文本,添加笔记,然后把输出粘贴到Claude Code、Cursor或任何能访问你代码库的代理中。它完全不依赖代理,所以 Markdown 输出可以配合任何 AI 工具使用。除了React之外,没有任何依赖。**用途**:当代理明确知道你指的是哪个元素时,他们可以更快地找到和修复代码。代理捕获类名称、选择器和位置,以便代理定位对应的源文件。**安装:**``` nginxnpm install agentation```**使用:**``` javascriptimport { Agentation } from "agentation";function App() { return ( <> <YourApp /> {process.env.NODE_ENV === "development" && <Agentation />} </> );}```复制到的提示词:``` makefile## Page Feedback: /install**Viewport:** 1872×956### 1. code block**Location:** .article > section > div > .code-block**Feedback:** 背景颜色改成黑色```------------------------------------------------------------## 47. [1code来了,声称吊打Z-Code?](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484282&idx=3&sn=d8e283dbbdf6aa014d9a290ae182b50b&chksm=f0a0c1bec7d748a83e3157afa9932d45070860a04ed5eb94af1c8c0836b191208f7a49c7d509#rd)**发布时间:** 2026年2月1日 16:00### 内容1code是一个功能更全的Claude Code 界面,能够提供更好的Claude Code 使用体验。## 1Code 与 Claude Code 的比较特色1CodeClaude Code**可视化用户界面**✅ 类似光标的桌面应用✅**Git 工作树隔离**✅ 每个聊天都运行在独立的工作树中✅**背景处决**✅ 并行运行多个代理✅**内置 Git 客户端**✅ 可视化预留、提交、分支❌ 仅限CLI git命令**集成终端**✅❌**计划模式**✅✅**MCP 支持**✅✅**记忆(CLAUDE.md)**✅✅**技能与斩击指令**✅✅**定制分代理**✅✅**订阅与API密钥支持**✅✅**自定义模型与提供者(BYOK)**✅✅**语音输入**✅ 保持对话听写❌**检查点设置**🚧 试用版✅**工具批准**📋 积压✅**钩子**❌✅**安装使用:**``` nginx# Prerequisites: Bun, Python, Xcode Command Line Tools (macOS)bun installbun run claude:download # Download Claude binary (required!)bun run buildbun run package:mac # or package:win, package:linux```项目地址:``` apachehttps://github.com/21st-dev/1code```------------------------------------------------------------## 48. [最新AI大语言模型排行榜(2026/2/4)](http://mp.weixin.qq.com/s?__biz=MzYzNDI2MzQ2Nw==&mid=2247484301&idx=1&sn=80ca3b12c635b632a1968211a88ec1a0&chksm=f0a0c149c7d7485fec6f4ac7b13ed47466552d9f5f05a422be9f9445c5e2f0ffd6439d149b83#rd)**发布时间:** 2026年2月3日 16:59### 内容**全球排行榜:**模型名称机构全局平均推理编程代理编程数学数据分析语言指令遵循Claude 4.5 Opus Thinking High EffortAnthropic75.9680.0979.6563.3390.3974.4481.2662.55GPT-5.2 HighOpenAI74.8483.2176.0751.6793.1778.1679.8161.77GPT-5.2 CodexOpenAI74.3077.7183.6251.6788.7778.2073.6866.45GPT-5.1 Codex Max HighOpenAI73.9883.6580.6853.3383.2270.1276.4870.38Gemini 3 Pro Preview HighGoogle73.3977.4274.6055.0081.8474.3984.6265.85Gemini 3 Flash Preview HighGoogle72.4074.5573.9040.0084.1774.7784.5674.86GPT-5.1 HighOpenAI72.0478.7972.4953.3386.9069.6179.2663.90GPT-5 ProOpenAI70.4881.6972.1151.6786.1757.0480.6963.96Kimi K2.5 ThinkingMoonshot AI69.0775.9677.8648.3384.8761.3677.6757.41GPT-5.1 CodexOpenAI68.6181.9871.7853.3379.5860.7569.4863.39Claude Sonnet 4.5 ThinkingAnthropic68.1977.5980.3653.3379.3156.9776.4553.35GPT-5 Mini HighOpenAI65.9168.3268.2046.6782.2055.2075.5265.27DeepSeek V3.2 ThinkingDeepSeek62.2077.1764.6240.0085.0350.0070.4148.19Grok 4xAI62.0279.1373.1330.0083.0263.3876.3929.07Claude 4.1 Opus ThinkingAnthropic61.8172.3374.6648.3373.1948.9872.7642.40Kimi K2 ThinkingMoonshot AI61.5963.4967.4438.3381.1052.2966.4562.03Claude Haiku 4.5 ThinkingAnthropic61.3261.6872.8141.6777.5359.3066.4549.78Claude 4 Sonnet ThinkingAnthropic61.2769.0177.4840.0070.5054.6372.9144.34GPT-5.1 Codex MiniOpenAI60.3864.7169.9340.0076.2649.7063.0159.02Grok 4.1 FastxAI59.9980.2069.6131.6783.7252.2474.3328.20Claude 4.5 Opus Medium EffortAnthropic59.1053.2178.5163.3366.3245.5478.6628.11DeepSeek V3.2 Exp ThinkingDeepSeek58.9064.3770.0631.6782.4051.5071.0641.27Gemini 2.5 Pro (Max Thinking)Google58.3370.8175.6933.3368.3251.6275.5033.07GLM 4.7Z.AI58.0959.7373.1341.6776.0255.1765.2335.66GLM 4.6Z.AI55.1962.0671.0235.0081.1351.9558.9926.19Claude 4.1 OpusAnthropic54.4540.8976.0753.3362.8345.3876.7525.92Claude Sonnet 4.5Anthropic53.6942.2976.0748.3362.6247.0076.0023.52Gemini 2.5 Flash (Max Thinking) (2025-09-25)Google53.0951.4567.5023.3375.3560.9865.3427.68Qwen 3 235B A22B Thinking 2507Alibaba52.9759.4068.976.6773.3952.1869.5240.64DeepSeek V3.2DeepSeek51.8444.2575.6946.6763.9545.0364.2423.06Claude 4 SonnetAnthropic50.9839.6780.7438.3360.3644.0771.0122.68Qwen 3 Next 80B A3B ThinkingAlibaba50.4158.1660.668.3374.2653.5856.3141.54DeepSeek V3.2 ExpDeepSeek49.8545.5073.1936.6764.3844.2665.6019.33GPT-5.2 No ThinkingOpenAI48.9142.8076.4540.0058.2547.6849.9727.20Qwen 3 235B A22B Instruct 2507Alibaba48.8458.4369.6113.3368.0344.7266.0721.72GPT-5 Nano HighOpenAI48.6240.2962.3923.3368.4143.4146.8455.70Qwen 3 Next 80B A3B InstructAlibaba48.3554.7568.2010.0070.1849.7866.3419.19Kimi K2 InstructMoonshot AI48.1042.2374.2831.6758.1543.3466.6920.36Gemini 2.5 Flash (Max Thinking) (2025-06-05)Google47.7444.6466.0316.6768.7547.3162.2728.50GPT OSS 120bOpenAI46.0939.2160.2116.6768.8738.8048.5950.29Claude Haiku 4.5Anthropic45.3333.9472.1733.3357.9745.1357.0517.75Grok Code FastxAI45.1342.3064.4433.3356.0148.9948.5622.27Qwen 3 32BAlibaba43.5648.2566.033.3367.4446.5455.5417.77GPT-5.1 No ThinkingOpenAI42.6526.8177.4828.3344.5144.0753.8423.50Gemini 2.5 Flash Lite (Max Thinking) (2025-06-17)Google42.5643.3466.415.0061.0447.0451.9823.08Gemini 2.5 Flash Lite (Max Thinking) (2025-09-25)Google42.3936.1665.391.6764.9047.8852.6028.11Devstral 2Mistral41.2427.7466.7943.3352.5239.1445.6713.50GLM 4.6VZ.AI40.0737.2264.243.3362.5046.4149.7417.06Qwen 3 30B A3BAlibaba39.0136.6848.881.6765.3544.9254.4721.11Grok 4.1 Fast (Non-Reasoning)xAI33.4523.3554.2610.0038.9240.6150.0116.98Trinity Large PreviewArcee32.7420.6165.653.3344.9340.3342.1512.19**开源排行榜:**模型名称机构全局平均推理编程代理编程数学数据分析语言指令遵循Kimi K2.5 ThinkingMoonshot AI69.0775.9677.8648.3384.8761.3677.6757.41DeepSeek V3.2 ThinkingDeepSeek62.2077.1764.6240.0085.0350.0070.4148.19Kimi K2 ThinkingMoonshot AI61.5963.4967.4438.3381.1052.2966.4562.03DeepSeek V3.2 Exp ThinkingDeepSeek58.9064.3770.0631.6782.4051.5071.0641.27GLM 4.7Z.AI58.0959.7373.1341.6776.0255.1765.2335.66GLM 4.6Z.AI55.1962.0671.0235.0081.1351.9558.9926.19Qwen 3 235B A22B Thinking 2507Alibaba52.9759.4068.976.6773.3952.1869.5240.64DeepSeek V3.2DeepSeek51.8444.2575.6946.6763.9545.0364.2423.06Qwen 3 Next 80B A3B ThinkingAlibaba50.4158.1660.668.3374.2653.5856.3141.54DeepSeek V3.2 ExpDeepSeek49.8545.5073.1936.6764.3844.2665.6019.33Qwen 3 235B A22B Instruct 2507Alibaba48.8458.4369.6113.3368.0344.7266.0721.72Qwen 3 Next 80B A3B InstructAlibaba48.3554.7568.2010.0070.1849.7866.3419.19GPT OSS 120bOpenAI46.0939.2160.2116.6768.8738.8048.5950.29Qwen 3 32BAlibaba43.5648.2566.033.3367.4446.5455.5417.77Devstral 2Mistral41.2427.7466.7943.3352.5239.1445.6713.50GLM 4.6VZ.AI40.0737.2264.243.3362.5046.4149.7417.06Qwen 3 30B A3BAlibaba39.0136.6848.881.6765.3544.9254.4721.11Trinity Large PreviewArcee32.7420.6165.653.3344.9340.3342.1512.19来源:``` perlhttps://livebench.ai/#/https://liveb.space.z.ai/```------------------------------------------------------------