【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)都兼容这种格式,因为它已经成为行业标准。

相关推荐
嘀咕博客18 小时前
Visual Prompt Builder-AI 提示词可视化工具
人工智能·prompt·ai工具
top_designer1 天前
游戏优化“屠龙技”:AI+Substance Painter LOD烘焙工作流
人工智能·游戏·prompt·aigc·设计师·substance painter·游戏美术
CodeNerd影1 天前
prompt提示词工程---如何让大模型更听得懂人话
笔记·python·prompt
小苑同学1 天前
PaperReading:《Manipulating Multimodal Agents via Cross-Modal Prompt Injection》
人工智能·网络安全·语言模型·prompt·安全性测试
shy_snow1 天前
Prompt Optimizer 提示词优化器安装使用
prompt
这张生成的图像能检测吗1 天前
(论文速读)Prompt-Free Diffusion:告别提示工程的烦恼
人工智能·深度学习·计算机视觉·prompt·图像生成·超分辨率重建·clip
zzywxc7872 天前
如何利用AI技术快速生成专业级的PPT和视频内容
人工智能·自动化·prompt·测试用例·powerpoint·音视频·ai编程
邂逅星河浪漫2 天前
【Spring AI】Ollama大模型-智能对话实现+项目实战(Spring Boot + Vue)
java·人工智能·spring boot·vue·prompt·agent·ollama
海底的星星fly3 天前
【Prompt学习技能树地图】DeepSeek专家模式下的Prompt工程进阶学习实践
人工智能·语言模型·prompt