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

记录下chatgpt的openai 开发过程

open ai

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

一、接通接口

from openai import AsyncAzureOpenAIopenai_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 clientasync 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 asyncioasyncio.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.contentr.close()except Exception:passr = 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 = verifyif 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 totaltexts = []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的内容 有些网页的内容也是需要提取的

http://www.xdnf.cn/news/20062.html

相关文章:

  • Gemini-2.5-Flash-Image-Preview 与 GPT-4o 图像生成能力技术差异解析​
  • U盘文件系统转换指南:方法、原因与注意事项
  • 微信小程序截屏与录屏功能详解
  • 数字人系统源码搭建与定制化开发:从技术架构到落地实践
  • Java垃圾回收算法详解:从原理到实践的完整指南
  • CI/CD 基础与 GitHub Actions 总结
  • 【数据分享】土地利用矢量shp数据分享-甘肃
  • 前端笔记:基于Dialog自定义实现类似抽屉效果
  • React学习教程,从入门到精通, React 新创建组件语法知识点及案例代码(11)
  • Charles抓包工具在接口性能优化与压力测试中的实用方法
  • 【数据分享】中国城市营商环境数据库2024(296个城市)(2017-2022)
  • 学习嵌入式的第三十三天——网络编程
  • fpga iic协议
  • Leetcode 876. 链表的中间结点 快慢指针
  • 2025国赛B题保姆级教程思路分析 碳化硅外延层厚度的确定
  • IDEA终极配置指南:打造你的极速开发利器
  • AES介绍以及应用(crypto.js 实现数据加密)
  • Ubuntu 24.04 中 nvm 安装 Node 权限问题解决
  • 2020年_408统考_数据结构41题
  • #数据结构----2.1线性表
  • 谈谈你对ThreadLocal的理解
  • 2025数学建模国赛高教社杯B题思路代码文章助攻
  • C++字符串字符替换程序
  • 【系统架构设计(16)】软件架构设计二:软件架构风格:构建系统的设计模式与选择指南
  • 学习机器学习能看哪些书籍
  • 白盒审计绕过
  • [bat-cli] docs | 控制器
  • 网络计算工具ipcalc详解
  • C++11 智能指针的使⽤及其原理
  • A股大盘数据-20250904分析