上下文工程中提示词编写的原则和技巧

摘要自anthropic:Effective context engineering for AI agents

引言:从单一提示到上下文状态管理

在构建复杂的 AI 智能体(Agent)时,我们关注的焦点已不再仅仅是如何写出“魔法”般的提示词(Prompt)。大型语言模型(LLM)的推理过程是一个多轮、动态的状态管理过程。因此,我们需要从“提示工程”(Prompt Engineering)迈向上下文工程(Context Engineering)。

提示工程侧重于如何编写和组织 LLM 指令以获得最佳结果。而上下文工程,作为提示工程的自然演进,则关注于在 LLM 推理过程中策划和维护最优的代币集合(信息)的整套策略。系统提示(System Prompts)是 Agent 初始、静态上下文的核心组成部分,其编写质量直接决定了 Agent 的初始效用和指导方向。

有效的上下文工程要求我们“在上下文中思考”(thinking in context),即如何利用有限的上下文窗口,找到最小可能集合的高信号代币,最大限度地提高所需结果的可能性。

阅读更多

编写高效工具的最佳实践指南(精华版)

原文来自anthropic:Writing effective tools for agents — with agents

本文概述了为AI代理构建高效工具的关键策略,强调了工具对代理效能的重要性。文章详细介绍了如何通过原型构建、综合评估以及与AI代理(如Claude Code)协作来优化工具。它还阐述了编写高质量工具的原则,包括选择合适的工具、进行命名空间管理、返回有意义的上下文、优化令牌效率以及进行提示工程。最终目标是使代理能够更直观、高效地解决现实世界中的各种任务。

阅读更多

提示词技巧之元提示

介绍元提示词的概念和应用,通过模版化和反馈迭代机制,帮助生成更高质量的AI提示词,提高大语言模型的输出效果。

阅读更多

CGO封装CPP库的一些最佳实践

本文同时提供以下语言的翻译:English

背景

最近业务上需要复用CPP编写的客户端SDK库,为了让团队主力语言Golang能够顺利接入SDK,因此使用了CGO桥接技术将C++11编写的SDK库封装成生产环境可用的Golang SDK,在翻阅了网上大部分关于cgo的中英文资料后,发现其中尤其是实现Go调用CPP库还是有非常多需要注意的细节,大部分中文资料都是以简单的C++的STL库函数封装为例点到为止,本文在前人基础之上总结了一系列封装复杂CPP库时的最佳实践的tips,希望能填补相关资料的空白。

阅读更多

Best Practices for Wrapping CPP Library with CGO

Background

Recently, our business needed to reuse a client SDK library written in CPP. To enable our team’s primary language, Golang, to seamlessly integrate with this SDK, we used CGO bridging technology to wrap the C++11 SDK library into a production-ready Golang SDK. After reviewing most of the online resources about CGO in both Chinese and English, I found there are many important details to consider when implementing Go calls to CPP libraries. Most Chinese materials only briefly mention simple examples of wrapping C++ STL library functions. Building on previous work, this article summarizes a series of best practices for wrapping complex CPP libraries, aiming to fill the gap in related documentation.

阅读更多

用Go STL查询DB引发的内存泄露

本文同时提供以下语言的翻译:English

问题起因

这几天有一个 Go API service 经过定时监控发现占用的内存不断上涨,内存从初始的 70M 一直上升到超过 1G 直到吃光内存退出,基本上就可以断定是存在内存泄露的问题了,但是因为自带垃圾回收的语言出现内存泄露的情况较少,如果存在那一定是大问题,因此有了下文详细的排查过程,为日后处理此类问题积累经验。

阅读更多

Memory Leak Caused by Using Go STL to Query DB

Problem Origin

Recently, a Go API service was found to have continuously increasing memory usage through regular monitoring. The memory usage rose from the initial 70MB to over 1GB until it ran out of memory and crashed. This clearly indicated a memory leak issue. Since memory leaks rarely occur in languages with built-in garbage collection, if there is one, it must be a significant problem. Therefore, the following detailed investigation process was carried out to accumulate experience for handling similar issues in the future.

阅读更多

理解 CPU Cache 对并发性能的影响

一般来说每个 CPU 核有 L1 和 L2 缓存,L3是共享缓存
以缓存行为单位存储,通常是 64 字节为一行

这种利用局部性原理的缓存是数组访问比链表访问快的主要原因

阅读更多

Go中反序列化后的类型转换问题记录

在 Go 语言的世界中,类型转换基本上都是很显式的,但最近在编写 web 后台的时候需要进行 context 之间的共享传值,常常就会出现 interface{} 的转换,
最常见的做法就是进行 type assertion 来进行转换,正常来讲作为编写者我们都清楚自己数据的具体类型,然鹅,在某些中间步骤之后,我们的原始类型没有变,但是可能
会被中间类型所迷惑

最近发现到的是JSON反序列化时所做的隐式类型转换,起因是对 interface{} 的一次 assertion 报错

阅读更多

常见并发模式

本文同时提供以下语言的翻译:English

Go语言的并发模式是其最具特色的编程范式之一。本文总结了在Go开发中最常见的几种并发模式,包括请求-接收模式、单一状态者模式、生产-消费模式、Pipeline流水线模式等。这些模式能够帮助我们更好地组织和管理goroutine,使并发程序更加健壮和优雅。通过这些模式的学习,你将能够更好地掌握Go语言的并发特性,写出更高质量的并发代码。

阅读更多