Saltar para o conteúdo principal

Visão geral

O LemonData funciona bem com as integrações ChatOpenAI e OpenAIEmbeddings do LangChain quando você permanece na superfície padrão de chat e embeddings compatível com OpenAI.
A documentação atual do LangChain observa que ChatOpenAI tem como alvo os formatos oficiais de requisição/resposta compatíveis com OpenAI. Se você precisar de campos de resposta não padrão e específicos do provedor, use uma integração específica do provedor no LangChain em vez de depender de ChatOpenAI.
Tipo: Framework ou plataformaCaminho principal: superfície padrão compatível com OpenAINível de suporte: Surface padrão compatível
Esta página cobre deliberadamente apenas a superfície padrão compatível com OpenAI do LangChain, e não os recursos nativos do fornecedor do LangChain além desse escopo.

Instalação

pip install langchain langchain-openai langchain-community faiss-cpu

Configuração básica

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gpt-5.4",
    api_key="sk-your-lemondata-key",
    base_url="https://api.lemondata.cc/v1",
)

response = llm.invoke("Explain LemonData in one sentence.")
print(response.content)

Usando modelos diferentes

from langchain_openai import ChatOpenAI

gpt = ChatOpenAI(
    model="gpt-5.4",
    api_key="sk-your-key",
    base_url="https://api.lemondata.cc/v1",
)

claude = ChatOpenAI(
    model="claude-sonnet-4-6",
    api_key="sk-your-key",
    base_url="https://api.lemondata.cc/v1",
)

gemini = ChatOpenAI(
    model="gemini-2.5-flash",
    api_key="sk-your-key",
    base_url="https://api.lemondata.cc/v1",
)

deepseek = ChatOpenAI(
    model="deepseek-r1",
    api_key="sk-your-key",
    base_url="https://api.lemondata.cc/v1",
)

Histórico de mensagens

from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="You are a helpful assistant."),
    HumanMessage(content="What is the capital of France?")
]

response = llm.invoke(messages)
print(response.content)

Streaming

for chunk in llm.stream("Write a short poem about coding."):
    if chunk.content:
        print(chunk.content, end="", flush=True)

Embeddings

from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(
    model="text-embedding-3-small",
    api_key="sk-your-key",
    base_url="https://api.lemondata.cc/v1",
)

vector = embeddings.embed_query("Hello world")
print(vector[:5])

Exemplo simples de RAG

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough

embeddings = OpenAIEmbeddings(
    model="text-embedding-3-small",
    api_key="sk-your-key",
    base_url="https://api.lemondata.cc/v1",
)

texts = [
    "LemonData provides one API for many AI models.",
    "LemonData oferece suporte a integrações compatíveis com OpenAI."
]

vectorstore = FAISS.from_texts(texts, embeddings)
retriever = vectorstore.as_retriever()

prompt = ChatPromptTemplate.from_template(
    "Answer using the context below.\\n\\nContext:\\n{context}\\n\\nQuestion:\\n{question}"
)

rag_chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt
    | llm
)

response = rag_chain.invoke("What does LemonData provide?")
print(response.content)

Agents

Para novos projetos agênticos, o LangChain recomenda considerar o LangGraph para um controle mais explícito sobre fluxos de trabalho de longa duração e com uso de ferramentas.
from langchain.agents import create_openai_tools_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.tools import tool

@tool
def search(query: str) -> str:
    """Search for information."""
    return f"Search results for: {query}"

tools = [search]

prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a helpful assistant with access to tools."),
    ("human", "{input}"),
    ("placeholder", "{agent_scratchpad}")
])

agent = create_openai_tools_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools)

result = executor.invoke({"input": "Search for LemonData pricing"})
print(result["output"])

Boas práticas

A configuração mais confiável do LemonData é passar base_url="https://api.lemondata.cc/v1" diretamente para ChatOpenAI e OpenAIEmbeddings, em vez de depender de aliases antigos de variáveis de ambiente.
Limite-se a chat padrão, chamada de ferramentas, streaming e embeddings em ChatOpenAI. Se você precisar de extras nativos do fornecedor, mude para a integração própria do fornecedor no LangChain.
Use modelos de embedding como text-embedding-3-small para recuperação e reserve modelos de chat mais fortes para a etapa de resposta final.