【GoLang】调用llm时提示词prompt的介绍以及使用方式

介绍

提示词是一种与大模型交互的对话格式, 它以 JSON 格式定义了一个消息列表(messages),包含了系统消息和用户消息。

我们向AI提问时,其实发给AI的都是提示词,别看我们只是简单输入了一句话,但大模型内部其实自动帮我们把这句话转换为提示词的形式了。

但是我们现在如何手动来设置提示词呢?请看下文

设置提示词

总的流程就是:声明 chatTemplate 表示提示词模板,声明 input 用于填充 chatTemplate 模板中的占位符,最终二者结合得到prompt。

Go 复制代码
package main

import (
	"context"
	"fmt"
	"github.com/tmc/langchaingo/llms"
	"github.com/tmc/langchaingo/llms/openai"
	"github.com/tmc/langchaingo/prompts"
)

func main() {
	// 初始化大模型llm
	llm, _ := openai.New(
		openai.WithModel("deepseek-reasoner"),
		openai.WithToken("sk-2c4e9ad917cf48d8ad834dc5b98e7e01"),
		openai.WithBaseURL("https://api.deepseek.com"),
	)

	// 什么提示词模板
	chatTemplate := prompts.NewChatPromptTemplate([]prompts.MessageFormatter{
		prompts.NewSystemMessagePromptTemplate("你是一个有帮助的助手,擅长回答天气相关问题。", nil),
		prompts.NewHumanMessagePromptTemplate("{{.greeting}}!今天{{.city}}的天气怎么样?", []string{"greeting", "city"}),
	})

	// input 用于填充 chatTemplate 模板中的占位符变量
	input := map[string]interface{}{
		"greeting": "早上好",
		"city":     "北京",
	}

	// 根据模板和变量生成为最终的提示词
	prompt, _ := chatTemplate.Format(input)

	// 通过大模型llm调用API
	ctx := context.Background()
	completion, _ := llms.GenerateFromSinglePrompt(
		ctx,
		llm,
		prompt,
	)

	// 输出大模型生成的答复
	fmt.Println(completion)
}

使用提示词的好处

好处1. 支持对话上下文

messages 数组允许你提供多轮对话的历史记录,模型可以根据之前的消息生成更符合上下文的回复。

bash 复制代码
"messages": [
  {"role": "system", "content": "You are a helpful assistant."}, // 开启对话时生成的
  {"role": "user", "content": "What is the capital of France?"}, // 用户生成的
  {"role": "assistant", "content": "The capital of France is Paris."}, // ai生成的
  {"role": "user", "content": "What about Spain?"}    // 用户生成的
]

在这个例子中,模型知道用户之前问了法国的首都,现在问西班牙的首都,可以直接回答:"The capital of Spain is Madrid.",而不需要重复澄清。

好处2. 区分角色

通过 role 字段,模型可以区分不同身份(系统、用户、AI)发送消息,从而采取不同的处理方式。

  • role: "system":设置模型的全局行为或角色,通常只在对话开始时提供一次。
  • role: "user":表示用户的输入,模型会直接回应。
  • role: "assistant":表示模型的回复,通常由模型生成,但也可以手动添加以模拟对话历史。

好处3. 兼容性和标准化

这种 messages 格式是 OpenAI 的 Chat API 标准格式(Chat Completions API),被广泛采用。

许多 LLM 提供商(如 DeepSeek、Anthropic)都兼容这种格式,因为它已经成为行业标准。

相关推荐
七夜zippoe19 小时前
OpenClaw Prompt 工程:从角色设定到 Skill 封装的 Agent 输出质量方法论
java·服务器·prompt·openclaw·skill封装
神奇霸王龙21 小时前
2026旗舰六阶段MCP流水线实战指南
人工智能·ai·ai作画·prompt·aigc·mcp
安逸sgr1 天前
如何减少 Prompt 引起的幻觉和答非所问?
人工智能·ai·大模型·prompt·agent·智能体
码云骑士1 天前
85-Prompt是一门工程-结构化分层-System-vs-User-Prompt
python·prompt
Aloudata2 天前
Prompt 驱动分析 vs Skill 驱动分析:企业 AI 分析如何从会问走向可复用
大数据·人工智能·数据分析·prompt·skill·语义层
奈斯先生Vector2 天前
大模型 Agentic Workflow 架构解构:异构 API 调度与 Token 路由的多模态系统设计
开发语言·前端·架构·prompt·aigc·音视频
大模型momo2 天前
AI 编程工程化:从 Prompt 到 Harness
人工智能·prompt·编程·agent
方乐寺村2 天前
解密prompt系列. MCP - 工具演变 & MCP基础
网络·prompt
奈斯先生Vector2 天前
不再手写 Prompt 链:用工作流编译器构建可验证的多模型 Agent 运行时
prompt
IT小盘2 天前
12-Prompt不等于一句话-System-User-Context三层结构
java·windows·prompt