记录下chatgpt的openai 开发过程

open ai

最近公司调整战略 想使用ai来操作一些重复性的动作 减少冗余 所以研究了一下国内能接入的chatgap 发现微软在去年就已经接入了 但是公司给到我这边的只有一个key 所以我把开发的过程记录下

一、接通接口

复制代码
from openai import AsyncAzureOpenAI

openai_client = AsyncAzureOpenAI(
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version=os.environ["AZURE_OPENAI_API_VERSION"],
    api_key=os.environ["AZURE_OPENAI_API_KEY"],
)

if __name__ == "__main__":
    # Test the OpenAI client
    async def test_openai_client():
        response = await openai_client.chat.completions.create(
            model="gpt-4o",
            messages=[{"role": "user", "content": "Hello, how are you?"}],
        )
        print(response.choices[0].message.content)

    import asyncio

    asyncio.run(test_openai_client())

这一步打印的就是openai返回给我们的对话结果,但是我们是想从一个文本内容当中获取我们想要的信息 这一步的代码为初步尝试

二、获取网页pdf信息

复制代码
def fetch_pdf_bytes(url: str, timeout: int, headers: dict, session: requests.Session) -> bytes:
    # 尝试 Range 取前 4MB,失败回退全量
    try:
        r = session.get(url, headers={**headers, "Range": "bytes=0-4194303"}, timeout=(10, timeout), stream=True)
        if r.status_code == 206:
            return r.content
        r.close()
    except Exception:
        pass

    r = session.get(url, headers=headers, timeout=(10, timeout), stream=True)
    r.raise_for_status()
    return r.content
这一步是获取到网页的信息

def build_session(verify: bool = True, proxies: Optional[dict] = None) -> requests.Session:
    retry = Retry(
        total=3,
        connect=3,
        read=3,
        backoff_factor=1.0,
        status_forcelist=(429, 500, 502, 503, 504),
        allowed_methods=("HEAD", "GET"),
        respect_retry_after_header=True,
    )
    adapter = HTTPAdapter(max_retries=retry, pool_connections=10, pool_maxsize=10)
    s = requests.Session()
    s.mount("http://", adapter)
    s.mount("https://", adapter)
    s.verify = verify
    if proxies:
        s.proxies.update(proxies)
    return s
    相关用到的代码块
def extract_text_from_pdf_bytes(data: bytes, max_pages: Optional[int] = None) -> str:
    reader = PdfReader(BytesIO(data))
    total = len(reader.pages)
    limit = min(total, max_pages) if max_pages else total
    texts = []
    for i in range(limit):
        page = reader.pages[i]
        texts.append(page.extract_text() or "")
    return "\n".join(texts)

经过上面的步骤可以成功的获取到网页pdf的内容

三、整合内容 调整发送到openai的信息

复制代码
 messages = [
            {"role": "system", "content": "You are a 前置条件" },
            {
                "role": "user",
                "content": pdf_text,#pdf的内容
            },
            {"role": "system", "content": req.text}  你的问题
        ]

这样chatgap就能返回你想要的信息了这个是后面发现不仅需要提取pdf的内容 有些网页的内容也是需要提取的

相关推荐
一人の梅雨22 分钟前
亚马逊 MWS 关键字 API 实战:关键字搜索商品列表接口深度解析与优化方案
python·spring
唐叔在学习2 小时前
pip安装太慢?一键切换国内镜像源,速度飞起!
后端·python
Gz、2 小时前
Spring Boot 常用注解详解
spring boot·后端·python
安娜的信息安全说2 小时前
使用 Azure AD 实现认证与权限管理:原理解析与操作指南
microsoft·flask·azure
哪吒编程2 小时前
本地安装Codex,国内直接使用GPT-5-Codex
gpt·chatgpt
起风了___2 小时前
Python 自动化下载夸克网盘分享文件:基于 Playwright 的完整实现(含登录态持久化与提取码处理)
后端·python
我是华为OD~HR~栗栗呀3 小时前
测试转C++开发面经(华为OD)
java·c++·后端·python·华为od·华为·面试
mldong3 小时前
保姆级教程!手把手教你搭建FastAPI + Vue3前后端分离项目
vue.js·python·全栈
Q_Q5110082854 小时前
python+uniapp基于微信小程序美食点餐系统
spring boot·python·微信小程序·django·flask·uni-app·node.js
小关会打代码4 小时前
关于Pycharm中在运行出现语法错误:Non-UTF-8 code starting with
ide·python·pycharm