【橘子大模型】OpenAi启动

一、简介

之前我们用langchain来操作本地部署的模型做了一些工作。我们今天就操作一下openai的接口,全面了解一下具体的运作方式。

二、官方配置

1、Api Key

我们首先来登陆openai的开发者平台,这里可以为我们创建账号的api-key和一些开发文档的提供。
如果你没有登陆过,你需要用你的谷歌或者其他账户登陆一下。这里我已经登陆进来了。
我们直接点击首页的设置进入操作页面。
在这里插入图片描述
紧接着你可以来到Api keys选项这里设置你账户的Api key。记住,创建之后记得保存出来,不然后面你就看不到了。我这里创建了两个,其实有一个没用,你自己看吧。
在这里插入图片描述
此时我们就完成了创建api key的操作。
其实这里还有很多其他的操作可以让你选择,比如Billing这个选项可以对一些OpenAi的模型进行付费。我们看到这里默认是0,所以无需付费,可能有些比较强的模型需要付费吧。
在这里插入图片描述

2、Api文档

我们接下来都将基于OpenAi的官方api文档进行开发。
这个文档列出了open ai所有的能够交互的api,我们先不一点一点过,我们直接找到我们最关心的一个内容,聊天chat功能
在这里插入图片描述
这里有很简单的入门代码,我们可以看一下,运行起来先。
这里他有个问题就是这个案例代码没有加载api key,我们需要创建一个.env文件(名字必须是.env)。然后把我们刚才在开发者平台上设置的api key配置进去。

OPENAI_API_KEY="sk-proj-***"

然后我们运行代码

import os
from dotenv import load_dotenv
from openai import OpenAI

load_dotenv("./.env")
api_key = os.getenv('OPENAI_API_KEY')
client = OpenAI()

completion = client.chat.completions.create(
  model="gpt-4o-mini",
  messages=[
    {"role": "developer", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ]
)
print(completion.choices[0].message)

打印出来了prompt的message信息。这就是openapi的运行模式,我们先简单了解一下他的启动方式。后面我们逐步完成一些功能。其实你会发现他和langchain有很多地方很相似。
在这里插入图片描述

三、代码实现

基于以上的一些功能调用方式,我们可以来实现一些规范化的代码。我们基于openai的接口来实现如何爬取一个网站的信息,代码如下。

Utils.py 工具类的封装,

import os
from dotenv import load_dotenv
from openai import OpenAI

class OpenAiUtil:
    def __init__(self, data):
        self.data = data
	# 构建一个open ai的客户端
    @staticmethod
    def buildOpenAiClient() -> OpenAI:
        load_dotenv("./.env")
        api_key = os.getenv('OPENAI_API_KEY')
        if not api_key:
            print("api-key 未发现设置!")
        elif not api_key.startswith("sk-proj-"):
            print("api-key 有问题")
        else:
            print("ok,api-key没问题了")
        return OpenAI()
Website.py 网站读取

import requests
from bs4 import BeautifulSoup

headers = {
 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
}
# 封装对于网站获取的类,使用requests包来处理
class Website:
    def __init__(self, url):
        """
        初始化一个操作对象
        """
        self.url = url
        response = requests.get(url, headers=headers)
        soup = BeautifulSoup(response.content, 'html.parser')
        self.title = soup.title.string if soup.title else "No title found"
        for irrelevant in soup.body(["script", "style", "img", "input"]):
            irrelevant.decompose()
        self.text = soup.body.get_text(separator="\n", strip=True)
py-website.py 调用llm 开始读取输出

from IPython.display import display
from Utils import OpenAiUtil
from Website import Website

# 加载openAi客户端
openai = OpenAiUtil.buildOpenAiClient()

# 定义prompt
system_prompt = "你是一个分析网站内容并提供简短摘要的助手,并且你在总结的时候会忽略可能与导航相关的文本。"
def user_prompt_for(website):
   return f"你正在查看一个名为“{website.title}”的网站。该网站的内容如下{website.text},请提供这个网站的简短摘要,使用 Markdown 格式。如果包含新闻或公告,请一并总结。"

# 构建message prompt
def messages_for(website):
    return [
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": user_prompt_for(website)}
    ]

# 发起llm call
def summarize(url):
    website = Website(url)
    response = openai.chat.completions.create(model = "gpt-4o-mini",messages = messages_for(website))
    return response.choices[0].message.content

# 输出最终结果
def display_summary(url):
    summary = summarize(url)
    display(summary)

# call 我们来爬取一个java nio的网址
display_summary("https://jenkov.com/tutorials/java-nio/index.html")

我们爬了java nio的一个学习网址,内容如下。
在这里插入图片描述
然后我们来看我们的输出。一切正常。ok,到此为止我们就完成了初步的工作。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值