python操作OpenAI教程

python操作OpenAI

bash 复制代码
pip install -U openai

代码:

python 复制代码
from openai import OpenAI

# 解决请求超时问题
import os
os.environ["http_proxy"] = "http://localhost:7890"
os.environ["https_proxy"] = "http://localhost:7890"

# 需要在实例化OpenAI对象时候,指定秘钥
client = OpenAI(api_key="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")

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",  # 指定使用的大模型是谁,gpt-3.5-turbo 是chatgpt3.5,
  messages=[  # 提示词,
    {"role": "system", "content": "你是一个老师."},  # 让chatgpt充当什么身份
    {"role": "user", "content": "编写一段歌颂元宵节的歌词"}, # 具体要chatgpt完成的操作了。
    # {"role": "assistant", "content": "在这元宵佳节临,灯火闪烁映星河。\n汇聚亲情团圆欢,共享团圆喜庆多。\n饮甜汤圆舒心意,挂灯花灯亮明朗。\n传统民俗传千古,文化传承爱不忘。\n元宵圆圆思亲亲,喜庆团圆共欢颜。"},  # 约束条件或基于什么条件
  ]
)

print(completion.choices[0].message)

使用langchain调用OpenAI

bash 复制代码
pip install -U langchain
pip install -U langchain-openai
python 复制代码
# 解决请求超时问题
import os, openai
from langchain_openai import ChatOpenAI

os.environ["http_proxy"] = "http://localhost:7890"
os.environ["https_proxy"] = "http://localhost:7890"

llm = ChatOpenAI(
    openai_api_key="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", # 从OpenAI官方申请秘钥[可以是用户秘钥,也可以是项目秘钥]
    model_name="gpt-3.5-turbo" # 默认是gpt-3.5-turbo
)

response = llm.invoke("你是谁?") ## 通过 invoke 传入对话
print(response.content)

response = llm.invoke("编写一段歌颂劳动节的歌词?")
print(response.content)

AI会话

安装模块如下:

bash 复制代码
pip install -U openai
pip install -U langchain-openai
pip install -U tiktoken # 可视化界面工具 gradio框架的核心模块

代码:

python 复制代码
import os, openai, gradio as gr
from langchain_openai import OpenAI
from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationSummaryBufferMemory

# 解决请求超时问题
os.environ["http_proxy"] = "http://localhost:7890"
os.environ["https_proxy"] = "http://localhost:7890"

os.environ["OPENAI_API_KEY"] = "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"
openai.api_key = os.environ["OPENAI_API_KEY"]

memory = ConversationSummaryBufferMemory(
    llm=ChatOpenAI(
        # openai_api_key="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", # 从OpenAI官方申请秘钥[可以是用户秘钥,也可以是项目秘钥]
        # model_name="gpt-3.5-turbo" # 默认是gpt-3.5-turbo
    ),
    max_token_limit=2048
)

conversation = ConversationChain(
    llm=OpenAI(
        # api_key="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",
        max_tokens=2048,
        temperature=0.5),
    memory=memory,
)

"""基于记忆体实现对话的历史上下文管理"""
def chat(input, history=[]):
    history.append(input)
    response = conversation.predict(input=input)
    history.append(response)
    # history[::2] 切片语法,每隔两个元素提取一个元素,即提取出所有的输入,
    # history[1::2]表示从历史记录中每隔2个元素提取一个元素,即提取出所有的输出
    # zip函数把两个列表元素打包为元组的列表的方式
    responses = [(u, b) for u, b in zip(history[::2], history[1::2])]
    print("用户输入:", history[::2])
    print("AI回答:", history[1::2])
    print("上下文:", responses)
    return responses, history


"""可视化界面中实现AI对话"""
with gr.Blocks(css="#chatbot{height:800px} .overflow-y-auto{height:800px}") as demo:
    chatbot = gr.Chatbot(elem_id="chatbot")
    state = gr.State([])

    with gr.Row():
        txt = gr.Textbox(show_label=False, placeholder="请输入你的问题.")

    txt.submit(chat, [txt, state], [chatbot, state])

# 启动项目
demo.launch(share=True)
相关推荐
qq5918406854 小时前
uiautomator2自动化安卓手机操作
python
80s7774 小时前
动态代理和静态代理的区别,动态代理怎么提高网络安全性
python
浪子明X5 小时前
十六位账本怎样发现传输差错:Internet Checksum 生活类比
开发语言
niucloud-admin6 小时前
JAVA V6 多商户商城 开发文档——job 计划任务开发
java·python·github
小叶肥辉6 小时前
LangChain链和LangGraph图的学习笔记【三】——分别用langchain_openai库和langchain_community库调用大模型
笔记·python·langchain
2401_873479407 小时前
IP属地为什么有时显示外省?用IP查询工具核查动态分配、运营商出口与GeoIP库
python·tcp/ip·ip
xiangyun617 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun618 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
OKkankan9 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
白远山9 小时前
家政服务家政社区派单实战:调度系统架构设计与实现指南
java·开发语言·小程序·架构·需求分析