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

通过python 调用OpenAI api_key提交问题解答

通过python 调用OpenAI api_key提交问题解答


  • ✨可以通过网页版的jupyter notebook调用,也可以通过spyder窗口等IDE窗口.

🌼通过python 调用OpenAI api_key接口,可以避免国内网页不能访问的问题。前提是需要自己已经注册了OpenAI帐号,并且在帐号内申请了api_key才行。

jupyter notebook调用

在这里插入图片描述

import openai
openai.api_key = "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"
def completion(prompt):completions = openai.Completion.create(engine="text-davinci-002",prompt=prompt,max_tokens=1024,n=1,stop=None,temperature=0.8,)message = completions.choices[0].textreturn message
print(completion("基于Keil生成一个8051单片机串口通讯的代码"))
  • 📍返回的结果:
需要实现的功能1) 串口中断,当收到第一个字节的时候,接收,直到收到数据完成的标志,保存在数组中。2) 开启接收中断,接收一个字节,当收到第一个字节的时候,接收,直到收到数据完成的标志,保存在数组中。#### 代码实现#include<reg52.h>#define FOSC 11059200L
#define BAUD 9600
#define T1MS (65536-FOSC/12/BAUD)
#define N1 0x40 
#define N2 0x00 
#define BUFFER_SIZE 16sbit LED = P1^1; 
sbit rs = P3^6; 
sbit rw = P3^7; 
sbit en = P3^5; 
sbit buzzer = P2^2; unsigned char code table[]={0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46,0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46,0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46,0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46};void delay(int i)
{while(i--);
}void write_com(unsigned char com)
{P0 = com;rs = 0;rw = 0;en = 1;delay(5);en = 0;
}void write_dat(unsigned char dat)
{P0 = dat;rs = 1;rw = 0;en = 1;delay(5);en = 0;
}void init()
{write_com(0x38);write_com(0x01);write_com(0x06);write_com(0x0c);write_com(0x0f);
}void write_str(unsigned char y, unsigned char x, unsigned char *s)
{unsigned char addr;if(y == 1)addr = 0x80 + x - 1;else if(y == 2)addr = 0xc0 + x - 1;write_com(addr);while(*s){write_dat(*s);s++;}
}void write_cmd(unsigned char y, unsigned char x)
{unsigned char addr;if(y == 1)addr = 0x80 + x - 1;else if(y == 2)addr = 0xc0 + x - 1;write_com(addr);
}void lcd_pulse()
{en=1;delay(5);en=0;
}void write_com1(unsigned char command)
{rs=0;rw=0;P0=command;lcd_pulse();
}void write_dat1(unsigned char dat)
{rs=1;rw=0;P0=dat;lcd_pulse();
}void lcd_init()
{write_com1(0x38);write_com1(0x06);write_com1(0x0c);write_com1(0x01);write_com1(0x80);
}void write_char(unsigned char c)
{write_dat1(c);
}void write_string(unsigned char *s)
{while(*s){write_char(*s);s++;}
}void timer0_init(void) 
{TMOD = 0x01; TH0=T1MS;TL0=T1MS;ET0=1; EA=1;TR0=1; 
}unsigned char hours;
unsigned char minutes;
unsigned char seconds;
unsigned char t;
unsigned char time_update;
unsigned char count;
unsigned char data[BUFFER_SIZE];
unsigned char *p;
void timer0_interrupt() interrupt 1//模拟中断,每1s中断一次 
{TH0=T1MS;TL0=T1MS;write_cmd(1,1);write_char(table[hours/10]);write_char(table[hours%10]);write_char(':');write_char(table[minutes/10]);write_char(table[minutes%10]);write_char(':');write_char(table[seconds/10]);write_char(table[seconds%10]);seconds++;time_update=1;
}void timer1_init()
{TH1=N1;TL1=N2;ET1=1;EA=1;TR1=1;
}void timer1_interrupt() interrupt 3
{TH1=N1;TL1=N2;if(seconds==60){seconds=0;minutes++;}if(minutes==60){minutes=0;hours++;}if(hours==24)hours=0;
}void init_serial()
{TMOD=0x20;SCON=0x50;TL1=N1;TH1=N2;ES=1;EA=1;TR1=1;count=0;p=data;
}void serial_interrupt(void)   interrupt 4 
{if(TI==1){TI=0;count=0;p=data;}else{SBUF=0x41+count;count++;if(count==BUFFER_SIZE){count=0;p=data;}elsep++;RI=0;}
}void main()
{  write_cmd(1,1);write_str(2,1,"  TEMPERATURE  ");timer1_init();timer0_init();lcd_init();init_serial();while(1){if(count==BUFFER_SIZE){write_cmd(1,1);write_str(2,1,"  TEMPERATURE  ");write_str(1,9,p);write_str(2,9,p+8);}}
}

🌻spyder窗口调用

在这里插入图片描述

# -*- coding: utf-8 -*-
"""
Spyder EditorThis is a temporary script file.
"""import openai
openai.api_key = "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"def completion(prompt):completions = openai.Completion.create(engine="text-davinci-002",prompt=prompt,max_tokens=2048,n=1,stop=None,temperature=0.8,)message = completions.choices[0].textreturn messageprint(completion("stm32f103vct6串口1初始化代码"))
  • 📜openai调用,提问stm32f103vct6串口1初始化代码返回数据:
波特率为115200//串口初始化函数
//bound:波特率
void uart1_init(u32 bound)
{//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);	//使能USART1,GPIOA,AFIO时钟GPIO_PinRemapConfig(GPIO_Remap_USART1, DISABLE);          //取消复用GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.09GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化PA10//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//串口1中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器//USART 初始化设置USART_InitStructure.USART_BaudRate = bound;//串口设置波特率USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx;	//收发模式USART_Init(USART1, &USART_InitStructure); //初始化串口1USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断USART_Cmd(USART1, ENABLE);                    //使能串口1}
//串口1中断服务程序
//注意,读取USARTx->SR能避免莫名其妙的错误
void USART1_IRQHandler(void)                	//串口1中断服务程序
{u8 Res;
#if SYSTEM_SUPPORT_OS 	//如果使用OS,由于串口接收中断优先级不能设置过高,因此当遇到串口错误时直接调用OS的相应服务OSIntEnter();    
#endifif(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾){
#if EN_USART1_RX			//如果使能接收Res =USART_ReceiveData(USART1);//(USART1->DR);	//读取接收到的数据if((USART_RX_STA&0x8000)==0)//接收未完成{if(USART_RX_STA&0x4000)//接收到了0x0d{if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始else USART_RX_STA|=0x8000;	//接收完成了 }else //还没收到0X0D{	if(Res==0x0d)USART_RX_STA|=0x4000;else{USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;USART_RX_STA++;if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收	  }		 }}   		 if(USART_RX_STA&0x8000)//接收完成{USART_RX_BUF[USART_RX_STA&0X3FFF]=0;//添加结束符memcpy(USART_TX_BUF,USART_RX_BUF,USART_REC_LEN);USART_RX_STA=0;//接收状态标记清零	  }
#endif }	else if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)  //发送中断{
#if EN_USART1_TX			//如果使能了接收USART1->DR = Tx1Buffer[Tx1Counter++]; //写DR寄存器数据发送if(Tx1Counter == Tx1Count){USART1->CR1 &= ~USART_CR1_TXEIE;		//关闭TX发送中断}
#endif}print(completion("stm32f103vct6串口1初始化代码"))
,总线资源申请好后,调用这个函数初始化return 0;
}//不使用串口,释放资源
static void __exit uart_exit(void)
{//释放设备号unregister_chrdev(dev_no,DEV_NAME);//释放设备结构体cdev_del(&uart_cdev);//删除设备类device_destroy(uart_class,MKDEV(dev_no,0));//释放设备类class_destroy(uart_class);//释放资源//1.释放硬件资源:释放ioremap的空间iounmap(va);//2.释放设备号release_region(0x40011000,0x400);
}module_init(uart_init);
module_exit(uart_exit);
MODULE_LICENSE("GPL");

🍁以上不管那种方式调用,都需要提前安装好openai模块

openai模块安装

  • openai模块安装命令: pip install openai
    在这里插入图片描述

jupyter notebook安装

  • 安装指令:pip install jupyter
    在这里插入图片描述
  • 🚩安装完成后,启动命令:jupyter notebook

spyder安装

  • spyder安装命令:pip install spyder
    在这里插入图片描述
  • 🚩安装完成后,启动命令:spyder
http://www.lryc.cn/news/1422.html

相关文章:

  • 图表控件LightningChart .NET再破世界纪录,支持实时可视化 1 万亿个数据点
  • 什么是响应性?
  • 黑马】后台管理176-183
  • Typescript - 类型守卫(typeof / in / instanceof / 自定义类型保护的类型谓词)通俗易懂详细教程
  • 6.8 左特征向量
  • 10个自动化测试框架,测试工程师用起来
  • 城市C友会【官方牵头更多的线下交流的机会,你有怎样的期待?】
  • CSDN 编程竞赛二十七期题解
  • RMI攻击中的ServerClient相互攻击反制
  • 值类型和引用类型
  • 后端开发必懂nginx面试40问
  • Redis为什么这么快?
  • 几种实现主题切换的方式
  • Jenkins使用(代码拉取->编译构建->部署上线)
  • IEEE期刊论文投稿前期准备
  • [AAAI 2022] TransFG: A Transformer Architecture for Fine-grained Recognition
  • 机器学习之决策树原理详解、公式推导(手推)、面试问题、简单实例(python实现,sklearn调包)
  • 一文搞懂CAS实现原理——怀玉
  • typora每次复制文档都要附带图片文件夹?学会配置gitee图床
  • Linux--gdb
  • c++11 标准模板(STL)(std::multimap)(二)
  • 【数据结构】二叉排序树——平衡二叉树的调整
  • 03- pandas 数据库可视化 (数据库)
  • 第三方电容笔怎么样?开学适合买的电容笔
  • Java学习-IO流-字节输出流
  • linux性能分析 性能之巅学习笔记和内容摘录
  • 机器学习笔记之生成模型综述(三)生成模型的表示、推断、学习任务
  • 第八章 Flink集成Iceberg的DataStreamAPI、TableSQLAPI详解
  • PyTorch学习笔记:nn.Sigmoid——Sigmoid激活函数
  • 个人学习系列 - 解决拦截器操作请求参数后台无法获取