AIGC开发:调用openai的API接口实现简单机器人

简介

开始进行最简单的使用:通过API调用openai的模型能力
OpenAI的能力如下图:
在这里插入图片描述

文本生成模型

OpenAI 的文本生成模型(通常称为生成式预训练 Transformer 或大型语言模型)经过训练可以理解自然语言、代码和图像。这些模型提供文本输出来响应其输入。这些模型的输入也称为“提示”。设计提示本质上是如何“编程”大型语言模型,通常是通过提供说明或一些如何成功完成任务的示例。

Chat Completions API 聊天功能代码示例

聊天模型将消息列表作为输入,并返回模型生成的消息作为输出。尽管聊天格式旨在使多轮对话变得容易,但它对于没有任何对话的单轮任务也同样有用。

import os
from openai import OpenAI

# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

# 配置 OpenAI 服务,需要获取API_KEY
client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

response = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "hi,讲个笑话吧",
        }
    ],
    model="gpt-3.5-turbo",
)

print(response)

completions-api 补全功能代码示例

API于 2023 年 7 月收到最终更新,并且具有与新的聊天完成端点不同的界面。输入不是消息列表,而是称为提示的自由格式文本字符串。

import os
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv

_ = load_dotenv((find_dotenv()))
client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)


def get_prompt(prompt, model="gpt-3.5-turbo-instruct", ):
    response = client.completions.create(
        model=model,
        prompt=prompt,
        temperature=0.9,
        max_tokens=20,
        stream=True
    )
    return response


if __name__ == "__main__":
    response = get_prompt("今天我不")
    for chunk in response:
        print(chunk.choices[0].text, end="")

Chat Completions vs. Completions

官网已说明停止更新Completions,推荐使用Chat Completions

简单机器人(感知上下文)

带入一些业务场景来使用,机器人最开始吸引我的就是上下文的联系,调用API的时候需要把之前的聊天内容保存并再次发过去,下面用一个简单示例演示下是如何进行处理的

import json
import os
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv

_ = load_dotenv(find_dotenv())
client = OpenAI(
    # defaults to os.environ.get("OPENAI_API_KEY")
    api_key=os.getenv("OPENAI_API_KEY")
)

# 定义消息历史。先加入 system 消息,里面放入对话内容以外的 prompt
messages = [
    {
        "role": "system",
        "content": """
你是环保部门的客服代表,你叫小智。可以帮助用户选择最合适的地市环保政策。地市政策包括:
所属城市:天津市
政策类型:建设实施办法
政策概要:规定了生活垃圾分类收集设施的设计、施工、验收和交付使用要求,明确了配套设施与主体工程同时设计、同时施工、同时验收、同时交付使用的要求。
适用企业类型:各类建设主体。

所属城市:上海市
政策类型:生态环境准入清单
政策概要:提出了鼓励、引导和禁止事项,明确了生态环境准入要求,规范了企业行为,强化了环保监管。
适用企业类型:上海市行政区域内的企业。

所属城市:重庆市
政策类型:城市供水节水条例
政策概要:规范了城市供水、用水、节水等行为,保障城市生活、生产和其他用水需求,促进高质量发展、创造高品质生活。
适用企业类型:重庆市行政区域内的供水企业和用户。

所属城市:马鞍山市
政策类型:建筑垃圾管理办法
政策概要:规定了建筑垃圾的排放、运输、消纳和处理等行为,加强了对建筑垃圾的管理和监督,促进环境保护和资源利用。
适用企业类型:马鞍山市行政区域内的建设单位、施工单位和建筑垃圾运输单位。

注意使用 JSON 格式输出回答。
"""
    }
]

def get_completion(prompt, model="gpt-3.5-turbo-1106"):
    # 把用户输入加入消息历史
    messages.append({"role": "user", "content": prompt})

    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0,
        response_format={"type": "json_object"}
    )
    msg = response.choices[0].message.content

    # 把模型生成的回复加入消息历史。很重要,否则下次调用模型时,模型不知道上下文
    messages.append({"role": "assistant", "content": msg})
    return msg

if __name__ == "__main__":
    get_completion("有北京的政策吗?")
	get_completion("城市供水有哪些政策?")
	get_completion("这是哪个城市的政策?")
    print(messages)

返回结果

[
    {
        "role": "system",
        "content": "\n你是环保部门的客服代表,你叫小智。可以帮助用户选择最合适的地市环保政策。地市政策包括:\n天津市\n政策类型:建设实施办法\n政策概要:规定了生活垃圾分类收集设施的设计、施工、验收和交付使用要求,明确了配套设施与主体工程同时设计、同时施工、同时验收、同时交付使用的要求。\n适用企业类型:各类建设主体。\n\n上海市\n政策类型:生态环境准入清单\n政策概要:提出了鼓励、引导和禁止事项,明确了生态环境准入要求,规范了企业行为,强化了环保监管。\n适用企业类型:上海市行政区域内的企业。\n\n重庆市\n政策类型:城市供水节水条例\n政策概要:规范了城市供水、用水、节水等行为,保障城市生活、生产和其他用水需求,促进高质量发展、创造高品质生活。\n适用企业类型:重庆市行政区域内的供水企业和用户。\n\n马鞍山市\n政策类型:建筑垃圾管理办法\n政策概要:规定了建筑垃圾的排放、运输、消纳和处理等行为,加强了对建筑垃圾的管理和监督,促进环境保护和资源利用。\n适用企业类型:马鞍山市行政区域内的建设单位、施工单位和建筑垃圾运输单位。\n"
    },
    {
        "role": "user",
        "content": "有北京的政策吗?"
    },
    {
        "role": "assistant",
        "content": "很抱歉,我没有北京市的政策信息。如果您需要了解北京市的环保政策,建议您直接咨询北京市环保部门或者相关政府部门,他们会提供最准确和最及时的信息。"
    },
    {
        "role": "user",
        "content": "城市供水有哪些政策?"
    },
    {
        "role": "assistant",
        "content": "城市供水的政策主要包括以下几个方面:\n\n1. 水资源管理政策:针对城市供水的水资源管理,包括水资源保护、水资源配置、水资源利用效率等方面的政策。\n\n2. 水质管理政策:针对城市供水的水质管理,包括水源地保护、水处理工艺、水质监测等方面的政策。\n\n3. 供水设施建设政策:针对城市供水设施的建设和维护,包括供水管网建设、水厂建设、水泵站建设等方面的政策。\n\n4. 供水价格管理政策:针对城市供水的价格管理,包括水价制定、水费收取、价格监管等方面的政策。\n\n5. 供水节水政策:针对城市供水的节水管理,包括水资源合理利用、水损失控制、水价激励等方面的政策。\n\n具体的城市供水政策会因地区而异,您可以咨询当地的环保部门或者供水公司,了解更详细的政策信息。"
    },
    {
        "role": "user",
        "content": "这是哪个城市的政策?"
    },
    {
        "role": "assistant",
        "content": "这是一个通用的描述,适用于各个城市的供水政策。不同城市的具体政策可能会有所不同,您可以咨询所在城市的环保部门或供水公司,获取更准确的信息。"
    }
]

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
调用OPENAI API实现chatgpt对话,需要按照以下步骤进行操作: 1. 首先,注册OPENAI API账户并获取API密钥。 2. 创建一个Android项目,并添加相应的依赖项,以便可以使用HTTP请求库。 3. 使用HTTP请求库发送POST请求到OPENAI API,以获取chatgpt对话结果。可以使用以下代码片段: ``` String url = "https://api.openai.com/v1/engines/davinci-codex/completions"; String apiKey = "YOUR_API_KEY"; JSONObject postData = new JSONObject(); postData.put("prompt", "Hello, how are you?"); postData.put("max_tokens", 50); postData.put("temperature", 0.7); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) .header("Content-Type", "application/json") .header("Authorization", "Bearer " + apiKey) .POST(HttpRequest.BodyPublishers.ofString(postData.toString())) .build(); HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); String responseBody = response.body(); ``` 在上面的代码中,我们首先指定了OPENAI API的URL和API密钥。然后,我们创建了一个JSON对象,其中包含要发送给API的参数,例如“prompt”(对话的开头),“max_tokens”(要生成的最大令牌数)和“temperature”(输出的随机性)。最后,我们使用HTTP请求库发送POST请求,并从响应中获取对话结果。 4. 解析OPENAI API的响应,并将结果显示在Android应用程序中。可以使用以下代码片段: ``` JSONObject responseJson = new JSONObject(responseBody); JSONArray choices = responseJson.getJSONArray("choices"); if (choices.length() > 0) { JSONObject choice = choices.getJSONObject(0); String text = choice.getString("text"); // display text in app UI } else { // handle error } ``` 在上面的代码中,我们首先将响应体解析为JSON对象。然后,我们从响应中提取对话结果,将其显示在应用程序的用户界面中。 总之,要调用OPENAI API实现chatgpt对话,需要使用HTTP请求库发送POST请求,并解析响应以获取对话结果。然后,将结果显示在Android应用程序中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_三石_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值