パブリッシャーのチャットモデルと連携するプロンプトを作成して、単体テストを生成します。
コードサンプル
C#
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある C# の設定手順を完了してください。詳細については、Vertex AI C# API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
using Google.Cloud.AIPlatform.V1;
using System;
using System.Collections.Generic;
using System.Linq;
using Value = Google.Protobuf.WellKnownTypes.Value;
public class PredictCodeGenerationUnitTestSample
{
public string PredictUnitTest(
string projectId = "your-project-id",
string locationId = "us-central1",
string publisher = "google",
string model = "code-bison@001")
{
// Initialize client that will be used to send requests.
// This client only needs to be created once,
// and can be reused for multiple requests.
var client = new PredictionServiceClientBuilder
{
Endpoint = $"{locationId}-aiplatform.googleapis.com"
}.Build();
// Configure the parent resource.
var endpoint = EndpointName.FromProjectLocationPublisherModel(projectId, locationId, publisher, model);
var prefix = @"
Write a unit test for this function:
public static bool IsLeapYear(int year)
{
if (year % 4 == 0)
{
if (year % 100 == 0)
{
if (year % 400 == 0)
{
return true;
}
else
{
return false;
}
}
else
{
return true;
}
}
else
{
return false;
}
}";
var instances = new List<Value>
{
Value.ForStruct(new()
{
Fields =
{
["prefix"] = Value.ForString(prefix),
}
})
};
var parameters = Value.ForStruct(new()
{
Fields =
{
{ "temperature", new Value { NumberValue = 0.5 } },
{ "maxOutputTokens", new Value { NumberValue = 256 } }
}
});
// Make the request.
var response = client.Predict(endpoint, instances, parameters);
// Parse and return the content.
var content = response.Predictions.First().StructValue.Fields["content"].StringValue;
Console.WriteLine($"Content: {content}");
return content;
}
}
Java
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Java の設定手順を完了してください。詳細については、Vertex AI Java API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
import com.google.cloud.aiplatform.v1beta1.EndpointName;
import com.google.cloud.aiplatform.v1beta1.PredictResponse;
import com.google.cloud.aiplatform.v1beta1.PredictionServiceClient;
import com.google.cloud.aiplatform.v1beta1.PredictionServiceSettings;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.Value;
import com.google.protobuf.util.JsonFormat;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class PredictCodeGenerationUnitTestSample {
public static void main(String[] args) throws IOException {
// TODO(developer): Replace this variable before running the sample.
String project = "YOUR_PROJECT_ID";
// Learn how to create prompts to work with a code model to generate code:
// https://cloud.google.com/vertex-ai/docs/generative-ai/code/code-generation-prompts
String instance =
"{ \"prefix\": \"Write a unit test for this function:\n"
+ " def is_leap_year(year):\n"
+ " if year % 4 == 0:\n"
+ " if year % 100 == 0:\n"
+ " if year % 400 == 0:\n"
+ " return True\n"
+ " else:\n"
+ " return False\n"
+ " else:\n"
+ " return True\n"
+ " else:\n"
+ " return False\n"
+ "\"}";
String parameters = "{\n" + " \"temperature\": 0.5,\n" + " \"maxOutputTokens\": 256\n" + "}";
String location = "us-central1";
String publisher = "google";
String model = "code-bison@001";
predictUnitTest(instance, parameters, project, location, publisher, model);
}
// Use Codey for Code Generation to generate a unit test
public static void predictUnitTest(
String instance,
String parameters,
String project,
String location,
String publisher,
String model)
throws IOException {
final String endpoint = String.format("%s-aiplatform.googleapis.com:443", location);
PredictionServiceSettings predictionServiceSettings =
PredictionServiceSettings.newBuilder().setEndpoint(endpoint).build();
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests.
try (PredictionServiceClient predictionServiceClient =
PredictionServiceClient.create(predictionServiceSettings)) {
final EndpointName endpointName =
EndpointName.ofProjectLocationPublisherModelName(project, location, publisher, model);
Value instanceValue = stringToValue(instance);
List<Value> instances = new ArrayList<>();
instances.add(instanceValue);
Value parameterValue = stringToValue(parameters);
PredictResponse predictResponse =
predictionServiceClient.predict(endpointName, instances, parameterValue);
System.out.println("Predict Response");
System.out.println(predictResponse);
}
}
// Convert a Json string to a protobuf.Value
static Value stringToValue(String value) throws InvalidProtocolBufferException {
Value.Builder builder = Value.newBuilder();
JsonFormat.parser().merge(value, builder);
return builder.build();
}
}
Node.js
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Vertex AI Node.js API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
/**
* TODO(developer): Uncomment these variables before running the sample.\
* (Not necessary if passing values as arguments)
*/
// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';
const aiplatform = require('@google-cloud/aiplatform');
// Imports the Google Cloud Prediction service client
const {PredictionServiceClient} = aiplatform.v1;
// Import the helper module for converting arbitrary protobuf.Value objects.
const {helpers} = aiplatform;
// Specifies the location of the api endpoint
const clientOptions = {
apiEndpoint: 'us-central1-aiplatform.googleapis.com',
};
const publisher = 'google';
const model = 'code-bison@001';
// Instantiates a client
const predictionServiceClient = new PredictionServiceClient(clientOptions);
async function callPredict() {
// Configure the parent resource
const endpoint = `projects/${project}/locations/${location}/publishers/${publisher}/models/${model}`;
const prompt = {
prefix:
'Write a unit test for this function: \
def is_leap_year(year): \
if year % 4 == 0: \
if year % 100 == 0: \
if year % 400 == 0: \
return True \
else: \
return False \
else: \
return True \
else: \
return False',
};
const instanceValue = helpers.toValue(prompt);
const instances = [instanceValue];
const parameter = {
temperature: 0.5,
maxOutputTokens: 256,
};
const parameters = helpers.toValue(parameter);
const request = {
endpoint,
instances,
parameters,
};
// Predict request
const [response] = await predictionServiceClient.predict(request);
console.log('Get code generation response');
const predictions = response.predictions;
console.log('\tPredictions :');
for (const prediction of predictions) {
console.log(`\t\tPrediction : ${JSON.stringify(prediction)}`);
}
}
callPredict();
Python
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
import textwrap
from vertexai.language_models import CodeGenerationModel
def generate_unittest(temperature: float = 0.5) -> object:
"""Example of using Codey for Code Generation to write a unit test."""
# TODO developer - override these parameters as needed:
parameters = {
"temperature": temperature, # Temperature controls the degree of randomness in token selection.
"max_output_tokens": 256, # Token limit determines the maximum amount of text output.
}
code_generation_model = CodeGenerationModel.from_pretrained("code-bison@001")
response = code_generation_model.predict(
prefix=textwrap.dedent(
"""\
Write a unit test for this function:
def is_leap_year(year):
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
return True
else:
return False
else:
return True
else:
return False
"""
),
**parameters,
)
print(f"Response from Model: {response.text}")
return response
if __name__ == "__main__":
generate_unittest()
次のステップ
他の Google Cloud プロダクトに関連するコードサンプルの検索およびフィルタ検索を行うには、Google Cloud のサンプルをご覧ください。