Skip to content

feat(cohere): upgrade integration from ai to gen_ai#5532

Draft
shellmayr wants to merge 8 commits intomasterfrom
shellmayr/feat/upgrade-cohere-ai-integration-from-ai-to-genai
Draft

feat(cohere): upgrade integration from ai to gen_ai#5532
shellmayr wants to merge 8 commits intomasterfrom
shellmayr/feat/upgrade-cohere-ai-integration-from-ai-to-genai

Conversation

@shellmayr
Copy link
Member

@shellmayr shellmayr commented Feb 25, 2026

This PR encompasses multiple changes to accomplish this

  • Add support for the "new" v2 of cohere which was released at the end of 2024. The instrumentation is in a separate file to prevent confusion between the versions.
  • Move the auto-instrumentation for v1 from ai.* attributes to gen_ai.* attributes
  • Adapt / add tests for v1 and v2
  • Has been run against two new templates for cohere in the testing framework
  • Cohere is on the level of e.g. anthropic and openai, meaning that there is no agentic flavor to this, it is "just" an API for LLM-calling for Cohere's own models

Closes TET-2023

@github-actions
Copy link
Contributor

github-actions bot commented Feb 25, 2026

Semver Impact of This PR

🟡 Minor (new features)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


New Features ✨

  • (cohere) Upgrade integration from ai to gen_ai by shellmayr in #5532
  • Add set_attribute, remove_attribute to global API by sentrivana in #5555

Bug Fixes 🐛

Openai

  • Avoid consuming iterables passed to the Completions API by alexander-alderman-webb in #5489
  • Avoid consuming iterables passed to the Embeddings API by alexander-alderman-webb in #5491

Other

  • (anthropic) Fix token accounting by shellmayr in #5490
  • (google-genai) Remove agent spans for simple requests by alexander-alderman-webb in #5443
  • (grpc) Read method from handler_call_details for grpcio >= 1.76 compat by yeung108 in #5521
  • (httpx) Correctly append baggage in async client by sentrivana in #5530
  • (pydantic-ai) Adapt to missing ToolManager._call_tool by sentrivana in #5522
  • (utils) Use HEROKU_BUILD_COMMIT env var for default release by ericapisani in #5499
  • (wsgi) Do not wrap file responses when uWSGI offload-threads is enabled by ericapisani in #5556

Documentation 📚

  • Add troubleshooting note for editable installs with uWSGI by ericapisani in #5552
  • Add debugging advice by alexander-alderman-webb in #5517
  • New integration guide by alexander-alderman-webb in #5476

Internal Changes 🔧

Agents

  • Add security-review skill to agent configuration by ericapisani in #5498
  • Add sentry skills to be used by warden in CI reviews by ericapisani in #5485

Openai Agents

  • Remove set_data_normalized for primitive attributes by alexander-alderman-webb in #5509
  • Expect new tool fields by alexander-alderman-webb in #5471

Other

  • (ai) Add configuration for dotagents by ericapisani in #5480
  • (anthropic) Remove set_data_normalized for primitive attributes by alexander-alderman-webb in #5504
  • (github) Add warden configuration by ericapisani in #5484
  • (pydantic-ai) Remove set_data_normalized for the gen_ai.response.model attribute by alexander-alderman-webb in #5512
  • (repo) Add .serena to .gitignore by ericapisani in #5464
  • 🤖 Update test matrix with new releases (02/24) by github-actions in #5524
  • 🤖 Update test matrix with new releases (02/23) by github-actions in #5503
  • 🤖 Update test matrix with new releases (02/19) by github-actions in #5483
  • 🤖 Update test matrix with new releases (02/18) by github-actions in #5475

🤖 This preview updates automatically when you update the PR.

@github-actions
Copy link
Contributor

github-actions bot commented Feb 25, 2026

Codecov Results 📊

56 passed | Total: 56 | Pass Rate: 100% | Execution Time: 7.91s

All tests are passing successfully.

❌ Patch coverage is 5.14%. Project has 13051 uncovered lines.

Files with missing lines (183)
File Patch % Lines
langchain.py 3.28% ⚠️ 590 Missing
openai.py 5.38% ⚠️ 510 Missing
utils.py 55.48% ⚠️ 406 Missing and 77 partials
utils.py 0.00% ⚠️ 474 Missing
tracing_utils.py 54.73% ⚠️ 268 Missing and 44 partials
transport.py 24.56% ⚠️ 298 Missing and 4 partials
scope.py 74.54% ⚠️ 209 Missing and 70 partials
mcp.py 5.24% ⚠️ 253 Missing
anthropic.py 9.06% ⚠️ 251 Missing
client.py 63.55% ⚠️ 183 Missing and 64 partials
__init__.py 3.91% ⚠️ 221 Missing
langgraph.py 5.29% ⚠️ 215 Missing
utils.py 16.08% ⚠️ 214 Missing
span_processor.py 0.00% ⚠️ 205 Missing
continuous_profiler.py 44.73% ⚠️ 173 Missing and 13 partials
strawberry.py 8.54% ⚠️ 182 Missing
__init__.py 6.01% ⚠️ 172 Missing
aws_lambda.py 16.50% ⚠️ 167 Missing
spark_driver.py 0.00% ⚠️ 166 Missing
huggingface_hub.py 8.89% ⚠️ 164 Missing
sanic.py 9.60% ⚠️ 160 Missing
tracing.py 76.21% ⚠️ 113 Missing and 46 partials
aiohttp.py 10.84% ⚠️ 148 Missing
cloud_resource_context.py 0.00% ⚠️ 145 Missing
ai_client.py 0.00% ⚠️ 145 Missing
transaction_profiler.py 63.28% ⚠️ 123 Missing and 21 partials
rust_tracing.py 0.00% ⚠️ 143 Missing
litellm.py 0.00% ⚠️ 138 Missing
litestar.py 9.59% ⚠️ 132 Missing
starlite.py 8.33% ⚠️ 132 Missing
v2.py 0.00% ⚠️ 130 Missing
__init__.py 76.14% ⚠️ 94 Missing and 26 partials
envelope.py 48.47% ⚠️ 101 Missing and 16 partials
falcon.py 8.94% ⚠️ 112 Missing
dramatiq.py 0.00% ⚠️ 110 Missing
arq.py 9.92% ⚠️ 109 Missing
hub.py 45.60% ⚠️ 105 Missing and 3 partials
pymongo.py 10.17% ⚠️ 106 Missing
beat.py 8.62% ⚠️ 106 Missing
v1.py 0.00% ⚠️ 103 Missing
utils.py 0.00% ⚠️ 103 Missing
asyncpg.py 11.61% ⚠️ 99 Missing
quart.py 16.10% ⚠️ 99 Missing
gcp.py 0.00% ⚠️ 98 Missing
otlp.py 0.00% ⚠️ 97 Missing
utils.py 13.39% ⚠️ 97 Missing
agent_run.py 0.00% ⚠️ 97 Missing
models.py 4.95% ⚠️ 96 Missing
pyramid.py 13.76% ⚠️ 94 Missing
tornado.py 14.55% ⚠️ 94 Missing
__init__.py 0.00% ⚠️ 93 Missing
bottle.py 11.65% ⚠️ 91 Missing
agent_run.py 0.00% ⚠️ 90 Missing
stdlib.py 35.82% ⚠️ 86 Missing and 2 partials
tools.py 0.00% ⚠️ 88 Missing
runner.py 0.00% ⚠️ 87 Missing
beam.py 0.00% ⚠️ 84 Missing
loguru.py 11.58% ⚠️ 84 Missing
ray.py 0.00% ⚠️ 84 Missing
caching.py 22.64% ⚠️ 82 Missing and 2 partials
__init__.py 4.65% ⚠️ 82 Missing
asyncio.py 0.00% ⚠️ 80 Missing
invoke_agent.py 0.00% ⚠️ 79 Missing
clickhouse_driver.py 17.58% ⚠️ 75 Missing
spotlight.py 54.86% ⚠️ 65 Missing and 8 partials
pure_eval.py 0.00% ⚠️ 73 Missing
rq.py 14.12% ⚠️ 73 Missing
worker.py 22.58% ⚠️ 72 Missing
ariadne.py 14.46% ⚠️ 71 Missing
gql.py 10.13% ⚠️ 71 Missing
starlette.py 88.76% ⚠️ 40 Missing and 31 partials
sqlalchemy.py 10.26% ⚠️ 70 Missing
monitoring.py 17.07% ⚠️ 68 Missing
graphene.py 12.82% ⚠️ 68 Missing
_queue.py 26.67% ⚠️ 66 Missing
huey.py 17.72% ⚠️ 65 Missing
boto3.py 14.86% ⚠️ 63 Missing
logging.py 68.63% ⚠️ 48 Missing and 15 partials
chalice.py 16.18% ⚠️ 57 Missing
propagator.py 0.00% ⚠️ 57 Missing
streaming.py 0.00% ⚠️ 56 Missing
server.py 0.00% ⚠️ 56 Missing
spark_worker.py 0.00% ⚠️ 56 Missing
api.py 65.16% ⚠️ 54 Missing and 1 partials
graph_nodes.py 0.00% ⚠️ 52 Missing
gnu_backtrace.py 0.00% ⚠️ 51 Missing
_async_common.py 0.00% ⚠️ 51 Missing
socket.py 0.00% ⚠️ 50 Missing
sessions.py 70.68% ⚠️ 39 Missing and 10 partials
caches.py 16.95% ⚠️ 49 Missing
invoke_agent.py 0.00% ⚠️ 46 Missing
traces.py 47.06% ⚠️ 45 Missing
templates.py 62.00% ⚠️ 38 Missing and 7 partials
utils.py 46.67% ⚠️ 40 Missing and 5 partials
__init__.py 25.42% ⚠️ 44 Missing
_batcher.py 47.50% ⚠️ 42 Missing and 1 partials
utils.py 24.07% ⚠️ 41 Missing and 1 partials
asgi.py 69.72% ⚠️ 33 Missing and 7 partials
client.py 0.00% ⚠️ 40 Missing
_sync_common.py 22.00% ⚠️ 39 Missing
client.py 0.00% ⚠️ 38 Missing
_span_batcher.py 35.71% ⚠️ 36 Missing
serverless.py 0.00% ⚠️ 36 Missing
server.py 0.00% ⚠️ 34 Missing
threading.py 75.79% ⚠️ 23 Missing and 10 partials
sys_exit.py 0.00% ⚠️ 32 Missing
launchdarkly.py 0.00% ⚠️ 31 Missing
session.py 80.00% ⚠️ 18 Missing and 12 partials
trytond.py 0.00% ⚠️ 30 Missing
integration.py 0.00% ⚠️ 30 Missing
serializer.py 89.25% ⚠️ 20 Missing and 9 partials
error_tracing.py 0.00% ⚠️ 29 Missing
asgi.py 87.86% ⚠️ 17 Missing and 11 partials
tools.py 0.00% ⚠️ 27 Missing
ai_client.py 13.33% ⚠️ 26 Missing
execute_tool.py 0.00% ⚠️ 26 Missing
_openai_completions_api.py 19.35% ⚠️ 25 Missing
httpx.py 68.49% ⚠️ 23 Missing and 2 partials
redis_cluster.py 26.47% ⚠️ 25 Missing
_wsgi_common.py 84.25% ⚠️ 20 Missing and 4 partials
typer.py 0.00% ⚠️ 24 Missing
_compat.py 41.03% ⚠️ 23 Missing
statsig.py 0.00% ⚠️ 23 Missing
queries.py 25.81% ⚠️ 23 Missing
logger.py 43.59% ⚠️ 22 Missing
decorator.py 37.14% ⚠️ 22 Missing
_log_batcher.py 0.00% ⚠️ 21 Missing
attachments.py 27.59% ⚠️ 21 Missing
monitor.py 68.85% ⚠️ 19 Missing and 2 partials
__init__.py 85.87% ⚠️ 13 Missing and 8 partials
unraisablehook.py 0.00% ⚠️ 21 Missing
flask.py 89.06% ⚠️ 14 Missing and 6 partials
openfeature.py 0.00% ⚠️ 20 Missing
execute_tool.py 0.00% ⚠️ 20 Missing
unleash.py 0.00% ⚠️ 19 Missing
model_request.py 0.00% ⚠️ 18 Missing
wsgi.py 90.77% ⚠️ 12 Missing and 4 partials
utils.py 0.00% ⚠️ 16 Missing
_lru_cache.py 60.00% ⚠️ 12 Missing and 3 partials
atexit.py 56.25% ⚠️ 14 Missing and 1 partials
excepthook.py 56.25% ⚠️ 14 Missing and 1 partials
redis.py 25.00% ⚠️ 15 Missing
_werkzeug.py 66.67% ⚠️ 9 Missing and 5 partials
scrubber.py 89.86% ⚠️ 7 Missing and 6 partials
__init__.py 27.78% ⚠️ 13 Missing
types.py 0.00% ⚠️ 12 Missing
executing.py 81.58% ⚠️ 7 Missing and 5 partials
middleware.py 93.33% ⚠️ 6 Missing and 6 partials
signals_handlers.py 88.64% ⚠️ 5 Missing and 7 partials
redis_py_cluster_legacy.py 26.67% ⚠️ 11 Missing
api.py 37.50% ⚠️ 10 Missing
utils.py 41.18% ⚠️ 10 Missing
handoff.py 0.00% ⚠️ 10 Missing
metrics.py 47.06% ⚠️ 9 Missing
fastapi.py 97.56% ⚠️ 2 Missing and 7 partials
__init__.py 72.41% ⚠️ 8 Missing and 1 partials
dedupe.py 85.00% ⚠️ 6 Missing and 2 partials
_metrics_batcher.py 65.00% ⚠️ 7 Missing
_types.py 76.67% ⚠️ 7 Missing
_asgi_common.py 94.44% ⚠️ 3 Missing and 4 partials
transactions.py 94.03% ⚠️ 4 Missing and 3 partials
consts.py 0.00% ⚠️ 7 Missing
rb.py 30.00% ⚠️ 7 Missing
_init_implementation.py 75.00% ⚠️ 6 Missing
_openai_responses_api.py 33.33% ⚠️ 6 Missing
views.py 90.00% ⚠️ 5 Missing and 1 partials
feature_flags.py 93.75% ⚠️ 2 Missing and 2 partials
consts.py 0.00% ⚠️ 4 Missing
__init__.py 20.00% ⚠️ 4 Missing
__init__.py 0.00% ⚠️ 4 Missing
__init__.py 0.00% ⚠️ 3 Missing
__init__.py 40.00% ⚠️ 3 Missing
__init__.py 0.00% ⚠️ 3 Missing
__init__.py 0.00% ⚠️ 3 Missing
__init__.py 0.00% ⚠️ 3 Missing
consts.py 99.43% ⚠️ 2 Missing
debug.py 95.65% ⚠️ 1 Missing and 1 partials
argv.py 100.00% ⚠️ 2 partials
modules.py 94.12% ⚠️ 1 Missing and 1 partials
tasks.py 95.83% ⚠️ 1 Missing and 1 partials
agent_workflow.py 71.43% ⚠️ 2 Missing
consts.py 0.00% ⚠️ 1 Missing
consts.py 0.00% ⚠️ 1 Missing

Generated by Codecov Action

@linear
Copy link

linear bot commented Feb 27, 2026

GEN_AI_ALLOWED_MESSAGE_ROLES.SYSTEM: ["system"],
GEN_AI_ALLOWED_MESSAGE_ROLES.USER: ["user", "human"],
GEN_AI_ALLOWED_MESSAGE_ROLES.ASSISTANT: ["assistant", "ai"],
GEN_AI_ALLOWED_MESSAGE_ROLES.ASSISTANT: ["assistant", "ai", "chatbot"],
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is needed because cohere sometimes uses the role chatbot in their message structure

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant