İstem sayısı

İstem değiştirme, bir uygulama geliştirici olarak kendinizi etkilemenin üretken yapay zeka modellerinin çıktısı. Örneğin, LLM'leri kullanırken, farklı türde üslubu, biçimini, uzunluğunu ve diğer özelliklerini etkileyen istemler modellerin yanıtları.

Genkit, istemlerin kod olduğu ilkesi doğrultusunda tasarlanmıştır. Siz yazar, istemlerinizi kaynak dosyalarda tutmak, aynı sürümü kullanarak bu dosyalardaki değişiklikleri izlemek ve bunları kodla birlikte dağıtarak, kodunuz için kullandığınız denetim sistemini üretken yapay zeka modellerinizi kullanabilirsiniz.

Çoğu geliştirici, içerdiği Dotprompt kitaplığının , Genkit'teki istemlerle çalışma ihtiyaçlarını karşılıyor. Ancak, alternatif olarak yaklaşımları doğrudan istemlerle çalışmayla da desteklemektedir.

İstemleri tanımlama

Genkit'in oluşturma yardımcı işlevleri dize istemlerini kabul eder. yaygın kullanım alanları için modeller oluşturabilirsiniz.

Go

request := ai.GenerateRequest{Messages: []*ai.Message{
  {Content: []*ai.Part{ai.NewTextPart("You are a helpful AI assistant named Walt.")}},
}}
model.Generate(context.Background(), &request, nil)

Çoğu durumda, isteminize kullanıcı tarafından sağlanan bazı girişleri dahil etmeniz gerekir. Bu öğeleri aşağıdaki gibi oluşturmak için bir işlev tanımlayabilirsiniz:

Go

func helloPrompt(name string) *ai.Part {
  prompt := fmt.Sprintf("You are a helpful AI assistant named Walt. Say hello to %s.", name)
  return ai.NewTextPart(prompt)
}
request := ai.GenerateRequest{Messages: []*ai.Message{
  {Content: []*ai.Part{helloPrompt("Fred")}},
}}
response, err := model.Generate(context.Background(), &request, nil)

Ancak kodunuzda istemleri tanımlamayla ilgili bir eksiklik, testin bunları bir akışın parçası olarak ele alabilirsiniz. Genkit, iterasyon yani yineleme sürecini hızlandırmak için kullanarak istemlerinizi tanımlayın ve bunları Geliştirici arayüzünde çalıştırın.

Go

İstemlerinizi Genkit'e kaydetmek için DefinePrompt işlevini kullanın.

type HelloPromptInput struct {
  UserName string
}
helloPrompt := ai.DefinePrompt(
  "prompts",
  "helloPrompt",
  nil, // Additional model config
  jsonschema.Reflect(&HelloPromptInput{}),
  func(ctx context.Context, input any) (*ai.GenerateRequest, error) {
      params, ok := input.(HelloPromptInput)
      if !ok {
          return nil, errors.New("input doesn't satisfy schema")
      }
      prompt := fmt.Sprintf(
          "You are a helpful AI assistant named Walt. Say hello to %s.",
          params.UserName)
      return &ai.GenerateRequest{Messages: []*ai.Message{
          {Content: []*ai.Part{ai.NewTextPart(prompt)}},
      }}, nil
  },
)

İstem işlemi, GenerateRequest değeri döndüren bir işlevi tanımlar. herhangi bir modelle kullanılabilir. İsterseniz bir giriş şeması da tanımlayabilirsiniz. Bu, akışın giriş şemasına benzer. İstemler, veya çıkış jetonlarının sayısını kontrol edin.

Bu istemi, sağlanan yardımcı işlevle bir model isteği olarak oluşturabilirsiniz. İstemin beklediği giriş değişkenlerini ve çağrılacak modeli sağlayın.

Go

request, err := helloPrompt.Render(context.Background(), HelloPromptInput{UserName: "Fred"})
if err != nil {
  return err
}
response, err := model.Generate(context.Background(), request, nil)

Genkit Geliştirici kullanıcı arayüzünde, bu şekilde tanımladığınız herhangi bir istemi çalıştırabilirsiniz. Böylece, şu kapsamın dışındaki her bir istemle ayrı ayrı denemeler yapabilirsiniz: akışlar ve akışlar yer alır.

Nokta istemi

Genkit, ek özellikler içeren Dotprompt kitaplığını içerir. işlev görebilir.

  • .prompt kaynak dosyadan istemler yükleniyor
  • Tutma çubuğu tabanlı şablonlar
  • Çok dönüşlü istem şablonları ve multimedya içeriği için destek
  • Kısa giriş ve çıkış şeması tanımları
  • generate() ile akıcı kullanım