@@ -225,12 +225,119 @@ veADK 集成了以下火山引擎工具:
225225 2. 需要配置用于 Agent 推理图像生成的模型名称
226226
227227
228- === "代码 "
228+ === "Python "
229229
230230 ```python
231231 --8<-- "examples/tools/image_generate/agent.py"
232232 ```
233233
234+ === "Golang"
235+
236+ ```go
237+ package main
238+
239+ import (
240+ "context"
241+ "fmt"
242+ "log"
243+ "os"
244+
245+ "github.com/a2aproject/a2a-go/a2asrv"
246+ "github.com/google/uuid"
247+ veagent "github.com/volcengine/veadk-go/agent/llmagent"
248+ "github.com/volcengine/veadk-go/common"
249+ "github.com/volcengine/veadk-go/tool/builtin_tools"
250+ "google.golang.org/adk/agent"
251+ "google.golang.org/adk/agent/llmagent"
252+ "google.golang.org/adk/artifact"
253+ "google.golang.org/adk/cmd/launcher"
254+ "google.golang.org/adk/cmd/launcher/full"
255+ "google.golang.org/adk/model"
256+ "google.golang.org/adk/session"
257+ "google.golang.org/adk/tool"
258+ )
259+
260+ func saveReportfunc(ctx agent.CallbackContext, llmResponse *model.LLMResponse, llmResponseError error) (*model.LLMResponse, error) {
261+ if llmResponse == nil || llmResponse.Content == nil || llmResponseError != nil {
262+ return llmResponse, llmResponseError
263+ }
264+ for _, part := range llmResponse.Content.Parts {
265+ if part.Text == "" {
266+ continue
267+ }
268+ _, err := ctx.Artifacts().Save(ctx, uuid.NewString(), part)
269+ if err != nil {
270+ return nil, err
271+ }
272+ }
273+ return llmResponse, llmResponseError
274+ }
275+
276+ // AuthInterceptor sets 'user' name needed for both a2a and webui launchers which sharing the same sessions service.
277+ type AuthInterceptor struct {
278+ a2asrv.PassthroughCallInterceptor
279+ }
280+
281+ // Before implements a before request callback.
282+ func (a *AuthInterceptor) Before(ctx context.Context, callCtx *a2asrv.CallContext, req *a2asrv.Request) (context.Context, error) {
283+ callCtx.User = &a2asrv.AuthenticatedUser{
284+ UserName: "user",
285+ }
286+ return ctx, nil
287+ }
288+
289+ func main() {
290+ ctx := context.Background()
291+ cfg := &veagent.Config{
292+ ModelName: common.DEFAULT_MODEL_AGENT_NAME,
293+ ModelAPIBase: common.DEFAULT_MODEL_AGENT_API_BASE,
294+ ModelAPIKey: os.Getenv(common.MODEL_AGENT_API_KEY),
295+ }
296+ cfg.Name = "image_generate_tool_agent"
297+ cfg.Description = "Agent to generate images based on text descriptions or images."
298+ cfg.Instruction = "I can generate images based on text descriptions or images."
299+ cfg.AfterModelCallbacks = []llmagent.AfterModelCallback{saveReportfunc}
300+
301+ imageGenerate, err := builtin_tools.NewImageGenerateTool(&builtin_tools.ImageGenerateConfig{
302+ ModelName: common.DEFAULT_MODEL_IMAGE_NAME,
303+ BaseURL: common.DEFAULT_MODEL_IMAGE_API_BASE,
304+ APIKey: os.Getenv(common.MODEL_IMAGE_API_KEY),
305+ })
306+ if err != nil {
307+ fmt.Printf("NewLLMAgent failed: %v", err)
308+ return
309+ }
310+
311+ cfg.Tools = []tool.Tool{imageGenerate}
312+
313+ sessionService := session.InMemoryService()
314+ rootAgent, err := veagent.New(cfg)
315+
316+ if err != nil {
317+ log.Fatalf("Failed to create agent: %v", err)
318+ }
319+
320+ agentLoader, err := agent.NewMultiLoader(
321+ rootAgent,
322+ )
323+ if err != nil {
324+ log.Fatalf("Failed to create agent loader: %v", err)
325+ }
326+
327+ artifactservice := artifact.InMemoryService()
328+ config := &launcher.Config{
329+ ArtifactService: artifactservice,
330+ SessionService: sessionService,
331+ AgentLoader: agentLoader,
332+ }
333+
334+ l := full.NewLauncher()
335+ if err = l.Execute(ctx, config, os.Args[1:]); err != nil {
336+ log.Fatalf("Run failed: %v\n\n%s", err, l.CommandLineSyntax())
337+ }
338+ }
339+ ```
340+
234341=== "环境变量"
235342
236343 环境变量列表:
@@ -268,12 +375,113 @@ veADK 集成了以下火山引擎工具:
268375 3. 需要配置用于 Agent 推理图片生成的模型名称(该用例使用了 image_generate 工具,因此需要推理图像生成模型的配置)
269376
270377
271- === "代码 "
378+ === "Python "
272379
273380 ```python
274381 --8<-- "examples/tools/video_generate/agent.py"
275382 ```
276383
384+ === "Golang"
385+
386+ ```go
387+ package main
388+
389+ import (
390+ "context"
391+ "fmt"
392+ "log"
393+ "os"
394+
395+ "github.com/a2aproject/a2a-go/a2asrv"
396+ "github.com/google/uuid"
397+ veagent "github.com/volcengine/veadk-go/agent/llmagent"
398+ "github.com/volcengine/veadk-go/common"
399+ "github.com/volcengine/veadk-go/tool/builtin_tools"
400+ "google.golang.org/adk/agent"
401+ "google.golang.org/adk/artifact"
402+ "google.golang.org/adk/cmd/launcher"
403+ "google.golang.org/adk/cmd/launcher/full"
404+ "google.golang.org/adk/model"
405+ "google.golang.org/adk/session"
406+ "google.golang.org/adk/tool"
407+ )
408+
409+ func saveReportfunc(ctx agent.CallbackContext, llmResponse *model.LLMResponse, llmResponseError error) (*model.LLMResponse, error) {
410+ if llmResponse == nil || llmResponse.Content == nil || llmResponseError != nil {
411+ return llmResponse, llmResponseError
412+ }
413+ for _, part := range llmResponse.Content.Parts {
414+ if part.Text == "" {
415+ continue
416+ }
417+ _, err := ctx.Artifacts().Save(ctx, uuid.NewString(), part)
418+ if err != nil {
419+ return nil, err
420+ }
421+ }
422+ return llmResponse, llmResponseError
423+ }
424+
425+ // AuthInterceptor sets 'user' name needed for both a2a and webui launchers which sharing the same sessions service.
426+ type AuthInterceptor struct {
427+ a2asrv.PassthroughCallInterceptor
428+ }
429+
430+ // Before implements a before request callback.
431+ func (a *AuthInterceptor) Before(ctx context.Context, callCtx *a2asrv.CallContext, req *a2asrv.Request) (context.Context, error) {
432+ callCtx.User = &a2asrv.AuthenticatedUser{
433+ UserName: "user",
434+ }
435+ return ctx, nil
436+ }
437+
438+ func main() {
439+ ctx := context.Background()
440+ cfg := &veagent.Config{
441+ ModelName: common.DEFAULT_MODEL_AGENT_NAME,
442+ ModelAPIBase: common.DEFAULT_MODEL_AGENT_API_BASE,
443+ ModelAPIKey: os.Getenv(common.MODEL_AGENT_API_KEY),
444+ }
445+ videoGenerate, err := builtin_tools.NewVideoGenerateTool(&builtin_tools.VideoGenerateConfig{
446+ ModelName: common.DEFAULT_MODEL_VIDEO_NAME,
447+ BaseURL: common.DEFAULT_MODEL_VIDEO_API_BASE,
448+ APIKey: os.Getenv(common.MODEL_VIDEO_API_KEY),
449+ })
450+ if err != nil {
451+ fmt.Printf("NewLLMAgent failed: %v", err)
452+ return
453+ }
454+
455+ cfg.Tools = []tool.Tool{videoGenerate}
456+
457+ sessionService := session.InMemoryService()
458+ rootAgent, err := veagent.New(cfg)
459+
460+ if err != nil {
461+ log.Fatalf("Failed to create agent: %v", err)
462+ }
463+
464+ agentLoader, err := agent.NewMultiLoader(
465+ rootAgent,
466+ )
467+ if err != nil {
468+ log.Fatalf("Failed to create agent loader: %v", err)
469+ }
470+
471+ artifactservice := artifact.InMemoryService()
472+ config := &launcher.Config{
473+ ArtifactService: artifactservice,
474+ SessionService: sessionService,
475+ AgentLoader: agentLoader,
476+ }
477+
478+ l := full.NewLauncher()
479+ if err = l.Execute(ctx, config, os.Args[1:]); err != nil {
480+ log.Fatalf("Run failed: %v\n\n%s", err, l.CommandLineSyntax())
481+ }
482+ }
483+ ```
484+
277485=== "环境变量"
278486
279487 环境变量列表:
0 commit comments