01月21日
一、今日完成情况
- 访问grokAPI 批量获得数据,编写脚本实现数据抽象采集,完成实验室任务第一步。 –已完成
- 第一阶段:源数据批量获取 (Grok API)
- 非常荣幸的是,这个接口的充值我实现了,看来对于中国的银行卡卡的还是没有这么严格。
- 补充规范:时间方面的规范,需要精细到分钟,但是不需要精确到秒。地点方面,需要精确到具体的地名,而不是非常笼统的,什么国家,什么州这样子。(体现在提示词当中)–故模板需要优化
- 第二阶段:核心信息抽取 (Deepseek API)
- 第三阶段:脚本整合与自动化
- 第一阶段:源数据批量获取 (Grok API)
- 微信下载的文件如何快速查看,我要优化文件查看方式
- 微信下载文件没有找到寻找的方法,可是探索到一个手机管理文件,甚至各个网盘打通节点的,极客软件,MiXplorer,是很多功能的集大成者,使用起来确实和Windows文件管理无异。
- coze快速上手一下,还是快速打通一个工作流,不少于4个节点 –放弃
- 我找半天文档,发现coze居然只能用官方的模型,而且还要充钱,这个自由度和灵活性非常之低,不如自己搭建呢,还是开源好,灵活可自主,看来我这部分人群不属于这个产品的辐射范围。
- dify记忆承载知识库配置一下工作流,我要让公众号知识库回答助手的回答更加符合我的心意。 –已尝试,欲推迟。
- 第一个任务,本来计划优化工作流访问知识库的,可是我发现,知识库的是公众号,所以语句表达非常稀碎,导致切割的意思无法整合起来,知识库检索效果就非常差了,解决办法倒是也有
- 上策:每个公众号文章都跑一遍AI 的API,AI会自动语义分析整合的,但是速度相对较慢 –已经尝试,20s三个文章,不满足我的需求
- 中策:使用正则表达式,把一些换行符号去掉,这样可以把短小的句子拼接起来,但是语义未必连续
- 下策:Dify 暴力配置,设置最大分段长度 (Max Chunk Size),不管三七二十一,把细小的句子整合在一起,不考虑语义了。
- 第一个任务,本来计划优化工作流访问知识库的,可是我发现,知识库的是公众号,所以语句表达非常稀碎,导致切割的意思无法整合起来,知识库检索效果就非常差了,解决办法倒是也有
- python request上手和curl上手继续实践,找到两个API访问项目,手敲一下指令根据说明书,实践一下 -已完成
- Claude Code上手国内的API配置,并且快速上手基本指令的实践,不少于5个指令。 –已完成,从入坑到放弃
二、今日感悟
- 核心业务数据:
- 数据获取和抽象化API项目,反正都是AI帮我写的,我就出主意就可以了。
- Claude Code 配置,太烧钱了
- 零碎的小项目玩了一下,还有大模型开发的网课看了一下,费老师让我学习涉猎的内容就是大模型开发,非常对口,当然要不要走这条路是另一个事情了。
- 今日工作总结:
- 今天数据抽象没有使用通义千问大模型,这是一个失职,因为师兄明确和我说过的,所以我明天要修改一下。
- 关于coze还有一些常用的API调用尝试,熟悉其代码逻辑,这个还是简单的,就是填写参数就可以了,没什么技术含量,长远来说,核心竞争力还是在于那些有智慧的内容,我目前还没涉及到。
- 王晶师兄提到的几个新概念,我需要单独去了解一下
- 明日工作计划:
- 把Deepseek接口切换为通义千问模型接口,然后微调prompt,让大模型的输出关于时间和地点有规范,输出100条抽象数据再让师兄审核,没问题的话,可以部署在服务器上。
- 在实验室的服务器上部署网页爬取的上次看到的项目,这样的话我就不必要使用自己电脑占用CPU了,我的MacBook本质上的定位也是一个轻量级的API的调用,而不是模型的服务。
- 关于记忆承载文章的顺序标号,我需要琢磨一下,如何解决,使得在批量下载完文章之后,可以有顺序的导出,而不是每次导入到文件夹之后零零散散,也不按照发布时间来排序。
- 再次找到两个python和curl的接口调用尝试实践。
- dify工作流配置明天必须配置,今天没有尝试,不然就要忘记了,所以这个任务优先级非常高,只不过思考工作流实现什么功能也是苦难那的事情,因为我需要找到需求,不然配置起来就没有动力,我一定要知道自己干什么,然后才是怎么干。
- 今日学习成长:
- 今天可以看懂讯飞星火的python代码了,其实去年调用的时候,静下心来看也是可以看懂加密和协议的分装的,只是当时不太自信而已,只要沉下心过来理解,没有什么是实现不了的,很可惜上海话的模型API额度我已经体验完了,没法再体验了。
- 关于实验室放假颗粒度对其的情况,我考虑事情还是不够周全,考虑到要询问一下和我对接的老师,建环那边的负责同学也么有通知。这是因为我在看消息的时候,没有看仔细,只是看了半句话,而没有去理解剩下的意思,导致忘记了通知建环同学了,未来我一定要越来越细心,还有过程透明非常重要,这才是开组会的价值,这才是当负责人的价值。
三、备注
- 无
四、实验室服务器
使用ssh root@121.48.163.69 -p 45618 登录服务器,初始密码为ludunhang,后续修改密码及创建用户的操作可以参考高翔写的这篇 https://github.com/CMIPT/docker-script/blob/master/README-zh.md#something-for-docker-users的
五、实验室数据采集项目
大致思路:数据抽取 + 逻辑抽象 + 脚本整合
数据抽取:
两方面需要考虑,第一是数据来源,这就要求我们梳理清楚,我们需要什么样的数据,至少需要有清晰的时间和地点,所以普通的模糊新闻无法满足要求,需要是OSINT(开源情报)
所以我们可以采集数据的平台范围不大,平台如下:
1、OSINT 社交媒体 (Twitter/X) -> Grok API
搜索关键词示例: SCSPI (南海战略态势感知), South China Sea Coast Guard, Ren'ai Jiao, Second Thomas Shoal, PLAN, US Navy timeline.
2、专业军事/海事新闻网站 -> Tavily 的主战场
推荐源: Naval News, USNI News, The War Zone, SCSPI (官网报告)
使用推特的话,直接让Grok API自己决定,我们只需要提出需求就可以了。使用Tavily的接口的话,需要自己去梳理比较官方的新闻平台,作为网址的输入,让Tavily 的API批量去爬取。
假设我使用的是X上爬取内容,那么大概率是英语内容,师兄所需要的数据是需要英语还是中文,还是均可,这也是一个问题,需要问清楚。
1、 API接口记录
deepseek api-key =
sk-c9c32fd1ece2448db0e5e73e26f20855
api-key =
xai-Zd2P4y8wenLaOhJ5x4Qq6u0E4yet8Azu9gbLZHbZMKzo2zIdtzUoOvINe8eLpuYgDmVHL1MnMrkXASHE
调用协议:
curl https://api.x.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer xai-Zd2P4y8wenLaOhJ5x4Qq6u0E4yet8Azu9gbLZHbZMKzo2zIdtzUoOvINe8eLpuYgDmVHL1MnMrkXASHE" \
-d '{
"messages": [
{
"role": "system",
"content": "You are a test assistant."
},
{
"role": "user",
"content": "Testing. Just say hi and hello world and nothing else."
}
],
"model": "grok-4-latest",
"stream": false,
"temperature": 0
}'
可以访问没问题,这是返回值,前提是需要打开代理proxy_on,终端的代理需要单独开启,别忘记了:
{"id":"2501ffbb-c1aa-03b3-622f-629c7e7b11cf","object":"chat.completion","created":1768974389,"model":"grok-4-0709","choices":[{"index":0,"message":{"role":"assistant","content":"hi and hello world","refusal":null},"finish_reason":"stop"}],"usage":{"prompt_tokens":703,"completion_tokens":4,"total_tokens":1009,"prompt_tokens_details":{"text_tokens":703,"audio_tokens":0,"image_tokens":0,"cached_tokens":702},"completion_tokens_details":{"reasoning_tokens":302,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0},"num_sources_used":0,"cost_in_usd_ticks":51195000},"system_fingerprint":"fp_dd0aa291c6"}**%**
2、Grok API 批量采集vscode配置
A、CLine工作失败
报错信息分析:典型的 Gemini 工具 / function schema 限制错误,和代理报错无关,是Gemini和CLine工具八字不合,因为 Cline 自动生成的 schema 过于复杂,触发了 Gemini 的硬性限制。
Gemini 返回的核心信息是这一句:
The specified schema produces a constraint that has too many states for serving.
意思是:
你提交的 JSON Schema,在 Gemini 内部会被编译成一个“状态机”,
这个状态机规模太大,服务器拒绝执行。
CLine提交信息的特点
大量文本
- 非常长的 property 名
- 非常长的 enum 名
数组长度限制过大
array+maxItems- 尤其是 嵌套 array
复杂的约束
minimum / maximumpatterndate-time等 format
多层嵌套 object + required + enum
修改接口,使用Deepseek尝试,尝试成功了,就是Gemini模型本身的问题。
B、代码配置
代码让AI写,现在的思路是,确定话题,确定提示词,然后调用grok的API,我充值了5美元,看来是没法报销了,未来倒是也用得到。
grok对中国的银行卡的限制就好很多了,反正比ChatGPT和Claude要宽松很多。
流程不难理解,就是把获得的内容JSON文件写到一个固定的位置,然后思路就是接下来调用Deepseek对数据进行抽象,单独保存一个位置。
可是这样的效率比较低下,我打算变革一下,采用操作系统当中的生产者消费者模型,使用一个队列,也就是公共区域来存储Grok获取到的数据,然后Deepseek从队列当中取数据,并且取数据和加数据的时候,这个队列需要加上互斥锁,不然就会出问题。
从而实现双线程并行的效果。
把思路和AI说之后,它还是会自动写代码的,所以让其写好之后,我调试一下,并且导出代码的思路:
1. 队列管理器 (queue_manager.py)
- 作用:基于文件的并发安全队列
- 特性:
- 使用文件锁 (
fcntl) 确保多进程/线程安全 - 每条数据作为独立JSON行存储
- 支持入队、出队、队列大小查询
- 已处理数据自动备份到
processed/目录
- 使用文件锁 (
2. 生产者组件 (grok_client.py)
- 职责:从Grok API采集OSINT数据
- 优化措施:
- 重试机制:针对502等5xx错误实现指数退避重试
- 令牌限制:设置
max_tokens=1500防止响应过长 - 提示词精简:请求1-2个事件而非3个,降低模型负载
- 队列集成:通过
fetch_and_enqueue()方法直接将数据写入队列
3. 消费者组件 (deepseek_client.py)
- 职责:从队列读取数据并提取结构化标签
- 标签格式:严格遵循
task_2_example.json的三类结构:- 共现关系 (Co-occurrence)
- 地点编年 (Location Chronicle)
- 空间分布 (Spatial Distribution)
- 处理逻辑:持续监控队列,有新数据时自动处理并保存结果
4. 主控程序 (main.py)
- 配置驱动:只需修改配置区域即可调整:
- API密钥(支持环境变量)
- 主题列表
- 队列和输出文件路径
- 运行模式(并发/顺序)
- 运行模式:
- 并发模式:生产者和消费者同时运行
- 顺序模式:先完成所有数据采集,再开始处理
工作流程
Grok API → 生产者 → 文件队列 → 消费者 → 结构化结果
↓ ↓
错误重试 标签提取
令牌控制 格式标准化
该架构实现了稳定、可扩展的OSINT数据自动化处理流程,特别适合需要连续采集和复杂分析的场景。
六、Claude Code 国内配置
鉴于我已经登录了账号,可是账号没有额度完全用不了,现在我开始重新配置:
清除旧状态 (如果终端里能输入指令): 输入 /logout 或者直接在终端运行 claude logout
/logout
准备智谱 GLM 的 API Key:
eadc3f297460424e9568126bb335ed1c.KYqxek8KIHtwfdPZ
终端输入指令:
echo 'export ANTHROPIC_BASE_URL="https://open.bigmodel.cn/api/anthropic"' >> ~/.zshrc
echo 'export ANTHROPIC_AUTH_TOKEN="你的_GLM_API_KEY_粘贴在这里"' >> ~/.zshrc
echo ‘export ANTHROPIC_AUTH_TOKEN=”eadc3f297460424e9568126bb335ed1c.KYqxek8KIHtwfdPZ”‘ >> ~/.zshrc
指定使用的模型 (智谱GLM-4)
echo 'export ANTHROPIC_MODEL="glm-4"' >> ~/.zshrc
禁用非必要联网检查 (防止它去检查美国服务器状态)
echo 'export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC="1"' >> ~/.zshrc
使用此命令立即生效,不然只有重启才行:
source ~/.zshrc
再次启用Claude,就会绕过登录验证:
claude
1、基本指令学习
- 发送指令:输入文字后按
Enter。 - 换行(多行输入):按
Option+Enter(Mac)。(这点最重要,否则写代码时容易误发)。 - 中断执行:按
Ctrl+C。如果它开始疯狂输出或者卡住了,立刻按这个。 - 退出程序:输入
/exit或直接输入exit。
核心三大“斜杠指令” (Slash Commands)
/init (项目初始化)
- 作用:当你进入一个新项目文件夹时,第一时间运行这个。
- 它会做什么:它会分析你的
.gitignore,快速理解项目结构,知道哪些文件重要,哪些是垃圾文件(如node_modules)。
调用效果如下:
他直接浏览了我的项目文件。
他准备给我的项目生成一个说明书,并且等待我同意的指令:![]()
我同意之后,他就开始调用指令,直接修改写入我的项目文件了,他在充分理解我的项目之后,导出的markdown,说明了项目需要安装什么包,需要配置什么API等等。
Write(CLAUDE.md)
⎿ Wrote 81 lines to CLAUDE.md
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is a WeChat public account article cleaning tool that uses the DeepSeek API to semantically reorganize fragmented text into
logically coherent paragraphs. The tool processes markdown files from the `raw_data` directory and saves cleaned versions to the
`cleaned_data` directory, with support for resumable processing and multi-threading.
## Key Commands
… +71 lines (ctrl+o to expand)
⎿ API Error: 429 {"error":{"code":"1113","message":"余额不足或无可用资源包,请充值。"},"request_id":"202601211731465ccf9e639af0408c"}
他甚至贴心的帮我调试了一下现在的DeepseekAPI,看看API可不可用还有没有钱。
Claude 的反馈:Claude 抓取到了终端输出的这个报错,并把它原封不动地显示给了你。所以不是我的Claude没钱了,是他抓住了我的终端日志。
/clear (清除记忆)
作用:清空当前对话历史。
什么时候用:
- 当你换了一个新任务(比如从“写代码”变成“写文档”)。
- 当 Claude 开始“胡言乱语”或陷入死循环时,重置它的大脑。
不用学了,token爆炸了,从未见过如此烧token的AI工具,NAVER。
Error: Error during compaction: Error: API Error: 429
{"error":{"code":"1113","message":"余额不足或无可用资源包,请充值。"},"request_id":"202601212035366e576d6d418244d9"}
❯ 解释一下clean_articles的逻辑
⎿ API Error: 429 {"error":{"code":"1113","message":"余额不足或无可用资源包,请充值。"},"request_id":"2026012120383849743fc0dca44ef
跑了几个指令,代码都没给我运行,token就爆炸了,直接烧了我25块钱,几百万token,unbelievable!!!欠费了。
七、curl + request继续练习
curl -X POST "https://open.bigmodel.cn/api/paas/v4/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 396450498c664d64a9e6bee1f117e06b.T34KvITUxFtEty1i" \
-d '{
"model": "glm-4.7-flash",
"messages": [
{
"role": "user",
"content": "作为一名营销专家,请为我的AI大语言模型产品创作一个吸引人的口号"
},
{
"role": "assistant",
"content": "当然,要创作一个吸引人的口号,请告诉我一些关于您产品的信息"
},
{
"role": "user",
"content": "实时交互,多模态输入,工作流速度快,应用场景比较丰富且模型项目开源,建立创作者生态"
}
],
"thinking": {
"type": "enabled"
},
"max_tokens": 65536,
"temperature": 1.0
}'
from zai import ZhipuAiClient
client = ZhipuAiClient(api_key="396450498c664d64a9e6bee1f117e06b.T34KvITUxFtEty1i") # 请填写您自己的 API Key
response = client.chat.completions.create(
model="glm-4.7-flash",
messages=[
{"role": "user", "content": "作为一名营销专家,请为我的产品创作一个吸引人的口号"},
{"role": "assistant", "content": "当然,要创作一个吸引人的口号,请告诉我一些关于您产品的信息"},
{"role": "user", "content": "智谱AI开放平台"}
],
thinking={
"type": "enabled", # 启用深度思考模式
},
stream=True, # 启用流式输出
max_tokens=65536, # 最大输出tokens
temperature=1.0 # 控制输出的随机性
)
# 流式获取回复
for chunk in response:
# if chunk.choices[0].delta.reasoning_content:
# print(chunk.choices[0].delta.reasoning_content, end='', flush=True)
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end='', flush=True)
讯飞星火尝试:
APPID = fe05a9f7
APISecret = MDQ1MjE4MDUzNWUzYzZiOTJiNmY4ODE5
APIKey = 45d91d5e7ae2729478c76d244bd02b3c
讯飞星火的python示例代码会复杂一些,不过看懂了 也就不难了,闽南话和英语我都试了一下,翻译的还可以了,可惜我上海话没有额度了,本来使用方言就可以了的。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com