
前面介绍了GenerateFromSinglePrompt和Call最终都调用了
GenerateContent,其实也可以直接调用它,看看下面的例子
messages := []llms.MessageContent{
llms.TextParts(llms.ChatMessageTypeSystem, "你是一个英文翻译员,需要将<>括起来的英文翻译为中文,用JSON格式输出:原始文本、翻译文本"),
llms.TextParts(llms.ChatMessageTypeHuman, "<hello world>"),
}
content, err := llm.GenerateContent(ctx, messages, llms.WithJSONMode())它先定义了MessageContent数组,里面传入了系统提示词和用户提示词。调用的时候制定了返回值类型为json格式。github.com/tmc/langchaingo@v0.1.13/llms/generatecontent.go可以看到Message的定义如下:
type MessageContent struct {
Role ChatMessageType
Parts []ContentPart
}type ChatMessageType stringtype ContentPart interface {
isPart()
}func TextParts(role ChatMessageType, parts ...string) MessageContent {
result := MessageContent{
Role: role,
Parts: []ContentPart{},
}
for _, part := range parts {
result.Parts = append(result.Parts, TextPart(part))
}
return result
}其中TextPart定义如下
func TextPart(s string) TextContent {
return TextContent{Text: s}
}type TextContent struct {
Text string
}
func (tc TextContent) String() string {
return tc.Text
}
func (TextContent) isPart() {}前面介绍GenerateFromSinglePrompt和Call都是把提示词作为角色为用户,类型为文本的参数传递下来的。
指定返回值类型为json就更简单了,直接修改可选项参数即可,它最后作用于我们创建请求参数的地方,指定返回值类型为json
func WithJSONMode() CallOption {
return func(o *CallOptions) {
o.JSONMode = true
}
}req := &openaiclient.ChatRequest{
Model: opts.Model,
StopWords: opts.StopWords,
Messages: chatMsgs,
StreamingFunc: opts.StreamingFunc,
Temperature: opts.Temperature,
N: opts.N,
FrequencyPenalty: opts.FrequencyPenalty,
PresencePenalty: opts.PresencePenalty,
MaxCompletionTokens: opts.MaxTokens,
ToolChoice: opts.ToolChoice,
FunctionCallBehavior: openaiclient.FunctionCallBehavior(opts.FunctionCallBehavior),
Seed: opts.Seed,
Metadata: opts.Metadata,
}
if opts.JSONMode {
req.ResponseFormat = ResponseFormatJSON
}本文分享自 golang算法架构leetcode技术php 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!