<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>AI on ByteJog</title>
    <link>https://bytejog.com/tags/ai/</link>
    <description>Recent content in AI on ByteJog</description>
    <image>
      <title>ByteJog</title>
      <url>https://bytejog.com/assets/bytejog32.png</url>
      <link>https://bytejog.com/assets/bytejog32.png</link>
    </image>
    <generator>Hugo -- 0.152.2</generator>
    <language>zh</language>
    <lastBuildDate>Sun, 23 Nov 2025 10:46:22 +0800</lastBuildDate>
    <atom:link href="https://bytejog.com/tags/ai/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>使用Gemini根据sing-box日志生成fail2ban拦截配置文件</title>
      <link>https://bytejog.com/posts/linux/fail2ban_custom/</link>
      <pubDate>Sun, 23 Nov 2025 10:46:22 +0800</pubDate>
      <guid>https://bytejog.com/posts/linux/fail2ban_custom/</guid>
      <description>&lt;p&gt;最近无缘故的看了一下sing-box服务端后台日志，发现很多尝试连接的错误日志，虽然都是失败的，但是还是看着揪心，于是把错误日志信息都输出到“sing-box_error.log&amp;quot;文件，接下来就请Gemini搬我完善拦截规则了。&lt;/p&gt;
&lt;p&gt;Prompt：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;附件sing-box_error.log是sing-box日志中尝试访问anytls、shadowsocks和Hysteria2服务尝试访问者报错日子，使用fail2ban增加规则可以识别日志，尝试超过5次后加入屏蔽名单
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;于是就有了下文，基本无修改就可以识别进行正常拦截了。&lt;/p&gt;
&lt;h3 id=&#34;1-更新过滤规则-etcfail2banfilterdsing-boxconf&#34;&gt;1. 更新过滤规则 (&lt;code&gt;/etc/fail2ban/filter.d/sing-box.conf&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;您的日志中包含大量 Shadowsocks 的认证失败、头部错误以及 AnyTLS 的握手错误。针对 Hysteria2，日志中大部分错误似乎没有直接附带源 IP（如 &lt;code&gt;handle stream request&lt;/code&gt;），但 AnyTLS 和 Shadowsocks 的记录非常清晰。&lt;/p&gt;
&lt;p&gt;请使用以下内容覆盖或更新您的 filter 文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[Definition]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 匹配 Shadowsocks 和 AnyTLS 的恶意探测/错误&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# &amp;lt;HOST&amp;gt; 是 Fail2Ban 用于提取 IP 的变量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;failregex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;^.*inbound/shadowsocks\[.*\]: process (connection|packet) from &amp;lt;HOST&amp;gt;:\d+: .*cipher: message authentication failed.*$
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;            ^.*inbound/shadowsocks\[.*\]: process (connection|packet) from &amp;lt;HOST&amp;gt;:\d+: .*bad header.*$
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;            ^.*inbound/shadowsocks\[.*\]: process (connection|packet) from &amp;lt;HOST&amp;gt;:\d+: .*salt not unique.*$
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;            ^.*inbound/shadowsocks\[.*\]: process (connection|packet) from &amp;lt;HOST&amp;gt;:\d+: .*packet too short.*$
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;            ^.*inbound/anytls\[.*\]: process connection from &amp;lt;HOST&amp;gt;:\d+: .*unknown user password.*$
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;            ^.*inbound/anytls\[.*\]: process connection from &amp;lt;HOST&amp;gt;:\d+: .*fallback disabled.*$
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;            ^.*inbound/anytls\[.*\]: process connection from &amp;lt;HOST&amp;gt;:\d+: .*TLS handshake:.*$&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 忽略规则 (ignoreregex)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 如果您想通过正则忽略某些特定情况（例如忽略本地 IP 127.0.0.1 的错误），可以使用如下格式：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ignoreregex = ^.*process connection from 127\.0\.0\.1.*$&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 但通常建议在 jail.local 中使用 ignoreip 来处理白名单。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;ignoreregex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;2-配置-jail-适配-debian--ufw-etcfail2banjaillocal&#34;&gt;2. 配置 Jail 适配 Debian + UFW (&lt;code&gt;/etc/fail2ban/jail.local&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;在 Debian 系统中使用 &lt;code&gt;ufw&lt;/code&gt; 作为防火墙时，需要在 &lt;code&gt;jail.local&lt;/code&gt; 中明确指定 &lt;code&gt;banaction&lt;/code&gt; 为 &lt;code&gt;ufw&lt;/code&gt;。同时，我已添加了您要求的 &lt;code&gt;ignoreip&lt;/code&gt; 设置位置。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用免费的 Gemini 2.5 Pro 实现 Deep Research</title>
      <link>https://bytejog.com/posts/ai/deep-research/</link>
      <pubDate>Sun, 06 Apr 2025 14:50:54 +0800</pubDate>
      <guid>https://bytejog.com/posts/ai/deep-research/</guid>
      <description>&lt;p&gt;推荐一个开源项目&lt;a href=&#34;https://github.com/u14app/deep-research&#34;&gt;u14app/deep-research&lt;/a&gt;，基于Google的Gemini模型实现Deep Research，最近Gemini 2.5 Pro很能打，一推出来就上榜首了。&lt;/p&gt;
&lt;p&gt; ### 功能&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;快速深度研究&lt;/strong&gt;：约 2 分钟即可生成综合研究报告，显著加快您的研究进程。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多平台支持&lt;/strong&gt;：支持快速部署到 Vercel、Cloudflare 和其他平台。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;由 Google Gemini 提供支持&lt;/strong&gt;：利用先进的 Google Gemini 模型进行准确而有见地的分析。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;思维与网络模型：&lt;/strong&gt; 采用先进的“思维”和“网络”模型，兼顾深度与速度，快速获得高质量结果。支持切换研究模型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Canvas&lt;/strong&gt; 支持研究内容的编辑，提供所见即所得和 Markdown 两种编辑模式，可调整阅读级别、文章长度以及全文翻译。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;研究历史：&lt;/strong&gt; 支持保存研究历史，可以随时回顾以前的研究成果并再次进行深入研究。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地和服务器 API 支持&lt;/strong&gt;：提供灵活的本地和服务器端 API 调用选项，以满足您的需求。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注重隐私&lt;/strong&gt;：您的数据保持私密和安全，因为所有数据都本地存储在您的浏览器中。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多语言支持&lt;/strong&gt;：英语、简体中文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;采用现代技术构建&lt;/strong&gt;：使用 Next.js 15 和 Shadcn UI 开发，确保现代、高性能且视觉上吸引人的用户体验。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIT 许可&lt;/strong&gt;：开源且可根据 MIT 许可免费供个人和商业使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;此项目需要使用 Gemini API key，您可以在 &lt;a href=&#34;https://aistudio.google.com/&#34;&gt;Google AI Studio&lt;/a&gt; 上免费申请。如果需要 API 代理地址，可以参考之前的帖子&lt;a href=&#34;https://bytejog.com/posts/ai/google_gemini/&#34;&gt;如何优雅流畅的使用Google Gemini 1.5 pro服务&lt;/a&gt;，也可以找到一些公益的 Gemini API 代理，或者使用 Cloudflare AI Gateway&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;项目支持的部署方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一键部署项目，可以选择部署到 Vercel 或者 Cloudflare&lt;/li&gt;
&lt;li&gt;docker部署&lt;/li&gt;
&lt;li&gt;静态部署&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;非常值得推荐&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;在最新的 Gemini 2.5 Pro 的加持下，研究结果大幅提升，如果说之前是大学生水平，那么在 Gemini 2.5 Pro 的加持下，甚至可以达到博士生的论文水平。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何体验 Chrome 内置 Gemini Nano 大模型？</title>
      <link>https://bytejog.com/posts/ai/gemini_nano/</link>
      <pubDate>Sun, 23 Jun 2024 21:10:28 +0800</pubDate>
      <guid>https://bytejog.com/posts/ai/gemini_nano/</guid>
      <description>&lt;p&gt;最近谷歌在Canary 版本的 Chrome 浏览器里面开放了本地大模型的权限，用户可以访问（&lt;a href=&#34;https://www.chromium.org/getting-involved/dev-channel/&#34;&gt;https://www.chromium.org/getting-involved/dev-channel/&lt;/a&gt;），下载 Canary 浏览器。 用法如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;打开 chrome://flags/&lt;br&gt;
将 &lt;code&gt;Prompt API for Gemini Nano&lt;/code&gt; 设置为 &lt;code&gt;Enable&lt;/code&gt;&lt;br&gt;
将 &lt;code&gt;Enables optimization guide on device&lt;/code&gt; 设置为 &lt;code&gt;Enable BypassPerfR&lt;/code&gt;&lt;br&gt;
重启 Chrome 浏览器&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开 chrome://components/&lt;br&gt;
检查是否出现 &lt;code&gt;Optimization Guide On Device Model&lt;/code&gt; ，我出现这个选项等了有几天，没有找到好的方法。如果有这个选项，可以检查模型是否成功下载，点击 &lt;code&gt;Check for update&lt;/code&gt;   ，我目前的版本是&lt;code&gt;Version: 2024.6.5.2205&lt;/code&gt; 。&lt;br&gt;
Gemini Nano的模型文件存放在&lt;code&gt;~/Library/Application Support/Google/Chrome Canary/OptGuideOnDeviceModel/2024.6.5.2205&lt;/code&gt; 目录下，&lt;code&gt;weights.bin&lt;/code&gt; 文件大概1.78GB。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;测试AI效果&lt;br&gt;
打开控制台，输入 &lt;code&gt;window.ai &lt;/code&gt;测试是否能有返回AI对象，也可以用下面的代码测试：&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canCreate&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ai&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;canCreateGenericSession&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;canCreate&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;no&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;session&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ai&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;createTextSession&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stream&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;session&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;promptStreaming&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;写一个短篇科幻小说！&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;chunk&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;chunk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;session&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;destroy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Gemini Nano not ready yet.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canCreate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;刚刚返回的结果：&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]50天学习人工智能/机器学习：从入门到精通（适用于非计算机科学背景人员）</title>
      <link>https://bytejog.com/posts/ai/50_days_to_ai_ml/</link>
      <pubDate>Wed, 05 Jun 2024 20:12:02 +0800</pubDate>
      <guid>https://bytejog.com/posts/ai/50_days_to_ai_ml/</guid>
      <description>&lt;h3 id=&#34;简介&#34;&gt;简介&lt;/h3&gt;
&lt;p&gt;该网页为非计算机专业背景的人提供了一个学习人工智能/机器学习的 50 天路线图，强调解决问题的思维方式、学习和认证比技术背景或学位更重要。&lt;/p&gt;
&lt;h3 id=&#34;摘要&#34;&gt;摘要&lt;/h3&gt;
&lt;p&gt;题为 &amp;ldquo;50 天学习人工智能/机器学习 ：从零到英雄（非计算机专业背景）&amp;ldquo;的内容旨在帮助对人工智能/机器学习感兴趣的非计算机专业背景的个人，提供一个学习必要技能的 50 天路线图。该路线图假定读者对高中数学、线性代数、矩阵以及一些统计学和概率论有基本的了解。它包括 Python、Numpy、Pandas、Matplotlib、TensorFlow 和其他工具的学习资源，以及完成 Andrew Ng 的机器学习专业课程。路线图强调，要想在人工智能/机器学习领域取得成功，只需具备解决问题的思维方式、学习意愿和一些证书。&lt;/p&gt;
&lt;h3 id=&#34;建议&#34;&gt;建议&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;作者认为，非计算机专业背景的人也可以通过正确的心态和资源学习人工智能/机器学习。&lt;/li&gt;
&lt;li&gt;作者强调了解决问题的心态和学习意愿的重要性，而不是技术背景或学位。&lt;/li&gt;
&lt;li&gt;作者建议，对高中数学、线性代数、矩阵以及一些统计学和概率论有基本了解，就足以开始学习人工智能/机器学习。&lt;/li&gt;
&lt;li&gt;作者建议完成 Andrew Ng 的机器学习专业课程，作为 50 天路线图的一部分。&lt;/li&gt;
&lt;li&gt;作为路线图的一部分，作者提供了学习 Python、Numpy、Pandas、Matplotlib、TensorFlow 和其他工具的资源。&lt;/li&gt;
&lt;li&gt;作者鼓励个人练习编码和完成实践练习，以巩固所学知识。&lt;/li&gt;
&lt;li&gt;作者承认，学习人工智能/机器学习 有时会让人感到沮丧，并建议在必要时休息一下。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;对人工智能感兴趣？非计算机专业背景？看起来像珠穆朗玛峰？不知道从哪里开始？或者要怎样才能达到目标？我能感受到你的心情。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你想知道你能不能做到，以及如何做到，请稍等片刻。你不会后悔的那么，让我们进入正题。&lt;/p&gt;
&lt;h3 id=&#34;学习的基础需要什么&#34;&gt;学习的基础需要什么？&lt;/h3&gt;
&lt;p&gt;你只需要一点这方面的能力、解决问题的心态、学习的意愿和一些证书。请放心，你绝对不需要任何技术背景，也不需要 计算机/人工智能 学位。&lt;/p&gt;
&lt;p&gt;这个备忘录可能会让你轻松一些。你只需输入 import keras，keras 就会为你完成所有复杂的工作。你只需知道发生了什么。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://bytejog.com/assets/post/1v_DvXYYWBeQhkRN_HzaXuQ.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Credits: &lt;a href=&#34;https://m.facebook.com/groups/1638417209555402/&#34;&gt;https://m.facebook.com/groups/1638417209555402/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这是我 50 天内学习机器学习的“试错”之旅，经过提炼整理，更加有条理。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;假设你在高中时认真上过数学课，对线性代数、矩阵、统计学和概率论略知一二，那么我们就可以进入第 1 天，马上开始真正的学习。&lt;/p&gt;
&lt;h3 id=&#34;第1天&#34;&gt;第1天&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;机器学习专项课程，作者：Andrew Ng&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Deeplearning.ai YouTube 频道和 Coursera 提供 5 小时的课程。&lt;/p&gt;
&lt;h3 id=&#34;第-2-3-天&#34;&gt;第 2-3 天&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Python：基本了解和练习。了解从 PRINT 到 FUNCTIONS 和 CLASSES 的所有内容。&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何优雅流畅的使用ChatGPT gpt-4o服务</title>
      <link>https://bytejog.com/posts/ai/gpt-4o/</link>
      <pubDate>Sat, 18 May 2024 20:22:07 +0800</pubDate>
      <guid>https://bytejog.com/posts/ai/gpt-4o/</guid>
      <description>&lt;h2 id=&#34;获取openai-api-key&#34;&gt;获取OpenAI API KEY&lt;/h2&gt;
&lt;p&gt;由于OpenAI官网的是不支持中国大陆的信用卡支付，这个步骤是比较复杂的。&lt;br&gt;
目前是通过注册OCBC的借记卡实现支付，正常使用一个月了。OCBC银行卡办理网上有不少教程，不过关于推荐码不是一定要填，你不填也是可以注册成功，填了推荐码入金1000SGD之后推荐的人有奖励，个人返现不受推荐码限制。注册过程到拿到实体卡，到完全激活响应2周时间，入金通过工行转账2个小时就到账了。之后就可以付费了，选择美国免税区不用缴税。（题外话，原来办理OCBC是想着注册甲骨文云，实践下来不行）&lt;/p&gt;
&lt;p&gt;另外还有一种简单方式 ，用中转服务，有一些汇率的手续费。&lt;br&gt;
地址：https://api.oaipro.com/&lt;br&gt;
充值就可以用，用这个中转，不需要配置nginx，直接跳到one api配置。&lt;/p&gt;
&lt;h2 id=&#34;代理openai请求&#34;&gt;代理OpenAI请求&lt;/h2&gt;
&lt;h3 id=&#34;nginx代理&#34;&gt;Nginx代理&lt;/h3&gt;
&lt;p&gt;通过Nginx是把代理放到个人小机上面，这样要求你的小鸡能够正常访问OpenAI。&lt;/p&gt;
&lt;p&gt;这种形式的好处就是以固定IP的形式访问服务。&lt;/p&gt;
&lt;p&gt;在服务器运行测试命令，替换 &lt;code&gt;OPENAI_API_KEY&lt;/code&gt; 为你的API key，有回复可以进行下一步&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl https://api.openai.com/v1/chat/completions &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization: Bearer &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;model&amp;#34;: &amp;#34;gpt-3.5-turbo-0125&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;response_format&amp;#34;: { &amp;#34;type&amp;#34;: &amp;#34;json_object&amp;#34; },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;messages&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;role&amp;#34;: &amp;#34;system&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;content&amp;#34;: &amp;#34;You are a helpful assistant designed to output JSON.&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;content&amp;#34;: &amp;#34;Who won the world series in 2020?&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nginx配置server部分如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何优雅流畅的使用Google Gemini 1.5 pro服务</title>
      <link>https://bytejog.com/posts/ai/google_gemini/</link>
      <pubDate>Sun, 14 Apr 2024 20:22:07 +0800</pubDate>
      <guid>https://bytejog.com/posts/ai/google_gemini/</guid>
      <description>&lt;h2 id=&#34;获取gemini-api-key&#34;&gt;获取Gemini API KEY&lt;/h2&gt;
&lt;p&gt;准备3-4个谷歌账号，因为5月2日之后谷歌就开始收费，Gemini 1.5免费1分钟2次请求，一天50次，多个账号均衡一下请求，满足日常使用。&lt;br&gt;
可以按照大佬分享方法注册账号 &lt;a href=&#34;https://linux.do/t/topic/29032&#34;&gt;无需手机号认证注册谷歌邮箱&lt;/a&gt;&lt;br&gt;
进入谷歌获取&lt;a href=&#34;https://aistudio.google.com/app/apikey&#34;&gt;Get API key&lt;/a&gt;&lt;br&gt;
现在不用申请直接可以使用的1.5模型&lt;/p&gt;
&lt;h2 id=&#34;代理谷歌请求&#34;&gt;代理谷歌请求&lt;/h2&gt;
&lt;h3 id=&#34;cloudflare-代理&#34;&gt;Cloudflare 代理&lt;/h3&gt;
&lt;p&gt;可以参考zhile的 &lt;a href=&#34;https://zhile.io/2023/12/24/gemini-pro-proxy.html&#34;&gt;我们也要用Gemini Pro&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;nginx代理&#34;&gt;Nginx代理&lt;/h3&gt;
&lt;p&gt;原理和上面一致，通过Nginx是把代理放到个人小机上面，这样要求你的小鸡能够正常访问谷歌。&lt;/p&gt;
&lt;p&gt;这种形式的好处就是以固定IP的形式访问谷歌大模型服务。&lt;/p&gt;
&lt;p&gt;在服务器运行测试命令，替换 &lt;code&gt;YOUR_API_KEY&lt;/code&gt; 为你的API key，有回复可以进行下一步&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s1&#34;&gt;&amp;#39;Content-Type: application/json&amp;#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;contents&amp;#34;:[{&amp;#34;parts&amp;#34;:[{&amp;#34;text&amp;#34;:&amp;#34;Write a story about a magic backpack&amp;#34;}]}]}&amp;#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -X POST &lt;span class=&#34;s1&#34;&gt;&amp;#39;https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=YOUR_API_KEY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nginx配置server部分如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;listen&lt;/span&gt;       &lt;span class=&#34;mi&#34;&gt;443&lt;/span&gt;  &lt;span class=&#34;s&#34;&gt;ssl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;server_name&lt;/span&gt;  &lt;span class=&#34;s&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;root&lt;/span&gt;         &lt;span class=&#34;s&#34;&gt;/xxx/html/web&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl on;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_certificate&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/xxx/xxx/ca.pem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_certificate_key&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/xxx/xxx/private.key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;103.21.244.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/22&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;103.22.200.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/22&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;103.31.4.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/22&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;141.101.64.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;108.162.192.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;190.93.240.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;188.114.96.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;197.234.240.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/22&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;198.41.128.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;162.158.0.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;104.16.0.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/13&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;104.24.0.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/14&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;172.64.0.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/13&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;allow&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;131.0.72.0&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/22&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;deny&lt;/span&gt;    &lt;span class=&#34;s&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;^~&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/Safari1261/&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;c1&#34;&gt;# Google Gemini API 服务代理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;         &lt;span class=&#34;kn&#34;&gt;proxy_ssl_server_name&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;c1&#34;&gt;#proxy_pass  https://api.openai.com;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;         &lt;span class=&#34;kn&#34;&gt;proxy_pass&lt;/span&gt;  &lt;span class=&#34;s&#34;&gt;https://generativelanguage.googleapis.com/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;kn&#34;&gt;proxy_buffering&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;off&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;kn&#34;&gt;client_max_body_size&lt;/span&gt;    &lt;span class=&#34;mi&#34;&gt;300m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;配置说明&lt;/p&gt;</description>
    </item>
    <item>
      <title>低成本AI音色克隆软件【GPT-SoVITS】使用教程</title>
      <link>https://bytejog.com/posts/ai/gpt-sovits/</link>
      <pubDate>Sat, 16 Mar 2024 20:00:00 +0800</pubDate>
      <guid>https://bytejog.com/posts/ai/gpt-sovits/</guid>
      <description>&lt;p&gt;GPT-SoVITS ：&lt;a href=&#34;https://github.com/RVC-Boss/GPT-SoVITS&#34;&gt;https://github.com/RVC-Boss/GPT-SoVITS&lt;/a&gt;&lt;br&gt;
官方demo介绍：&lt;a href=&#34;https://www.bilibili.com/video/BV12g4y1m7Uw&#34;&gt;https://www.bilibili.com/video/BV12g4y1m7Uw&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;功能&#34;&gt;功能：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;零样本文本到语音（TTS）：&lt;/strong&gt; 输入 5 秒的声音样本，即刻体验文本到语音转换。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;少样本 TTS：&lt;/strong&gt; 仅需 1 分钟的训练数据即可微调模型，提升声音相似度和真实感。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨语言支持：&lt;/strong&gt; 支持与训练数据集不同语言的推理，目前支持英语、日语和中文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebUI 工具：&lt;/strong&gt; 集成工具包括声音伴奏分离、自动训练集分割、中文自动语音识别(ASR)和文本标注，协助初学者创建训练数据集和 GPT/SoVITS 模型。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;使用过程简介&#34;&gt;使用过程简介：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;数据处理&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;UVR5 人声处理&lt;/li&gt;
&lt;li&gt;音频切割&lt;/li&gt;
&lt;li&gt;音频降噪&lt;/li&gt;
&lt;li&gt;音频打标&lt;/li&gt;
&lt;li&gt;校对标注&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;训练&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;数据集格式化&lt;/li&gt;
&lt;li&gt;微调训练&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;推理&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;教程&#34;&gt;教程&lt;/h2&gt;
&lt;p&gt;实验环境：Ubuntu 22.04，NVIDIA RTX A6000&lt;br&gt;
采用docker形式部署&lt;br&gt;
docker-compose.yaml文件：https://raw.githubusercontent.com/RVC-Boss/GPT-SoVITS/main/docker-compose.yaml&lt;/p&gt;
&lt;h3 id=&#34;0-准备工作&#34;&gt;0. 准备工作&lt;/h3&gt;
&lt;p&gt;在主目录下创建&lt;strong&gt;GPT-SoVITS&lt;/strong&gt;，并下载docker-compose.yaml，包括模型的镜像大小5G左右&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd ~
mkdir GPT-SoVITS
cd GPT-SoVITS
mkdir logs output reference SoVITS_weights GPT_weights
curl -o docker-compose.yaml https://raw.githubusercontent.com/RVC-Boss/GPT-SoVITS/main/docker-compose.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;默认docker-compose.yaml需要做一下调整，需要将 &lt;strong&gt;GPT_weights&lt;/strong&gt;文件夹映射出来。&lt;br&gt;
原始内容：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    volumes:
      - ./output:/workspace/output
      - ./logs:/workspace/logs
      - ./SoVITS_weights:/workspace/SoVITS_weights
      - ./reference:/workspace/reference
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;修改后的内容（增加GPT_weights一行映射）：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
