<?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>Llm on 乐的博客</title><link>https://liujiale.me/tags/llm/</link><description>Recent content in Llm on 乐的博客</description><generator>Hugo -- 0.152.2</generator><language>zh-CN</language><copyright>2015-2026 CC BY-NC-ND 4.0</copyright><lastBuildDate>Fri, 06 Jun 2025 09:33:37 +0800</lastBuildDate><atom:link href="https://liujiale.me/tags/llm/index.xml" rel="self" type="application/rss+xml"/><item><title>程序员在技术领域的打怪升级圣杯有哪些？</title><link>https://liujiale.me/til/programmer-in-the-technical-field-monster-upgrade-grail/</link><pubDate>Fri, 06 Jun 2025 08:51:00 +0800</pubDate><guid>https://liujiale.me/til/programmer-in-the-technical-field-monster-upgrade-grail/</guid><description>&lt;h2 id="介绍"&gt;介绍&lt;/h2&gt;
&lt;p&gt;我会日常与 LLM 对话交流，并将一些有趣的内容整理到 TIL（Today I Learned）栏目中。&lt;/p&gt;
&lt;p&gt;工作近十年来，我发现自己的技术视野逐渐局限在 Web 开发领域。无论是前端的 JavaScript、CSS，还是使用 Taro 开发跨端应用，抑或是用 Node.js 构建后端服务和命令行工具，这些技术栈其实只是计算机科学的冰山一角。&lt;/p&gt;
&lt;p&gt;我希望能够拓宽视野，深入了解程序员在整个技术生态中的更多可能性。我想探索各个细分领域，发现除了传统的&amp;quot;Web 开发&amp;quot;岗位之外，还有哪些技术方向值得我去尝试和发展。&lt;/p&gt;</description></item><item><title>使用 gptel 帮助生成博客的 url</title><link>https://liujiale.me/til/using-gptel-to-generate-blog-urls/</link><pubDate>Tue, 06 May 2025 23:42:00 +0800</pubDate><guid>https://liujiale.me/til/using-gptel-to-generate-blog-urls/</guid><description>&lt;p&gt;&lt;strong&gt;背景：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;经常需要写博客，又期望定制一个符合博文主题的 url，以前是自己去 Google translate 翻译然后改成 slug 格式（全小写，连字符连接）。&lt;/p&gt;
&lt;p&gt;像这篇文章的格式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;using-gptel-to-generate-blog-urls&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;现在有 llm 之后，会开一个 deepseek 的网页或者 ChatGPT 的网页，设置基础 prompt，然后就将中文的文章名称发给它，让他给出对应的英文&lt;/p&gt;
&lt;p&gt;最近我想到也许可以将这个步骤通过一个 elisp 函数来实现，最终基于 gptel 加上一些简单的 elisp 代码实现了整个流程。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;完整代码：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-emacs-lisp" data-lang="emacs-lisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt; &lt;span class="nv"&gt;my/gptel-gen-hugo-properties&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;Generate Hugo export properties for current Org heading.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;interactive&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;unless&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-at-heading-p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ne"&gt;user-error&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;必须在 Org 模式标题位置使用&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;gptel-request&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;将中文标题转换为英文 slug（全小写，连字符连接）：
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;需要翻译的原文：「%s」&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;string-trim&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-get-heading&lt;/span&gt; &lt;span class="no"&gt;t&lt;/span&gt; &lt;span class="no"&gt;t&lt;/span&gt; &lt;span class="no"&gt;t&lt;/span&gt; &lt;span class="no"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;:system&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;只返回转换后的字符串&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;:callback&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;lambda&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;response&lt;/span&gt; &lt;span class="nv"&gt;info&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;when-let*&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;raw&lt;/span&gt; &lt;span class="nv"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;slug&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;replace-regexp-in-string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;\\([^a-z0-9]\\|-\\)+&amp;#34;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;-&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;downcase&lt;/span&gt; &lt;span class="nv"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="no"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-set-property&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;EXPORT_HUGO_BUNDLE&amp;#34;&lt;/span&gt; &lt;span class="nv"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-set-property&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;EXPORT_FILE_NAME&amp;#34;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;index.zh&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;message&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;生成成功：%s&amp;#34;&lt;/span&gt; &lt;span class="nv"&gt;slug&lt;/span&gt;&lt;span class="p"&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>2025 年 3 月稳定可用高并发的 DeepSeek-R1 模型</title><link>https://liujiale.me/til/deepseek-r1-api-providers-comparing-integration-and-pricing/</link><pubDate>Sat, 22 Mar 2025 22:02:00 +0800</pubDate><guid>https://liujiale.me/til/deepseek-r1-api-providers-comparing-integration-and-pricing/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;LLM 发展到现在，领先的大模型在能力上已经得到了认可，问题就是如何找到稳定可靠，并且便宜的 API 服务商。&lt;/p&gt;
&lt;p&gt;现在将市面上常见的提供完整版（非蒸馏）DeepSeek API 的提供上列出来，作为备忘。&lt;/p&gt;
&lt;h2 id="deepseek-官方"&gt;DeepSeek 官方&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;官网：&lt;a href="https://www.deepseek.com/"&gt;https://www.deepseek.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;开放平台：&lt;a href="https://platform.deepseek.com/"&gt;https://platform.deepseek.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;文档：&lt;a href="https://api-docs.deepseek.com/zh-cn/"&gt;https://api-docs.deepseek.com/zh-cn/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;邀请计划：无&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;价格（RMB）：&lt;/p&gt;
&lt;p&gt;（北京时间 08:30-00:30）按照标准价格计费&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型价格&lt;/th&gt;
&lt;th&gt;deepseek-chat&lt;/th&gt;
&lt;th&gt;deepseek-reasoner&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;百万 tokens 输入（缓存命中）(4)&lt;/td&gt;
&lt;td&gt;0.5 元&lt;/td&gt;
&lt;td&gt;1 元&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;百万 tokens 输入（缓存未命中）&lt;/td&gt;
&lt;td&gt;2 元&lt;/td&gt;
&lt;td&gt;4 元&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;百万 tokens 输出 (5)&lt;/td&gt;
&lt;td&gt;8 元&lt;/td&gt;
&lt;td&gt;16 元&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;（北京时间 00:30-08:30） 按照优惠价格计费&lt;/p&gt;</description></item><item><title>使用 GitHub Actions 发布第一个 MCP</title><link>https://liujiale.me/til/publishing-your-first-mcp-with-github-actions/</link><pubDate>Fri, 21 Mar 2025 11:00:00 +0800</pubDate><guid>https://liujiale.me/til/publishing-your-first-mcp-with-github-actions/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;我最近编写了一个 MCP 服务器：&lt;a href="https://github.com/nailuoGG/anki-mcp-server"&gt;nailuoGG/anki-mcp-server&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;但是有一个问题，用户安装时需要在本地进行构建，流程比较复杂，能否更简单一点呢？&lt;/p&gt;
&lt;p&gt;我想到了将其发布到 npm 上，然后使用 `npx anki-mcp-server` 命令来使用。&lt;/p&gt;
&lt;p&gt;进一步想，作为一个开源项目，为什么不使用 GitHub Actions 来进行自动化发布呢？而且至少有以下几个好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安全性，防止开发者本地电脑被侵入导致意外发包的情况，而且能保持让打包构建过程公开透明&lt;/li&gt;
&lt;li&gt;便利性，便于多人协作，这样发布时就不依赖单个开发者，也能够保持发布的一致性&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="准备"&gt;准备&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;在 Npm 上创建账户，并创建并获取 Access Tokens，记为 NPM_TOKEN。&lt;a href="https://www.npmjs.com/"&gt;https://www.npmjs.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;在 GitHub 上创建工程仓库 &lt;a href="https://github.com/"&gt;https://github.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;在 GitHub 仓库设置页面添加 secrets&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里详细记录一下如何添加 secrets：&lt;/p&gt;</description></item><item><title>知识索引：使用 Ollama 本地 LLM 模型角色扮演</title><link>https://liujiale.me/til/ollama-llm-roleplay-index-your-ultimate-local-ai-guide/</link><pubDate>Sun, 09 Mar 2025 10:10:01 +0800</pubDate><guid>https://liujiale.me/til/ollama-llm-roleplay-index-your-ultimate-local-ai-guide/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;关于拿 LLM 做角色扮演这件事情，自从 OpenAI 发布 ChatGPT 时就已经发展起来，在近几年的硬件升级和模型升级下，已经形成了一个较为完善的生态。&lt;/p&gt;
&lt;p&gt;相关的资料散落在各个站点，普通人想要了解，需要花费很大的功夫。&lt;/p&gt;
&lt;p&gt;正好最近在逛 Reddit，收集到一些知识索引，本文就尝试做“索引的索引”&lt;/p&gt;
&lt;h2 id="客户端"&gt;客户端&lt;/h2&gt;
&lt;p&gt;唯一推荐的客户端： &lt;a href="https://sillytavern.app/"&gt;SillyTavern&lt;/a&gt; ， &lt;a href="https://github.com/SillyTavern/SillyTavern"&gt;仓库链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装方法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/SillyTavern/SillyTavern -b release
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; SillyTavern &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm i &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run start&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="本地模型"&gt;本地模型&lt;/h2&gt;
&lt;p&gt;本地模型通常在性能上比不上云端模型，但是如果考虑到隐私性和费用，并且你也有一些合适的硬件，本地模型也不失为一种选择。&lt;/p&gt;</description></item></channel></rss>