近乎免费的GeminiFlash有了结构化输出

本篇内容核心: Google Gemini 1.5 Flash 已支持「结构化输出」,非常经济实惠

官方文档还没出: 为了方便大家使用,我写了个 Sample Code,放在了下方

近乎免费的GeminiFlash有了结构化输出-2

Logan 是原 OpenAI 开发者关系负责人

后去了 Google,也是负责开发者关系

「格式化输出」很重要

上一篇中讲到: 结构化输出,是绝大多数 AI 产品和 Agent 的核心,无论是 AI 搜索、有记忆的 bot,还是各类 agent,都是基于结构化输出搭建的。

在上一篇中,你可以看到有关的起源、原理、用例,以及如何用它来搭建一个 AI 项目,这里就不再赘述:

看完这篇,你也能做 AI 搜索:论「结构化输出」

通过结构化输出,可以让 AI 输出一份思维导图或者表格:

近乎免费的GeminiFlash有了结构化输出-3

而不是成篇的文本:

史蒂夫·乔布斯,1955年2月24日出生,2011年10月5日去世,美国人。他活跃于科技、创新、企业管理和动画领域。乔布斯创立了Apple、NeXT和Pixar公司,推出了Mac、iPod、iPhone等具有划时代意义的产品,重塑了个人电脑、音乐和手机行业,奠定了苹果在全球科技领域的领军地位。作为Pixar的创办人之一,他也在动画领域留下了深远的影响。乔布斯是20世纪末至21世纪初最具影响力的企业家和创新者之一。

Gemini Flash 的结构化输出

Google 家之前也有结构化输出,不过是在他们的贵的模型,Gemini 1.5 Pro 上面

近乎免费的GeminiFlash有了结构化输出-4

而这次的更新,可以让廉价模型 1.5 Flash 也用上了:

100 万 token 的上下文

每天前 1500 个请求免费

调用价格低至 $0.075 每 100 万 token(长度少于 128k 的上文)

可叠加 GCP 的赞助/优惠

四舍五入不要钱

智谱的 Flash 是完全不要钱

相信做 AI 项目的同学都知道这意味了什么: 这便宜大碗,而且 AI 味不重的 Flash,可正儿八经用在决策 workflow 了!

近乎免费的GeminiFlash有了结构化输出-5

每天 1500 个免费请求

超出部分低至 $0.075 / 1M,外加项目折扣

Sample Code

目前,官方的调用方法还没出(会在本周末更新),但我可以给大家提供一份 sample code

近乎免费的GeminiFlash有了结构化输出-6

我们把上一篇《 看完这篇,你也能做 AI 搜索:论「结构化输出」 》中,“将四大名著的信息进行结构化输出”的例子拿来做对比,通过 GPT,代码这么写

from pydantic import BaseModelclass theBook(BaseModel): name: str writer: strclass theFour(BaseModel): books: list[theBook]completion = client.beta.chat.completions.parse( model="gpt-4o-2024-08-06", messages=[ {"role": "system", "content": "Extract the event information."}, {"role": "user", "content": "告诉我四大名著分别是什么,以及他们的作者是谁"}, ], response_format = theFour,)response = completion.choices[0].message.parsed

得到的结果是

theFour(books=[theBook(name='《红楼梦》', writer='曹雪芹'), theBook(name='《西游记》', writer='吴承恩'), theBook(name='《三国演义》', writer='罗贯中'), theBook(name='《水浒传》', writer='施耐庵')])

而通过 Flash,代码是类似这样的

"""Install the Google AI Python SDK$ pip install google-generativeai$ pip install google.ai.generativelanguage"""import osimport google.generativeai as genaifrom google.ai.generativelanguage_v1beta.types import contentgenai.configure(api_key=os.environ["GEMINI_API_KEY"])# Create the modelgeneration_config = { "temperature": 1, "top_p": 0.95, "top_k": 64, "max_output_tokens": 8192, "response_schema": content.Schema( type = content.Type.OBJECT, enum = "[]", required = "["books"]", properties = { "books": content.Schema( type = content.Type.ARRAY, items = content.Schema( type = content.Type.OBJECT, properties = { "name": content.Schema( type = content.Type.STRING, ), "writer": content.Schema( type = content.Type.STRING, ), }, ), ), }, ), "response_mime_type": "application/json",}model = genai.GenerativeModel( model_name="gemini-1.5-flash", generation_config=generation_config, # safety_settings = Adjust safety settings # See https://ai.google.dev/gemini-api/docs/safety-settings system_instruction="Extract the event information.",)chat_session = model.start_chat( history=[ { "role": "user", "parts": [ "告诉我四大名著分别是什么,以及他们的作者是谁", ], }, { "role": "model", "parts": [ "```jsonn{"books": [{"name": "红楼梦", "writer": "曹雪芹"}, {"name": "三国演义", "writer": "罗贯中"}, {"name": "水浒传", "writer": "施耐庵"}, {"name": "西游记", "writer": "吴承恩"}]} n```", ], }, ])response = chat_session.send_message("INSERT_INPUT_HERE")print(response.text)

得到结果:

{"books": [{"name": "红楼梦", "writer": "曹雪芹"}, {"name": "三国演义", "writer": "罗贯中"}, {"name": "水浒传", "writer": "施耐庵"}, {"name": "西游记", "writer": "吴承恩"}]}

结语

以上,就是本期教程,你学废了吗?

以及...

来看看我做的新开源玩具吧,生成的东西,能直接贴入

智谱 GLM-4-Plus 发布,独家附送免费 API,和我整的新活

相关...

在里回复「智谱API」,可获得无限量使用的智谱 API,9月1日前随便用,还剩最后一天

版权声明:
作者:小火箭
链接:https://www.xiaohuojian9.top/216.html
来源:小火箭官网
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>