当前位置: 首页> 文旅> 酒店 > 王爷的醋坛子又翻了免费阅读_中国最新军力排名_友好链接_百度的营销策略

王爷的醋坛子又翻了免费阅读_中国最新军力排名_友好链接_百度的营销策略

时间:2025/7/10 21:18:41来源:https://blog.csdn.net/theaipower/article/details/146770090 浏览次数:1次
王爷的醋坛子又翻了免费阅读_中国最新军力排名_友好链接_百度的营销策略

在这里插入图片描述

1. 中英文翻译功能

提示词为:你是一个只能进行中英文翻译的机器。请翻译这段文字到{{.outpugLang}}:{{.input}}

比如:你是一个只能进行中英文翻译的机器。请翻译这段文字到英文:我是阿里qwen大模型

在这里插入图片描述
在这里插入图片描述

2.代码编写

相对上一节的功能中,本次用到了prompt提示词编写相关功能。

先贴一份完整代码。

package mainimport ("context""github.com/gin-gonic/gin""github.com/tmc/langchaingo/llms""github.com/tmc/langchaingo/llms/ollama""github.com/tmc/langchaingo/prompts""net/http"
)func main() {r := gin.Default()v1 := r.Group("/api/v1"){v1.POST("/translate", translator)}r.Run(":8080")
}func translator(c *gin.Context) {var requestData struct {OutputLang string `json:"outputLang"`Text       string `json:"text"`}if err := c.BindJSON(&requestData); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid Json."})return}//拼接提示词,prompt是有两条数据的一个切片promptprompt := prompts.NewChatPromptTemplate([]prompts.MessageFormatter{prompts.NewSystemMessagePromptTemplate("你是一个只能进行中英文翻译的机器。", nil),prompts.NewHumanMessagePromptTemplate(`翻译这段文字到 {{.outputLang}}:{{.text}}`,[]string{".outputLang", "text"}),})//填充promptvals := map[string]any{"outputLang": requestData.OutputLang,"text":       requestData.Text,}//把vals填充到prompt中messages, _ := prompt.FormatMessages(vals)//默认是访问本地ollama,如果需要访问别的地址的ollama,可以通过Getenv环境变量参数来指定。llm, err := ollama.New(ollama.WithModel("qwen"))if err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})return}content := []llms.MessageContent{llms.TextParts(messages[0].GetType(), messages[0].GetContent()),llms.TextParts(messages[1].GetType(), messages[1].GetContent()),}response, _ := llm.GenerateContent(context.Background(), content)c.JSON(http.StatusOK, response)
}

构建+拼接提示词

在这里插入图片描述
首先定义一个用于生成翻译任务的提示模板。

prompts.NewChatPromptTemplate 创建了一个聊天提示模板,包含两条消息格式化器:
第一条是系统消息模板,内容为“你是一个只能进行中英文翻译的机器。”,用于向语言模型明确其角色和功能。

第二条是用户消息模板,内容为翻译这段文字到 {{.outputLang}}:{{.text}},其中{{.outputLang}}{{.text}}是模板变量,分别表示目标语言和需要翻译的文本。[]string{".outputLang", "text"}指定了模板变量的名称。

填充prompt

在这里插入图片描述
定义一个vals字典,用于存储模板变量的值。requestData.OutputLang表示用户指定的目标语言,requestData.Text表示需要翻译的原始文本。这些值将被填充到前面定义的提示模板中。

构造输入内容

在这里插入图片描述

content是一个llms.MessageContent类型的切片,用于存储输入到语言模型的内容。llms.TextParts方法将消息的类型和内容分别提取出来,构造为MessageContent对象。

调用llm.GenerateContent(context.Background(), content)方法,将构造好的输入内容传递给语言模型,生成翻译结果。response变量存储了语言模型返回的翻译结果。

来看看MessageContent结构体中都有些什么。

type MessageContent struct {Role  ChatMessageTypeParts []ContentPart
}

Role 是一个 ChatMessageType 类型的字段,表示消息的角色。在聊天系统中,消息通常有不同类型的角色,比如系统角色、用户角色等等。

Parts 是一个 ContentPart 类型的切片,表示消息的内容部分。消息的内容可能由多个部分组成。

那么对于代码:

content := []llms.MessageContent{llms.TextParts(messages[0].GetType(), messages[0].GetContent()),llms.TextParts(messages[1].GetType(), messages[1].GetContent()),
}

content 是一个 MessageContent 切片,包含了两个消息的内容部分:

第一个消息(系统消息):
Role:SystemMessage(系统消息的角色)
Parts:
类型:“text”(文本类型)
值:“你是一个只能进行中英文翻译的机器。”(系统消息的内容)

第二个消息(用户消息):
Role:HumanMessage(用户消息的角色)
Parts:
类型:“text”(文本类型)
值:“翻译这段文字到 [目标语言]:[需要翻译的文本]”(用户消息的内容,其中 [目标语言] 和 [需要翻译的文本] 是动态填充的值)

所以构造的content内容是:

content := []llms.MessageContent{{Role: SystemMessage,Parts: []ContentPart{{Type:  "text",Value: "你是一个只能进行中英文翻译的机器。",},},},{Role: HumanMessage,Parts: []ContentPart{{Type:  "text",Value: "翻译这段文字到 中文:Hello, world!",},},},
}
关键字:王爷的醋坛子又翻了免费阅读_中国最新军力排名_友好链接_百度的营销策略

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: