2025-12-23 17:34:18
我们最常见的是使用网页端,有个对话框,输入我们想问的问题,点击"发送"按钮,然后就等待大模型给我们返回答案了。
其实,这可以看成一个产品,以大模型为后端的聊天工具。
这是最直观的可以给用户体验到大模型的方式,每个模型厂商都有类似产品。

有的时候企业出于安全性的考虑,会在自己的内网部署开源的大模型或企业自己训练的大模型,这个时候可以选用类似 ollama 这样的模型部署工具来使用。
# 以命令行的方式和大模型交互
ollama run deepseek-r1
# 以api的方式和大模型交互
curl -s "http://127.0.0.1:11434/api/generate" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-r1:latest",
"prompt": "请简要介绍一下牛顿第一定律。",
"stream": false
}'
模型中转平台是类似 openrouter(https://openrouter.ai/)和 模力方舟(https://ai.gitee.com/serverless-api)这样的把市面上主流的大模型放在一个平台上,通过统一的接口供大家使用。
上面两个平台使用的 url 和 key 都是第三方的,除了这种聚合模式外,还有像 liteLLM 这样的平台,它是一个开源的库,也可以对外提供统一的接口供大家使用,但是使用的 url 和 key 都是模型厂商自己的。
from openai import OpenAI
client = OpenAI(
base_url="https://ai.gitee.com/v1",
api_key="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
)
response = client.chat.completions.create(
messages=[
{
"role": "system",
"content": "You are a helpful and harmless assistant. You should think step-by-step."
},
{
"role": "user",
"content": "Can you please let us know more details about your "
}
],
model="DeepSeek-V3",
stream=True,
max_tokens=1024,
temperature=0.6,
top_p=0.8,
extra_body={
"top_k": 20,
},
frequency_penalty=1.1,
)
每家模型厂商一般除了 web 端的产品外,也提供 SDK 的方式对外提供使用,一般需要在模型厂商的官网新建 key,并且需要充值才能使用。
# deepseek的python 版本 sdk使用方法,也有 nodejs 版本和 bash 脚本的
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get('DEEPSEEK_API_KEY'),
base_url="https://api.deepseek.com")
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "Hello"},
],
stream=False
)
print(response.choices[0].message.content)
除了上面几种偏底层的模型的使用方法外,还有更偏向于应用侧的模型使用方式,那就是使用 Langchain 或者 openai agent sdk 这样的框架,这些框架是把大模型做了进一步的抽象,方便编写各种业务应用。
# 使用langchain调用 DeepSeek 模型
from langchain_deepseek import ChatDeepSeek
llm = ChatDeepSeek(
api_key=env_settings.DS_API_KEY,
model="deepseek-ai/DeepSeek-R1",
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2,
api_base='https://api.siliconflow.cn'
)
messages = [
("system", "You are a helpful translator. Translate the user sentence to French."),
("human", "I love programming."),
]
# print(llm.invoke(messages))
# print(llm.invoke("hello").content)
ai_message = llm.invoke([
SystemMessage(content="please speak in chinese"),
HumanMessage(content="hello"),
])
print(ai_message.content)
2025-12-11 16:52:49
使用 Claude Code(又名 cc) 作为编程工具已经有一段时间了,claude code 也陆陆续续迭代了好几个版本,在编程上的体验可以说是越来越好,对我来说唯一还能吐槽的点就是由于网络的原因,速度上还是有些慢。
使用 claude code 这一段时间,其实还改变了我一个坏毛病:接到需求直接编码。其实,不管使用哪款 AI 工具,都不能上来直接编码,其实你可以把 AI 当成一个普通员工,初次见面,你头脑里的很多想法不可能一次让对方全部理解。
我总结出来的黄金工作流程是:Research → Plan →Code
不论让 Claude 开始编写一个新需求,还是修改任何代码之前,先探索你的代码库并收集上下文信息,都是最重要的事,也是整个流程的核心要义,具体来说:
无论我们用哪个工具(更准确的应该叫 AI Agent)去协助我们编程,claude code、gemini 或者 cursor,他们都需要一份"说明书"来了解这个项目的背景和规则,否则每次它都要猜你的意图。在 Claude Code 中这份初始设置文件名是 CLAUDE.md。
注意:各家 AI Agent 的初始设置文件的名字和位置不同,创建文件的时候一定要注意。
初始设置文件的优先级顺序由高到低如下: 1.对话指令 2.项目中的设置文件 3.系统级的设置文件
如果团队使用多种 AI 工具,可以试一下下面的结构:

接下来,初始设置文件的内容该写些什么呢?
1.项目基本背景、技术栈 2.代码风格 3.安全规范 4.测试要求 5.特殊规则
举个例子,
claude.md
项目背景(Project Context)
本项目是一个基于 Node.js / TypeScript 的 API 服务,使用 Express 作为 Web 框架,并采用 Prisma ORM 进行数据库操作。
代码风格(Code Style)
- 使用函数式组件与 hooks 风格
- 优先使用 async/await,避免直接使用 promise 链
- 单行最大长度限制为 100 字符
测试要求(Testing Requirements)
- 每个新功能都必须包含 单元测试
- API 接口需撰写 集成测试
- 使用 Jest 作为测试框架
常见问题与注意事项(Common Pitfalls)
- 始终对用户输入进行验证
- 使用参数化查询,绝不拼接字符串
- 在访问数据前必须进行身份验证
- 记录错误日志,但不要向客户端暴露堆栈信息
- 列名使用 snake_case
- 表名使用复数形式
- 每张表必须包含 created_at 与 updated_at 字段
- 使用 deleted_at 字段进行软删除
有了初始设置文件作为"规范"后,我们还需要了解和 AI 沟通协作的技巧:
举个例子, 每次提交代码都要思考如何撰写 commit message,能否自动生成提交信息?
在项目根目录下建立文件:.claude/commands/commit.md
输入以下内容:
---
description: Generate commit message and commit
---
请执行以下步骤:
1. 执行 `git status` 和 `git diff` 查看变更
2. 分析变更内容,生成符合 Conventional Commits 规范的 commit message
3. 格式:`type(scope): description`
- type: feat/fix/refactor/docs/test
- 描述需要清楚说明「做了什么」以及「为什么」
4. 询问我是否要执行 commit
请不要直接 commit,先让我确认 message。
下次提交代码的时候在命令行中,直接输入/commit 就可以了。

其实 mcp 也算是一种使用技巧,和上面介绍的通用技巧比需要提前安装一些插件。Claude Code 的 mcp 默认安装路径是在全局设置中,这一点要格外注意,默认路径在/Users/xxxx/.claude.json
这里以常用的 pgsql 和 cotext7为例,介绍一下安装和使用的方法。
#安装
claude mcp add postgres npx -- -y @modelcontextprotocol/server-postgres postgresql://localhost:5432
claude mcp add --transport http context7 https://mcp.context7.com/mcp --header "CONTEXT7_API_KEY:去官网申请"
记得在 claude.md 中增加下面内容,不然以后每次输入需求后,还要在最后加一句 use context7,特别麻烦。
Always use context7 when I need code generation, setup or configuration steps, or
library/API documentation. This means you should automatically use the Context7 MCP
tools to resolve library id and get library docs without me having to explicitly ask.
# 查看 mcp,只针对本项目,不是全局的
claude mcp list
# 使用 mcp
claude "Query the users table"

最后我还想回归到最开始的需求,明晰清楚需求的内涵和外延是做好一个项目最终的事情,在使用 Claude Code 来构建项目之前,花 15-20 分钟进行研究:
让人工智能将这些研究综合成一个计划,内容包括:
审查该计划并留意自己的反应。你的想法和反应很重要。当你认为 “这太复杂了” 或 “我们已经有更好的方法来做这件事” 时,不要只是修改这个计划,还要记录下你为什么会这么想。把它写下来。
最后根据该计划开发这个功能。
完成整个项目后,将最终的实现与原始计划进行比较。你在哪些地方偏离了计划?为什么?怎样才能让这个计划更好?将自己的反思记录下来,用于下一个项目的开发。
在下一个项目中,把自己的反思添加到你的 CLAUDE.md 文件中。写下一条规则,比如 “在做 X 类型的工作时,记得检查 Y”,或者 “我更喜欢方法 A 而不是方法 B,因为原因 C”。
另外,对于一些需求很模糊,甚至是只有一句话的需求,可以试试下面的提示词,让 AI 帮忙。
需求的确认:
你是一位资深产品顾问(C - Capacity)
背景:我在做一个电商平台,客户反应「结帐流程太慢」(I - Insight)
请用苏格拉底提问法,帮我厘清这个需求背后的真实问题(S - Statement)
请用反向提问的方式引导我思考,不要直接给答案(P - Personality)
最后提供 3 种可能的理解方向让我选择(E - Experiment)
2025-12-08 16:22:22
Claude AI skills 可以让 AI 获得特定领域的最新知识。实现某个专业领域的能力输出,对特定框架或者库的 API 理解,提供最佳代码实例。
人工阅读文档非常耗时,整理和分类内容需要专业知识,实时保持版本最新十分困难。
快速开发一个 skill 能力,可以通过大模型来帮忙。比如我想写一个 xx 领域风格的文档,可以使用下面提示词。
请为我开发一个简单的 Skill。如果你能构建正确的文件夹结构,并打包成一个 ZIP 文件供我下载,那是最理想的。
这个 Skill 的目的,是为了让 AI 更符合xx领域的写作风格。通常情况下,当我给 AI 一个 codebase 的项目时,他会仔细阅读项目代码,然后根据相应的模板写出一根专业的文档 我希望句子、段落之间能够更加顺滑、自然地衔接。我希望它能在目标语言中正确使用标点符号。 我并不擅长xx领域技术文书的写作风格。我希望你能通过提问来帮助理解我真正想要的风格,然后再完成这个 Skill 的开发。
还有一种场景,我们只是针对一个网站或者一份 pdf 文档,想把它转化为专业的能力输出,这时就可以用到Skill_Seeker[https://github.com/yusufkaraaslan/Skill_Seekers]这个工具。
# 安装
uv tool install skill-seekers
# 基本命令
skill-seekers scrape --url https://akshare.akfamily.xyz/ --name akshare
skill-seekers pdf --pdf docs/manual.pdf --name myskill
skill-seekers pdf --pdf docs/scanned.pdf --name myskill --ocr
举个例子,我想学习 akshare 这个库的基本功能,它的在线文档的地址是https://akshare.akfamily.xyz/,如果一页一页的看太麻烦,于是使用skill-seekers帮我自动化的学习。
学习完成后,会生成如下的目录结构。

我们只需要拷贝 akshare 这个目录到我们代码根目录下的.claude/skills 下面,claude 就具备了 akshare 的基础知识。
