Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

gen_ai.choice log reports gen_ai.system=gemini for OpenAI and Groq models through LiteLlm

未关闭 适合新手
#7,631 0 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

维护者通常 4 天内回复

@llalitkumarrr 已经在做这个了。

开始于 2026年10月22日。

  • #7640 来自 @Hugo-DDT —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
82/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
python

调研方向

从 src/google/adk/telemetry/tracing.py 开始,重点查看 _inference_system_name、_resolve_gen_ai_system_name 以及 issue 中链接的两个 gen_ai.choice 调用位置。比较 LiteLLM 返回不带提供商前缀的 model_version 时,span 和 choice 日志如何确定 gen_ai.system;使用 mock_response 复现并检查 OpenAI 和 Groq。完成标准是 choice 日志报告的提供商与对应 span 相同,并且现有的 Anthropic 用例仍能正常工作。

由索引模型根据 Issue 内容生成。

描述

models

🔴 Required Information

Describe the Bug:
with ADK_TELEMETRY_SCHEMA_VERSION_OPT_IN=1 the gen_ai.choice log says gen_ai.system=gemini for openai/gpt-4o and groq/llama-3.1-8b-instant through LiteLlm. the span and the system/user message logs for the same call say openai and groq. anthropic comes out fine

_inference_system_name looks at llm_response.model_version first (tracing.py#L1521-L1531). litellm gives that back without the provider prefix (gpt-4o) so _resolve_gen_ai_system_name finds no provider and falls back to gemini (#L1461-L1475). both choice log call sites go through it (#L1364, #L1424)

Steps to Reproduce:

  1. pip install google-adk litellm
  2. run this (no api key needed, it uses litellm's mock_response)
import asyncio
import os

os.environ["ADK_TELEMETRY_SCHEMA_VERSION_OPT_IN"] = "1"

from opentelemetry import _logs, trace
from opentelemetry.sdk._logs import LoggerProvider
from opentelemetry.sdk._logs.export import InMemoryLogRecordExporter, SimpleLogRecordProcessor
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
from opentelemetry.sdk.trace.export.in_memory_span_exporter import InMemorySpanExporter

spans, logs = InMemorySpanExporter(), InMemoryLogRecordExporter()
tp = TracerProvider()
tp.add_span_processor(SimpleSpanProcessor(spans))
trace.set_tracer_provider(tp)
lp = LoggerProvider()
lp.add_log_record_processor(SimpleLogRecordProcessor(logs))
_logs.set_logger_provider(lp)

from google.adk.agents import Agent
from google.adk.models.lite_llm import LiteLlm
from google.adk.runners import InMemoryRunner
from google.genai import types


async def run(model_id):
  spans.clear()
  logs.clear()
  model = LiteLlm(model=model_id, mock_response="hi", api_key="unused")
  runner = InMemoryRunner(agent=Agent(name="a", model=model), app_name="p")
  session = await runner.session_service.create_session(app_name="p", user_id="u")
  msg = types.Content(role="user", parts=[types.Part(text="hello")])
  async for _ in runner.run_async(user_id="u", session_id=session.id, new_message=msg):
    pass
  await runner.close()
  span = next(s for s in spans.get_finished_spans() if s.name.startswith("generate_content"))
  print(model_id)
  print("   span gen_ai.system:", span.attributes.get("gen_ai.system"))
  for r in logs.get_finished_logs():
    rec = r.log_record
    print("  ", rec.event_name, "gen_ai.system:", rec.attributes.get("gen_ai.system"))


for m in ("openai/gpt-4o", "groq/llama-3.1-8b-instant", "anthropic/claude-sonnet-4-5"):
  asyncio.run(run(m))

Expected Behavior:
gen_ai.choice has the same gen_ai.system as the span, so openai and groq here

Observed Behavior:

openai/gpt-4o
   span gen_ai.system: openai
   gen_ai.system.message gen_ai.system: openai
   gen_ai.user.message gen_ai.system: openai
   gen_ai.choice gen_ai.system: gemini
groq/llama-3.1-8b-instant
   span gen_ai.system: groq
   gen_ai.system.message gen_ai.system: groq
   gen_ai.user.message gen_ai.system: groq
   gen_ai.choice gen_ai.system: gemini
anthropic/claude-sonnet-4-5
   span gen_ai.system: anthropic
   gen_ai.system.message gen_ai.system: anthropic
   gen_ai.user.message gen_ai.system: anthropic
   gen_ai.choice gen_ai.system: anthropic

Environment Details:

  • ADK Library Version (pip show google-adk): 2.12.0 (main at 77a74f0)
  • Desktop OS: macOS
  • Python Version (python -V): 3.12.15

Model Information:

  • Are you using LiteLLM: Yes
  • Which model is being used: openai/gpt-4o and groq/llama-3.1-8b-instant via litellm mock_response

🟡 Optional Information

Regression:
havent checked older versions

falling back to the configured model id (what the span uses) when model_version has no provider prefix would fix it i think. can send a PR

主要语言
Python
星标
22k
派生
4.2k
平均合并
3 天 21 小时
30 天内合并 PR
6

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

google/adk-python 的其他 Issue

查看 google/adk-python 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。