Chuyển đến nội dung chính

Tổng quan

LemonData hoạt động tốt với các tích hợp ChatOpenAIOpenAIEmbeddings của LangChain khi bạn sử dụng bề mặt chat và embeddings tương thích OpenAI tiêu chuẩn.
Tài liệu LangChain hiện tại lưu ý rằng ChatOpenAI nhắm đến các định dạng request/response tương thích OpenAI chính thức. Nếu bạn cần các trường phản hồi không tiêu chuẩn, đặc thù theo nhà cung cấp, hãy sử dụng tích hợp LangChain dành riêng cho nhà cung cấp đó thay vì dựa vào ChatOpenAI.
Loại: Framework hoặc nền tảngĐường chính: surface LangChain tiêu chuẩn tương thích OpenAIMức hỗ trợ: Hỗ trợ surface tiêu chuẩn
Trang này chủ ý chỉ bao phủ surface LangChain chuẩn theo hướng OpenAI-compatible, chứ không mở rộng sang các tính năng LangChain riêng theo nhà cung cấp ngoài phạm vi đó.

Cài đặt

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

Cấu hình cơ bản

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)

Sử dụng các model khác nhau

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",
)

Lịch sử tin nhắn

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])

Ví dụ RAG đơn giản

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 hỗ trợ các tích hợp tương thích 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

Đối với các dự án agentic mới, LangChain khuyến nghị cân nhắc LangGraph để có khả năng kiểm soát tường minh hơn đối với các workflow chạy dài và sử dụng công cụ.
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"])

Thực tiễn tốt nhất

Cấu hình LemonData đáng tin cậy nhất là truyền base_url="https://api.lemondata.cc/v1" trực tiếp vào ChatOpenAIOpenAIEmbeddings thay vì phụ thuộc vào các alias biến môi trường cũ hơn.
Hãy bám theo chat tiêu chuẩn, tool calling, streaming và embeddings trên ChatOpenAI. Nếu bạn cần các tính năng bổ sung gốc của từng nhà cung cấp, hãy chuyển sang tích hợp LangChain riêng của nhà cung cấp đó.
Sử dụng các model embedding như text-embedding-3-small cho truy xuất và dành các model chat mạnh hơn cho bước trả lời cuối cùng.