当前位置: 首页 > news >正文

OpenAI Agents SDK 使用自定义的 OpenAI-Compatible API

OpenAI Agents SDK 使用自定义的 OpenAI-Compatible API

设置环境变量,

os.environ["OPENAI_API_KEY"] = "sk-******"
os.environ["OPENAI_API_BASE_URL"] = "http://192.168.31.15:8000/v1"

创建 openai_client,

openai_client = AsyncOpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),
    base_url=os.getenv("OPENAI_API_BASE_URL")
)

创建 Agent时,指定使用 openai_client,

    agent = Agent(
        name="Assistant",
        instructions="You are a helpful assistant",
        model=OpenAIChatCompletionsModel(
            model="gpt-4o",
            openai_client=openai_client
        ),
        model_settings=ModelSettings(temperature=0.7),
    )

示例代码,

import base64
import os
from agents import Agent, Runner, AsyncOpenAI, OpenAIChatCompletionsModel, ModelSettings, set_default_openai_client, \
    set_default_openai_api, enable_verbose_stdout_logging, RunConfig, set_trace_processors

import logging
import nest_asyncio
import logfire
import asyncio

from langsmith.wrappers import OpenAIAgentsTracingProcessor

os.environ["DEFAULT_MODEL_PLATFORM_TYPE"] = "openai"
os.environ["DEFAULT_MODEL_TYPE"] = "gpt-4o"
os.environ["OPENAI_API_KEY"] = "sk-******"
os.environ["OPENAI_API_BASE_URL"] = "http://192.168.31.15:8000/v1"
os.environ["OPENAI_AGENTS_DISABLE_TRACING"] = "1"

os.environ["LANGSMITH_API_KEY"] = "lsv2_pt_******"
os.environ["LANGSMITH_ENDPOINT"] = "https://api.smith.langchain.com"

os.environ["LANGFUSE_PUBLIC_KEY"] = "pk-lf-******"
os.environ["LANGFUSE_SECRET_KEY"] = "sk-lf-******"
os.environ["LANGFUSE_HOST"] = "http://192.168.31.20:9009"

LANGFUSE_AUTH = base64.b64encode(
    f"{os.environ.get('LANGFUSE_PUBLIC_KEY')}:{os.environ.get('LANGFUSE_SECRET_KEY')}".encode()
).decode()

os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = os.environ.get("LANGFUSE_HOST") + "/api/public/otel"
os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = f"Authorization=Basic {LANGFUSE_AUTH}"

nest_asyncio.apply()

# Configure logfire instrumentation.
logfire.configure(
    service_name='my_agent_service',
    send_to_logfire=False,
)
# This method automatically patches the OpenAI Agents SDK to send logs via OTLP to Langfuse.
logfire.instrument_openai_agents()

# logging.basicConfig(
#     format='%(asctime)s %(levelname)s [%(pathname)s:%(lineno)d] %(message)s',
#     datefmt='%Y-%m-%d %H:%M:%S',
#     level=logging.DEBUG
# )


openai_client = AsyncOpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),
    base_url=os.getenv("OPENAI_API_BASE_URL")
)

set_default_openai_client(openai_client)
set_default_openai_api("chat_completions")
enable_verbose_stdout_logging()


async def main():
    agent = Agent(
        name="Assistant",
        instructions="You are a helpful assistant",
        model=OpenAIChatCompletionsModel(
            model="gpt-4o",
            openai_client=openai_client
        ),
        model_settings=ModelSettings(temperature=0.7),
    )

    result = Runner.run_sync(
        agent,
        "写一首关于编程中递归的俳句。",
        run_config=RunConfig(tracing_disabled=False),
    )
    print(result.final_output)


if __name__ == "__main__":
    set_trace_processors([OpenAIAgentsTracingProcessor()])
    asyncio.run(main())

相关文章:

  • 将对象内的键值转换为响应式变量后,在setup函数中用这些属性的时候为什么不用像ref那样加value
  • 冯・诺依曼架构深度解析
  • WPF-实现按钮的动态变化
  • OMRON Corporation Programming Contest 2025 (AtCoder Beginner Contest 397)题解
  • 对接豆包大模型
  • SvelteKit 最新中文文档教程(6)—— 状态管理
  • 【微服务】基于Lambda ESM的预留模式调整Kafka ESM吞吐量的实战
  • 【海螺AI视频】蓝耘智算 | AI视频新浪潮:蓝耘MaaS与海螺AI视频创作体验
  • leetcode33.搜索旋转排序数组-medium
  • 【八股文】volatile关键字的底层原理是什么
  • 实现搜索功能:第一部分
  • 穿越是时空之门(java)
  • Ubuntu安装TensorFlow 2.13-GPU版全流程指南(anaconda)
  • golang中的接口
  • 【Java进阶学习 第九篇】常用API(Array、冒泡选择排序、二分查找、正则表达式)
  • 【C++进阶】指针:从基础到实践
  • Leetcode Hot 100 79.单词搜索
  • 【spring对bean Singleton和Prototype的管理流程】
  • 英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析
  • 小程序开发中的安全问题及防护措施
  • 董军在第六届联合国维和部长级会议上作大会发言
  • 鸿海下调全年营收展望:AI服务器业务强劲,预计今年营收增超50%
  • 习近平会见智利总统博里奇
  • 观察|“双雄”格局下电池制造商如何生存:加码不同技术、抢滩新赛道
  • 外交部亚洲司司长刘劲松会见印度驻华大使罗国栋
  • 济南市委副秘书长吕英伟已任历下区领导