返回首页
最新
我已经多次使用这种 println 调试方法,以及一些 sed/awk 的技巧来找出导致问题的调用。现在它变成了一个小的 Go 包。
通过一些 `runtime.Callers`,我通常可以通过将现有的 Mutex 或 RWMutex 替换为这个来找到问题所在。
有时我会将以下代码:
```go
mu.Lock()
defer mu.Unlock()
```
替换为 LockFunc/RLockFunc,以获取更多细节:
```go
defer mu.LockFunc()()
```
我几乎总是用 `deadlog.New(deadlog.WithTrace(1))` 来初始化它,这已经足够了。
这不是一个最精致的库,但它不打算提交到任何代码中,只是一个临时的调试工具。我觉得它很有用。
我在地理信息系统(GIS)和制图领域工作了几年,逐渐接触到机器学习和计算机视觉,这让我开始思考我所称之为“广谱”计算机视觉的内容,即超出可见光范围的物体和异常识别。
这是我第一次尝试构建一个工具,以理解其中涉及的物理原理,从阳光的电磁吸收和反射到校正后的传感器观测。我专注于构建和验证现有的光谱指数,以理解基础知识,然后再基于材料的分子特性从第一原理探索我自己的光谱指数。
到目前为止,该工具包括:
- 一个大气校正处理器,提供三种方法:经验带比法、Py6S辐射传输法和ISOFIT最优估计法
- 一个交互式查看器,支持辐射和反射数据,包含RGB合成图、23个光谱指数,以及基于感兴趣区域(ROI)的光谱特征提取和参考材料匹配
- 一个学习套件,解释从太阳辐照度到传感器捕获的观测链的每个阶段
到目前为止,我已经在来自圣巴巴拉岛、圣华金谷和内华达州库普赖特的AVIRIS-3数据上进行了测试。
我希望能对这个方向和整体实用性进行一次合理性检查。如果有人在处理高光谱数据方面有经验,并想尝试进行压力测试,安装要求Python 3.9以上,并可选用conda来支持Py6S。
作为一名数据分析学生,处理CSV和Excel表格非常重要。在数据清洗阶段,你会遇到一些可能会中断流程的问题。因此,我创建了一个免费的工具网站和Chrome扩展程序来解决这个问题,欢迎试用!
我在2017年首次制作了MouseTracks的版本。当时引起了很多关注,但我从未具备完成它的技能。大约一年前,我终于开始了2.0的开发,从那时起我一直在乐趣中逐步完善它。
一些关键功能:
- 追踪鼠标移动、点击、键盘和控制器输入(您可以选择禁用其中任何一个)。
- 根据加载的游戏/应用程序切换配置文件。
- 在图形用户界面中提供实时渲染预览。
- 设计上能够完美处理多显示器和不同分辨率。
- 较旧的鼠标移动会逐渐淡出,以保持对最新活动的关注。
- 数据可以记录多年,并在任何时候渲染。
它被设计为一种“运行后忘记”的应用程序,您可以选择在启动时后台加载,它会静默地持续记录,直到您准备好渲染(不过默认情况下并不会这样做——如果您不更改任何设置,它只会作为一个普通的便携式应用程序运行)。
它是完全开源的,并且兼容Windows/Linux/macOS。可执行文件由GitHub Actions自动构建,页面上还有关于如何使用Python本地构建或运行的说明。
如有任何问题,请随时询问。我在GitHub页面上有一系列示例渲染,希望能够很好地展示它的功能。
嗨,HN,stripe-no-webhooks 是一个开源库,可以将您的 Stripe 支付数据同步到您自己的 Postgres 数据库:
<a href="https://github.com/pretzelai/stripe-no-webhooks" rel="nofollow">https://github.com/pretzelai/stripe-no-webhooks</a>。
这里有一个演示视频:<a href="https://youtu.be/cyEgW7wElcs" rel="nofollow">https://youtu.be/cyEgW7wElcs</a>。
这有什么用呢?(1) 您不必弄清楚需要哪些 webhook 或为每个 webhook 编写监听器。这个库会处理所有这些。这种方法类似于 Django 领域的 dj-stripe 库(<a href="https://dj-stripe.dev/" rel="nofollow">https://dj-stripe.dev/</a>)。(2) Stripe 的 API 有 100 rpm 的速率限制。如果您频繁检查订阅状态或构建内部工具,您会遇到这个问题。而查询您自己的 Postgres 则没有这个问题。(3) 您可以给 AI 代理提供 stripe.* 模式的读取权限,以调试支付问题——失败的收费、退款等——而无需交出 Stripe 仪表板的访问权限。(4) 您可以将 Stripe 数据与您自己的表连接,以进行自定义分析、LTV 计算等。
它在您的 Stripe 账户中创建一个 webhook 端点,将 webhook 转发到您的后端,在那里一个 webhook 监听器将所有数据存储到一个新的 <i>stripe.*</i> 模式中。您在 TypeScript 中定义您的计划,运行同步命令,库会处理创建 Stripe 产品和价格、处理 webhook,以及保持您的数据库同步。我们还允许您为现有账户回填 Stripe 数据。
它支持预付费使用积分、账户钱包和基于使用的计费。它还允许您生成一个可以自定义的定价表组件。您可以使用库提供的简单 API 访问用户信息:
<pre><code> billing.subscriptions.get({ userId });
billing.credits.consume({ userId, key: "api_calls", amount: 1 });
billing.usage.record({ userId, key: "ai_model_tokens_input", amount: 4726 });
</code></pre>
实际上,如果您不想,您不必再处理 Stripe 仪表板或 Stripe API/SDK。这个库为您提供了一个很好的抽象,应该覆盖大多数订阅支付用例。
让我们通过一个快速示例来看它是如何工作的。假设您有一个类似于 Cursor(IDE)曾经有的计费计划:每月 20 美元,您可以获得 500 次 API 完成 + 2000 次标签完成,您可以购买额外的 API 积分,任何额外使用将按超额计费。
您在 TypeScript 中定义您的计划:
<pre><code> {
name: "Pro",
description: "Cursor Pro plan",
price: [{ amount: 2000, currency: "usd", interval: "month" }],
features: {
api_completion: {
pricePerCredit: 1, // 每个单位 1 美分
trackUsage: true, // 启用使用计费
credits: { allocation: 500 },
displayName: "API Completions",
},
tab_completion: {
credits: { allocation: 2000 },
displayName: "Tab Completions",
},
},
}
</code></pre>
然后在 CLI 中,您运行 `init` 命令,它会创建数据库表和一些 API 处理程序。运行 `sync` 将计划同步到您的 Stripe 账户并创建一个 webhook 端点。当创建订阅时,库会自动将 500 次 API 完成积分和 2000 次标签完成积分授予用户。续订和升级/降级会被合理处理。
消费代码看起来像这样:
<pre><code> await billing.credits.consume({
userId: user.id,
key: "api_completion",
amount: 1,
});
</code></pre>
如果他们想允许用户手动充值:
<pre><code> await billing.credits.topUp({
userId: user.id,
key: "api_completion",
amount: 500, // 购买 500 积分,收费 5.00 美元
});
</code></pre>
同样,我们还有钱包和使用的 API。
如果您自己在 Stripe 上实现这些功能,将会是非常繁琐的工作。您需要在自己的数据库中跟踪所有这些权利,并处理续订、到期、临时授予等。这当然是可行的,尤其是在 AI 编程的帮助下,但您可能最终会构建出一些脆弱且难以维护的东西。
这只是对该库功能的高层次概述。它还支持座位级积分、货币钱包(具有微分精度)、自动充值、强大的故障恢复、税收收集、发票以及开箱即用的定价表。
我为测试编写了一个小玩具应用:<a href="https://snw-test.vercel.app" rel="nofollow">https://snw-test.vercel.app</a>。没有验证,所以请随意使用虚拟邮箱注册,然后使用测试卡订阅计划:4242 4242 4242 4242,任何未来的到期日期,任何 3 位数的 CVV。
截图:<a href="https://imgur.com/a/demo-screenshot-Rh6Ucqx" rel="nofollow">https://imgur.com/a/demo-screenshot-Rh6Ucqx</a>
欢迎尝试!如果您最终使用了这个库,请在仓库中报告任何错误。如果您遇到问题或想聊天,我很乐意提供帮助——我的联系方式在我的 HN 个人资料中。
GitHub: <a href="https://github.com/ClioAI/kw-sdk" rel="nofollow">https://github.com/ClioAI/kw-sdk</a>
大多数人工智能代理框架针对的是代码。编写代码、运行测试、修复错误、重复这个过程。这是可行的,因为代码有一个自然的验证信号:要么有效,要么无效。
这个SDK将知识工作视为一个工程问题:
任务 → 简要说明 → 评分标准(对执行者隐藏) → 工作 → 验证 → 失败? → 重试 → 通过 → 提交
协调者负责协调子代理、网络搜索、代码执行和文件输入/输出,然后根据无法操控的标准检查自己的工作(评分标准是在单独的调用中生成的,执行者从未直接看到它)。
我们最初将其构建为一个用于知识任务的强化学习训练工具。评分标准就是奖励函数。如果你在知识工作上训练模型,简要说明→评分标准→执行→验证的循环为通常没有奖励信号的任务提供了一个结构化的奖励信号。
知识工作与代码有什么不同?(除了反馈循环)
我认为目前的代理在处理知识工作时缺少一些功能。我尝试在这个版本中包含这些功能。例如:
探索模式:映射解决方案空间,识别集合级别的差距,并提供选项。
大多数代理优化单一答案,最终得到一个中位数答案。对于战略、设计和创意问题,你希望看到选项、权衡和可以采取的行动。探索模式生成N种不同的方法,每种方法都有明确的假设和反事实(“如果X有效,如果Y失效”)。输出以集合级别的差距结束,即整个集合遗漏的角度。这些差距往往比具体的观点更有价值。我认为这是我们许多人每天都在做的事情,但目前没有代理能够直接捕捉到这一点。请参见<a href="https://github.com/ClioAI/kw-sdk/blob/main/examples/explore_mode.py" rel="nofollow">https://github.com/ClioAI/kw-sdk/blob/main/examples/explore_mode.py</a>及其输出,以了解这与众不同之处。
检查点:对于许多AI代理,尤其是多代理系统,我可以看到哪里出了问题,但无法从同一阶段运行推理。(或者你可能希望在代理完成一些任务(如搜索)并开始考虑想法后进行多次探索。)我在回滚时经常使用这个功能,并认为这是一个很好的特性,可以再次运行或从特定检查点分叉。
关于验证循环的说明:
验证步骤是实际杠杆所在。一个能够准确评估自己工作与评分标准的模型,比一个仅能生成稍微更好初稿的模型更有价值。评分标准使质量变得清晰——对代理、对人类,甚至可能对训练信号。
我喜欢这个SDK的一些特点:
- 你可以传递一个远程执行环境(包括将浏览器作为沙箱),它都能正常工作。可以是Docker、e2b、你的本地环境,任何东西,模型将在你的上下文中执行命令,并根据反馈循环进行迭代。代码执行在这里是一种协议。
- 工具调用:我意识到你不需要复杂的函数。模型擅长编写终端代码,并可以根据反馈进行迭代,因此你可以直接传递上下文中的函数,模型将执行,或者你可以传递文档,模型将编写代码。(与Anthropic的程序化工具调用相同。)详细信息请见:<a href="https://github.com/ClioAI/kw-sdk/blob/main/TOOL_CALLING_GUIDE.md" rel="nofollow">https://github.com/ClioAI/kw-sdk/blob/main/TOOL_CALLING_GUIDE.md</a>
最后,一些指南:
- SDK指南:<a href="https://github.com/ClioAI/kw-sdk/blob/main/SDK_GUIDE.md" rel="nofollow">https://github.com/ClioAI/kw-sdk/blob/main/SDK_GUIDE.md</a>
- 可扩展性。请参见我添加新模式的奇异示例:<a href="https://github.com/ClioAI/kw-sdk/blob/main/examples/custom_mode_bizarro.py" rel="nofollow">https://github.com/ClioAI/kw-sdk/blob/main/examples/custom_mode_bizarro.py</a>
- 处理文件:<a href="https://github.com/ClioAI/kw-sdk/blob/main/examples/with_files.py" rel="nofollow">https://github.com/ClioAI/kw-sdk/blob/main/examples/with_files.py</a>
- 这是简单的,但我喜欢CSV示例:<a href="https://github.com/ClioAI/kw-sdk/blob/main/examples/csv_research_and_calc.py" rel="nofollow">https://github.com/ClioAI/kw-sdk/blob/main/examples/csv_research_and_calc.py</a>
- 远程执行:<a href="https://github.com/ClioAI/kw-sdk/blob/main/examples/with_custom_executor.py" rel="nofollow">https://github.com/ClioAI/kw-sdk/blob/main/examples/with_custom_executor.py</a>
还有很多其他内容。这个项目经过了Opus的完全重构,考虑到重新设计,发布可能花费了很多时间。
MIT许可证。期待你的反馈。
HN(Hacker News)以丰富的讨论为核心。我们希望将HN的体验提升到一个新的层次——引入熟悉的键盘优先导航,发掘线程中的有趣观点,并快速了解长线程的要点,以便我们决定探索哪些话题。因此,我们在一年前构建了HN Companion,并一直在不断完善它。
试试这个:<a href="https://app.hncompanion.com" rel="nofollow">https://app.hncompanion.com</a>,或者作为Firefox/Chrome的扩展程序使用:[0]。
大多数AI摘要通过将讨论线程压缩成一大段文本,剥夺了对话中的声音。这使得阅读HN讨论的乐趣消失。相反,HN Companion的工作方式不同——它理解线程的层级结构、投票模式和对立观点——这一切都使HN变得有趣。可以把它想象成将多个层级中相关的讨论聚集成一个组,并呈现代表每个组的评论。它保留了逐字文本和反向链接,这样你就不会失去上下文,并可以从那个点继续对话。以下是摘要功能的工作原理[1]。
我们最初将其构建为一个开源浏览器扩展。但很快我们发现人们对安装它有所顾虑。因此,我们将相同的体验构建为一个网页应用,具备所有功能。这帮助人们了解它的工作原理,并可以在移动设备上使用(在浏览器中或作为渐进式Web应用)。这现在成为了一个在将新功能带入浏览器扩展之前进行尝试的游乐场。
一年前我们做了一个Show HN[2],并根据用户反馈添加了以下功能:
* 缓存摘要——摘要在我们的服务器上生成并缓存。这显著提高了速度。你仍然可以选择使用自己的API密钥或通过Ollama使用本地模型。
* 我们的系统提示在扩展的设置页面中可用。你可以根据自己的需求进行自定义。
* 根据积分、评论、时间或默认排序顺序对首页(/home、/show等)的帖子进行排序。
* 我们尝试对一个开放权重模型进行微调以进行摘要,但发现只要有良好的系统提示和用户提示,前沿模型也能提供类似质量的结果。因此我们没有使用微调模型,但你可以在本地运行它们。
浏览器扩展不会跟踪任何使用情况或分析。代码是开源的[3]。
我们希望继续改进HN Companion,特别是添加诸如关注作者、关于作者的笔记、草稿帖子等功能。
在这里查看某个帖子的实际效果 <a href="https://app.hncompanion.com/item?id=46937696" rel="nofollow">https://app.hncompanion.com/item?id=46937696</a>。
我们非常希望听到你的反馈,了解如何使这个工具对你的HN阅读更加有用。
[0] <a href="https://hncompanion.com/#download" rel="nofollow">https://hncompanion.com/#download</a>
[1] <a href="https://hncompanion.com/how-it-works" rel="nofollow">https://hncompanion.com/how-it-works</a>
[2] <a href="https://news.ycombinator.com/item?id=42532374">https://news.ycombinator.com/item?id=42532374</a>
[3] <a href="https://github.com/hncompanion/browser-extension" rel="nofollow">https://github.com/hncompanion/browser-extension</a>
你好,HN,
我们创建了ClearDemand,以解决法律起草中的“幻觉”问题。通用的大型语言模型(LLMs)在写作方面表现出色,但在准确性上却很差——这在引用医疗证据时是一个致命缺陷,尤其是在撰写索赔信时。
问题:人身伤害律师事务所需要花费数百小时手动总结非结构化的医疗记录(PDF),以撰写索赔信。如果遗漏了特定的伤害或治疗日期,和解金额就会下降。
解决方案:ClearDemand是一个起草平台,可以处理原始案件文件(警察报告、医疗记录、发票),进行光学字符识别(OCR),并使用检索增强生成(RAG)技术生成经过来源验证的草稿。
基于来源的生成:生成的信件中的每个索赔都包括一个引用,链接回源文件中的特定页面。
跨案件搜索:我们对事务所的整个历史进行索引,使律师能够在过去的案件中搜索相似的事实模式或成功的论点。
风格匹配:它学习事务所特定的语气和结构,以确保输出不显得像通用的人工智能。
我们提供14天的试用期,以验证OCR管道在处理您最复杂的扫描PDF时的表现。
我们非常欢迎您对我们的引用用户界面提供反馈!
谢谢。
嗨,HN
我是一名产品设计师,不是工程师,我创建了一个可以直接在浏览器中玩的每日单词谜题。
市面上有很多类似拼字蜂的游戏,大多数都非常适合单人游戏。而“bee with me”在设计上有所不同。它是为协作而构建的:
- 每个人都可以在自己的设备上玩
- 每个人都可以自己输入单词
- 每个人都可以独立地重新排列棋盘
而所有的“天才”进度都是共享的。
我把这个作为一个副项目来做,因为我喜欢单词游戏,并希望能有一个可以快速玩耍而没有摩擦的游戏——同时我也想看看作为一个非工程师,我能做到什么。
Lovable 处理了大部分应用逻辑和连接,而我专注于游戏设计、用户体验以及调整单词列表,以确保游戏既具挑战性又不至于让人沮丧。
我非常欢迎反馈——特别是在难度平衡、用户体验或任何让人感到困惑或不公平的方面。
游戏链接: [https://wannabeewith.me](https://wannabeewith.me)
感谢你查看这个项目——如果你对构建、设计决策或发布过程有任何问题,我很乐意回答。
—— Cat