mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-11 15:31:37 +08:00
fix: check LLM env
This commit is contained in:
@@ -104,7 +104,8 @@ var (
|
|||||||
CVResponseError = errors.New("CV parse response error") // 83
|
CVResponseError = errors.New("CV parse response error") // 83
|
||||||
CVResultNotFoundError = errors.New("CV result not found") // 84
|
CVResultNotFoundError = errors.New("CV result not found") // 84
|
||||||
|
|
||||||
StateUnknowError = errors.New("detect state failed") // 85
|
LLMEnvMissedError = errors.New("LLM env missed error") // 85
|
||||||
|
StateUnknowError = errors.New("detect state failed") // 89
|
||||||
)
|
)
|
||||||
|
|
||||||
// trackings related: [90, 100)
|
// trackings related: [90, 100)
|
||||||
@@ -199,7 +200,8 @@ var errorsMap = map[error]int{
|
|||||||
CVServiceConnectionError: 82,
|
CVServiceConnectionError: 82,
|
||||||
CVResponseError: 83,
|
CVResponseError: 83,
|
||||||
CVResultNotFoundError: 84,
|
CVResultNotFoundError: 84,
|
||||||
StateUnknowError: 85,
|
LLMEnvMissedError: 85,
|
||||||
|
StateUnknowError: 89,
|
||||||
|
|
||||||
// trackings related
|
// trackings related
|
||||||
TrackingGetError: 90,
|
TrackingGetError: 90,
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
v5.0.0-beta-2503192116
|
v5.0.0-beta-2503192228
|
||||||
|
|||||||
@@ -53,6 +53,11 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func WithLLMService(service LLMServiceType) AIServiceOption {
|
func WithLLMService(service LLMServiceType) AIServiceOption {
|
||||||
|
if err := checkEnvLLM(); err != nil {
|
||||||
|
log.Error().Err(err).Msg("check LLM env failed")
|
||||||
|
os.Exit(code.GetErrorCode(err))
|
||||||
|
}
|
||||||
|
|
||||||
return func(opts *AIServices) {
|
return func(opts *AIServices) {
|
||||||
if service == LLMServiceTypeGPT4o {
|
if service == LLMServiceTypeGPT4o {
|
||||||
var err error
|
var err error
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package ai
|
package ai
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
func TestOption(t *testing.T) {
|
func TestOption(t *testing.T) {
|
||||||
options := NewAIService(
|
options := NewAIService(
|
||||||
|
|||||||
@@ -9,7 +9,9 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/cloudwego/eino-ext/components/model/openai"
|
"github.com/cloudwego/eino-ext/components/model/openai"
|
||||||
|
"github.com/httprunner/httprunner/v5/code"
|
||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
|
"github.com/pkg/errors"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -25,11 +27,29 @@ type OpenAIInitConfig struct {
|
|||||||
const (
|
const (
|
||||||
EnvOpenAIBaseURL = "OPENAI_BASE_URL"
|
EnvOpenAIBaseURL = "OPENAI_BASE_URL"
|
||||||
EnvOpenAIAPIKey = "OPENAI_API_KEY"
|
EnvOpenAIAPIKey = "OPENAI_API_KEY"
|
||||||
EnvModelName = "MIDSCENE_MODEL_NAME"
|
EnvModelName = "LLM_MODEL_NAME"
|
||||||
EnvOpenAIInitConfigJSON = "MIDSCENE_OPENAI_INIT_CONFIG_JSON"
|
EnvOpenAIInitConfigJSON = "OPENAI_INIT_CONFIG_JSON"
|
||||||
EnvUseVLMUITars = "MIDSCENE_USE_VLM_UI_TARS"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func checkEnvLLM() error {
|
||||||
|
openaiBaseURL := os.Getenv("OPENAI_BASE_URL")
|
||||||
|
if openaiBaseURL == "" {
|
||||||
|
return errors.Wrap(code.LLMEnvMissedError, "OPENAI_BASE_URL missed")
|
||||||
|
}
|
||||||
|
log.Info().Str("OPENAI_BASE_URL", openaiBaseURL).Msg("get env")
|
||||||
|
openaiAPIKey := os.Getenv("OPENAI_API_KEY")
|
||||||
|
if openaiAPIKey == "" {
|
||||||
|
return errors.Wrap(code.LLMEnvMissedError, "OPENAI_API_KEY missed")
|
||||||
|
}
|
||||||
|
log.Info().Str("OPENAI_API_KEY", maskAPIKey(openaiAPIKey)).Msg("get env")
|
||||||
|
modelName := os.Getenv("LLM_MODEL_NAME")
|
||||||
|
if modelName == "" {
|
||||||
|
return errors.Wrap(code.LLMEnvMissedError, "LLM_MODEL_NAME missed")
|
||||||
|
}
|
||||||
|
log.Info().Str("LLM_MODEL_NAME", modelName).Msg("get env")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// loadEnv loads environment variables from a file
|
// loadEnv loads environment variables from a file
|
||||||
func loadEnv(envPath string) error {
|
func loadEnv(envPath string) error {
|
||||||
err := godotenv.Load(envPath)
|
err := godotenv.Load(envPath)
|
||||||
@@ -164,7 +184,3 @@ func maskAPIKey(key string) string {
|
|||||||
|
|
||||||
return key[:4] + "******" + key[len(key)-4:]
|
return key[:4] + "******" + key[len(key)-4:]
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsUseVLMUITars() bool {
|
|
||||||
return GetEnvConfigInBool(EnvUseVLMUITars)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package ai
|
package ai
|
||||||
|
|
||||||
import "github.com/cloudwego/eino/schema"
|
import (
|
||||||
|
"github.com/cloudwego/eino/schema"
|
||||||
|
)
|
||||||
|
|
||||||
type ILLMService interface {
|
type ILLMService interface {
|
||||||
Call(opts *PlanningOptions) (*PlanningResult, error)
|
Call(opts *PlanningOptions) (*PlanningResult, error)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestVLMPlanning(t *testing.T) {
|
func TestVLMPlanning(t *testing.T) {
|
||||||
imageBase64, err := loadImage("testdata/llk_3.jpg")
|
imageBase64, err := loadImage("testdata/llk_1.png")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
userInstruction := `连连看是一款经典的益智消除类小游戏,通常以图案或图标为主要元素。以下是连连看的基本规则说明:
|
userInstruction := `连连看是一款经典的益智消除类小游戏,通常以图案或图标为主要元素。以下是连连看的基本规则说明:
|
||||||
@@ -25,9 +25,7 @@ func TestVLMPlanning(t *testing.T) {
|
|||||||
5. 得分机制: 每成功连接并消除一对图案,玩家会获得相应的分数。完成游戏后,根据剩余时间和消除效率计算总分。
|
5. 得分机制: 每成功连接并消除一对图案,玩家会获得相应的分数。完成游戏后,根据剩余时间和消除效率计算总分。
|
||||||
6. 关卡设计: 游戏可能包含多个关卡,随着关卡的推进,图案的复杂度和数量会增加。`
|
6. 关卡设计: 游戏可能包含多个关卡,随着关卡的推进,图案的复杂度和数量会增加。`
|
||||||
|
|
||||||
// userInstruction += "\n\n请基于以上游戏规则,请先点击第一个图标"
|
userInstruction += "\n\n请基于以上游戏规则,给出消除所有图案的行动序列"
|
||||||
|
|
||||||
userInstruction += "\n\n点击[3排1列]果酱图案"
|
|
||||||
|
|
||||||
planner, err := NewPlanner(context.Background())
|
planner, err := NewPlanner(context.Background())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -69,8 +69,11 @@ func (dExt *XTDriver) GetScreenShotBase64() (base64Str string, err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// convert buffer to base64 string
|
||||||
base64Str = "data:image/jpeg;base64," +
|
base64Str = "data:image/jpeg;base64," +
|
||||||
base64.StdEncoding.EncodeToString(compressedBufSource.Bytes())
|
base64.StdEncoding.EncodeToString(compressedBufSource.Bytes())
|
||||||
|
|
||||||
return base64Str, nil
|
return base64Str, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user