watsonx-go
is a watsonx Client for Go
go get -u github.com/IBM/watsonx-go
import (
wx "github.com/IBM/watsonx-go/pkg/models"
)
export WATSONX_API_KEY="YOUR WATSONX API KEY"
export WATSONX_PROJECT_ID="YOUR WATSONX PROJECT ID"
Create a client:
client, _ := wx.NewClient()
Or pass in the required secrets directly:
client, err := wx.NewClient(
wx.WithWatsonxAPIKey(apiKey),
wx.WithWatsonxProjectID(projectID),
)
Generation:
result, _ := client.GenerateText(
"meta-llama/llama-3-1-8b-instruct",
"Hi, who are you?",
wx.WithTemperature(0.4),
wx.WithMaxNewTokens(512),
)
println(result.Text)
Stream Generation:
dataChan, _ := client.GenerateTextStream(
"meta-llama/llama-3-1-8b-instruct",
"Hi, who are you?",
wx.WithTemperature(0.4),
wx.WithMaxNewTokens(512),
)
for data := range dataChan {
print(data.Text) // print the result as it's being generated
}
Embedding | Single query:
result, _ := client.EmbedQuery(
"ibm/slate-30m-english-rtrvr",
"Hello, world!",
wx.WithEmbeddingTruncateInputTokens(2),
wx.WithEmbeddingReturnOptions(true),
)
embeddingVector := result.Results[0].Embedding
Embedding | Multiple docs:
result, _ := clientl.EmbedDocuments(
"ibm/slate-30m-english-rtrvr",
[]string{"Hello, world!", "Goodbye, world!"},
wx.WithEmbeddingTruncateInputTokens(2),
wx.WithEmbeddingReturnOptions(true),
)
for _, doc := range result.Results {
fmt.Println(doc.Embedding)
}
export WATSONX_API_KEY="YOUR WATSONX API KEY"
export WATSONX_PROJECT_ID="YOUR WATSONX PROJECT ID"
go test ./...
Run the following command to run pre-commit formatting:
git config --local core.hooksPath .githooks/
There are two methods for configuring the watsonx client to be used with the test environment:
Specify the Watsonx URL and IAM endpoint using environment variables:
export WATSONX_URL_HOST="us-south.ml.test.cloud.ibm.com"
export WATSONX_IAM_HOST="iam.test.cloud.ibm.com"
Specify the Watsonx URL and IAM endpoint through the parameters of the NewClient function:
client, err := wx.NewClient(
wx.WithURL("us-south.ml.test.cloud.ibm.com"),
wx.WithIAM("iam.test.cloud.ibm.com"),
wx.WithWatsonxAPIKey(apiKey),
wx.WithWatsonxProjectID(projectID),
)