跳转到内容

提示词

在 Blades 框架中,Prompt 是与大型语言模型(LLM)交互的核心组件。它表示用户与助手之间交换的消息序列,支持多种类型的消息(系统消息、用户消息、助手消息)以及模板化功能,使开发者能够构建动态和上下文感知的 AI 应用程序。

Blades 支持多种消息类型,每种都有特定的角色:

  • RoleUser: 表示最终用户的输入
  • RoleSystem: 提供系统级别的指令和上下文
  • RoleAssistant: 表示模型的输出
  • RoleTool: 表示由工具生成的消息
// Message represents a single message in a conversation.
type Message struct {
ID string `json:"id"`
Role Role `json:"role"`
Parts []Part `json:"parts"`
Author string `json:"author"`
InvocationID string `json:"invocationId,omitempty"`
Status Status `json:"status"`
FinishReason string `json:"finishReason,omitempty"`
TokenUsage TokenUsage `json:"tokenUsage,omitempty"`
Metadata map[string]any `json:"metadata,omitempty"`
}
// TextPart is plain text content.
type TextPart struct {
Text string `json:"text"`
}

最基本的 Prompt 创建方式是直接指定消息内容:

input := blades.UserMessage("What is the capital of France?")

可以通过 Agent 进行定义系统指令信息:

model := openai.NewModel("gpt-5", openai.Config{
APIKey: os.Getenv("OPENAI_API_KEY"),
})
agent, err := blades.NewAgent(
"Basic Agent",
blades.WithModel(model),
blades.WithInstruction("You are a helpful assistant that provides detailed and accurate information."),
)
model := openai.NewModel("gpt-5", openai.Config{
APIKey: os.Getenv("OPENAI_API_KEY"),
})
agent, err := blades.NewAgent(
"Instructions Agent",
blades.WithModel(model),
blades.WithInstruction("Respond as a {{.style}}."),
)
if err != nil {
log.Fatal(err)
}
// Create a new session with state variables
session := blades.NewSession(map[string]any{
"style": "robot",
})
input := blades.UserMessage("Tell me a joke.")
runner := blades.NewRunner(agent, blades.WithSession(session))
message, err := runner.Run(context.Background(), input)
if err != nil {
panic(err)
}
log.Println(session.State())
log.Println(message.Text())
  • 明确系统指令: 在系统消息中提供清晰、具体的指令,有助于模型更好地理解任务要求。
  • 合理使用模板: 利用模板功能可以提高代码复用性和可维护性,特别是在需要动态生成 Prompt 的场景中。
  • 管理上下文长度: 注意控制 Prompt 的长度,避免超出模型的最大上下文限制。
  • 错误处理: 始终检查模板渲染和 Prompt 构建过程中的错误,确保应用程序的健壮性。