写在前面
在国内由于种种限制,访问openai的接口总是一件麻烦事,即使解决了网络、账号等各种问题,token的价格也时常让人望而却步(曾经用GPT4跑了一下GrapRAG的demo花费了10多块钱)。如何低成本甚至免费的追赶如今的大模型热潮,今天来带大家看看完全兼容openai接口的豆包模型该如何使用
注册及开通
先带大家看下,火山方舟给的模型免费额度,可以看到不光有自家的Doubao-pro和Doubao-lite模型,还有智谱AI的GLM和月之暗面的Monshot模型可供免费使用。每种模型50万token的额度,这波羊毛不薅白不薅。而且豆包的价格也非常便宜,50万的token仅需1元
- 登录火山方舟网站,注册账号
可以使用手机号或邮箱注册,也可以使用抖音等第三方账号注册 console.volcengine.com/ark/region:…
- 进入开通管理,开通模型接入权限
边栏选择开通管理,选择在对应模型右面点击开通服务。这里推荐可以先开通Doubao-pro-4k和Doubao-embedding。前者是用来做生成的大模型,后者是做向量化处理的模型,一般学习使用这两个模型就可以了。
- 实名认证
第一次开通,需要先进行实名认证,可选择个人认证和企业认证两种。个人认证推荐使用抖音APP扫脸认证,只需要输入身份证,app刷个脸就可以,还是比较方便的
如何使用
Playground体验
可以在体验中心,初步体验Doubao模型的效果
API接入
当然,我们为了学习各种开源框架和大模型知识,仅在页面上对话肯定是不够的。我们需要通过api的方式进行接入。
- 在线推理->创建推理接入点
豆包模型,想要通过api访问,需要先创建接入点,然后使用接入点的endpoint-id来进行访问。因同一个Doubao模型提供多个版本可供使用(训练语料略有不同),通过接入点,可以保证线上效果的一致性。这里部署一下Doubao-pro-4k和Doubao-embeding模型
如果为了学习需要,推荐部署functioncall版本的模型
- api调用
部署完成后,可以进入列表页,选择API调用查看文档。这里会很贴心的给出火山ark的调用示例和第三方openai的调用示例,并且有python、golang、nodejs三种语言的示例。同样第一次使用,需要按提示创建api-key。(推荐使用API key的授权方式,完全兼容openai的接口)
开源集成
至此,我们已经完成了全部的前置准备工作,赶紧拿几个开源项目练练手吧
langchain
第一个,当然要试试大名鼎鼎的langchain支持度如何,这是每个想要学习大模型开发攻城狮绕不开的框架。跑一下,langchain的官方demo试试效果python.langchain.com/v0.2/docs/t…
import os
from langchain.chat_models import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
# 将baseurl切换为火山地址,因不同版本使用的环境变量不同,建议两个环境变量都声明一下
os.environ["OPENAI_BASE_URL"] = "https://ark.cn-beijing.volces.com/api/v3"
os.environ["OPENAI_API_BASE"] = "https://ark.cn-beijing.volces.com/api/v3"
# 上文中创建的api-key
os.environ["OPENAI_API_KEY"] = {{api-key}}
# 上文中部署的doubao-pro-4k模型的endpoint-id
model={{endpoint-id}}
llm = ChatOpenAI(model_name=model, temperature=0)
messages = [
SystemMessage(content="Translate the following from English into Italian"),
HumanMessage(content="hi!"),
]
llm.invoke(messages)
# resp
#AIMessage(content='Ciao!', response_metadata={'token_usage': {'completion_tokens': 3, 'prompt_tokens': 21, 'total_tokens': 24}, 'model_name': 'xxxx', 'system_fingerprint': None, 'finish_reason': 'stop', 'logprobs': None}, id='xxxx')
AutoGen
当红的multi agent框架Autogen,我们同样来跑一下demo
import os
from autogen import ConversableAgent
# 将baseurl切换为火山地址,因不同版本使用的环境变量不同,建议两个环境变量都声明一下
os.environ["OPENAI_BASE_URL"] = "https://ark.cn-beijing.volces.com/api/v3"
os.environ["OPENAI_API_BASE"] = "https://ark.cn-beijing.volces.com/api/v3"
# 上文中创建的api-key
os.environ["OPENAI_API_KEY"] = {{api-key}}
cathy = ConversableAgent(
"cathy",
system_message="Your name is Cathy and you are a part of a duo of comedians.",
llm_config={"config_list": [{"model": model, "temperature": 0.9, "api_key": os.environ.get("OPENAI_API_KEY")}]},
human_input_mode="NEVER", # Never ask for human input.
)
joe = ConversableAgent(
"joe",
system_message="Your name is Joe and you are a part of a duo of comedians.",
llm_config={"config_list": [{"model": model, "temperature": 0.7, "api_key": os.environ.get("OPENAI_API_KEY")}]},
human_input_mode="NEVER", # Never ask for human input.
)
result = joe.initiate_chat(cathy, message="Cathy, tell me a joke.", max_turns=2)
欢迎交流
三人行必有我师,欢迎大家入群交流、吹水,共同进步。
字节跳动内推,简历修改,面试辅导,也可加我个人vx