查看原文
其他

迈向交互式编程,ChatGPT更新!

爬虫俱乐部 Stata and Python数据分析 2023-10-24

本文作者:罗天尧 新疆大学商学院

本文编辑:陈梦鹭

技术总编:郭泽源

Stata and Python 数据分析

爬虫俱乐部Stata基础课程Stata进阶课程Python课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~


1.概要
6月13日,OpenAI宣布了一系列重大更新。本文提炼了一些关键信息,供各位参考:
  • Chat Completions 接口新增了Function calling功能。

  • 更新了gpt-4-0613和gpt-3.5-turbo-0613模型(gpt-3.5-turbo-0301和gpt-4-0314模型即将落幕)。GPT4内测倒计时!

  • 新增了gpt-3.5-turbo的16k版,32k版正在路上!gpt-3.5-turbo成本降低了25%!gpt-3.5-turbo-16k略贵,但全量文本分析指日可待!
  • 以davinci为主的embedding模型,成本降低了75%!离自建向量库又进了一步!
2.案例

本文着重介绍更新的Function calling内容,具体操作问题可见本公众号:"定制属于自己的“贾维斯”——Python调用Chat"一文。
或许是受到了Gorilla(大模型API仓库)的启发,更新后的Chat Completions会在已知模型中进行推荐,就像“针对处理任务的函数选择器”。
首先,语言“描绘”一个或多个已有函数的功能(按python定义函数的思路理解,这里只是以文本形式定义),当然也可以是市面上已有的AI模型。这一步是告诉GPT可以有哪些可选函数,以便他做出精确的判断。以json格式请求:
function_descriptions = [
  {
      "name""get_score"#自定义函数名
      "description""Get the score by given name"#对定义函数的描述,提升精确度
      "parameters": { #
          "type""object",
          "properties": {
              "name": { #对传入参数的格式等定义
                  "type""string",
                  "description""Object name",
              }
          },
          "required": ["name"], #必须传入的参数
      },
    }
]
另一些预设定参数,其中user_query是提问(任务)。我们甚至可以设计更为复杂的任务:提取XX的关键信息,并整理为json格式,并发送到我的私人数据库……
user_query = "How about Alex this year?"
model="gpt-3.5-turbo-0613"
OPENAI_API_KEY = "U KEY~"
类似之前的调用方式,只是这里参数更新了。
回复已经识别到的参数与模型。

或许,枚举模型就要花费不少时间,离快速上手建立“AI模型为主的工作流(stream)”还很远。但秉着“官方投喂的总比瞎摆弄插件省事”的思想,我们可以使用GPT提取文本信息,将参数传回自定义的python函数,这也是个不错的思路!
name = eval(resp['function_call']['arguments']).get("name")
print(name)  #Alex
这里,引入流程化中的数据源与函数,“让”GPT来寻找答案。
import json

SCORES = { 'Alex': 99, 'Peter': 88 } #模拟数据库

def get_score(name): #自定义函数
    score = {
        "name": name,
        "score": SCORES[name]
    }
    return json.dumps(score)
print(get_score(name=name)) #{"name": "Alex", "score": 99}
不妨我们再建立一种交互式的输出机制。
response = openai.ChatCompletion.create(
    model=model,
    messages=[
        {"role""user""content": user_query},
        resp,
        {
            "role""function"#这里让他以get_score函数的身份回答
            "name""get_score",
            "content": get_score(name=name),
        },
    ],
)

print(response['choices'][0]['message']['content'])  #Alex has scored 99 this year.
或许LangFlow和Flowsie会更简单?没错,可视化编程的能力确实让人耳目一新!但目前而言,论速度和规模化部署,还是要从Gorilla/LLM(源头)+OpenAI(桥梁)找答案。
END

重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:


对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!







往期推文推荐一个简单又好玩的Python库——MyQR
replace命令的“加强版”!——如何使用ereplace,结合egen
XML 轻松读取:用 Python 发现数据宝藏

爬虫俱乐部重磅推出cnstata.com.cn

Markdown:让数学公式输入更方便!

处理日期的好手:pendulum
定制属于自己的“贾维斯”——Python调用Chat
学会format,数据格式任你拿捏【Python实战】游客最青睐的城市,你的家乡上榜了吗?

What’ new ? 速通Stata 18

【爬虫实战】Python爬取美食菜谱揭秘网络中心人物,你会是其中之一吗?考研之后,文科生需以“do”躬“do”!焕新升级!轻松获取港股、权证的历史交易数据爬虫俱乐部的精彩答疑---cntraveltime【爬虫俱乐部新命令速递】在Stata中与ChatGPT对话

用`fs`命令批量获取文件夹和不同文件夹下的excel文件

自然语言处理之实例应用

JSON帮手,FeHelper

     关于我们 

   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存