Un assistant d'achat IA accepte des requêtes en langage naturel comme "trouve-moi des écouteurs sans fil à moins de 100 $ avec de bonnes critiques" et renvoie des recommandations de produits classées, basées sur des données Amazon en direct. Ce type d'assistant combine un LLM pour l'analyse d'intention et la génération de recommandations avec une API de recherche de produits en temps réel pour des stocks et des prix actualisés. Ce tutoriel construit un tel assistant en utilisant LangChain, ScavioSearch configuré pour Amazon, et une simple boucle conversationnelle.
Prérequis
- Python 3.10 ou supérieur
- pip install langchain langchain-scavio langchain-openai
- Une clé API Scavio
- Une clé API OpenAI
Parcours
Étape 1: Configurer l'outil de recherche Amazon
Instancier ScavioSearch avec la plateforme amazon. Cela donne à l'agent LangChain l'accès à la recherche de produits Amazon en direct.
from langchain_scavio import ScavioSearch
amazon_tool = ScavioSearch(
api_key="your_scavio_api_key",
platform="amazon",
marketplace="US",
max_results=10
)Étape 2: Construire le prompt système
Définir un prompt système qui instruit le LLM d'agir comme un assistant d'achat et de formater clairement les recommandations.
SYSTEM_PROMPT = (
"You are a helpful shopping assistant. When the user asks for product recommendations, "
"use the search tool to find current Amazon listings. Always mention price, rating, and "
"a brief reason for each recommendation. Keep responses concise."
)Étape 3: Créer l'agent
Connecter l'outil Amazon à un agent LangChain avec le prompt système d'assistant d'achat.
from langchain_openai import ChatOpenAI
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
llm = ChatOpenAI(model="gpt-4o", temperature=0)
prompt = ChatPromptTemplate.from_messages([
("system", SYSTEM_PROMPT),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(llm, [amazon_tool], prompt)
executor = AgentExecutor(agent=agent, tools=[amazon_tool])Étape 4: Exécuter une requête d'achat
Invoquer l'assistant avec une demande d'achat en langage naturel et afficher la réponse.
response = executor.invoke({
"input": "Find me the best wireless headphones under $150 with noise cancellation"
})
print(response["output"])Exemple Python
import os
from langchain_scavio import ScavioSearch
from langchain_openai import ChatOpenAI
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
os.environ["OPENAI_API_KEY"] = "your_openai_key"
tool = ScavioSearch(api_key=os.environ["SCAVIO_API_KEY"], platform="amazon", marketplace="US")
llm = ChatOpenAI(model="gpt-4o", temperature=0)
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful shopping assistant. Use the search tool to find products."),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(llm, [tool], prompt)
executor = AgentExecutor(agent=agent, tools=[tool], verbose=True)
if __name__ == "__main__":
result = executor.invoke({"input": "Best noise-canceling headphones under $150"})
print(result["output"])Exemple JavaScript
const { ChatOpenAI } = require("@langchain/openai");
const { DynamicTool } = require("@langchain/core/tools");
const { AgentExecutor, createToolCallingAgent } = require("langchain/agents");
const { ChatPromptTemplate } = require("@langchain/core/prompts");
const API_KEY = process.env.SCAVIO_API_KEY;
const amazonTool = new DynamicTool({
name: "amazon_search",
description: "Search Amazon for products. Input is a product search query.",
func: async (query) => {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ platform: "amazon", query, marketplace: "US" })
});
const data = await res.json();
return JSON.stringify((data.products || []).slice(0, 5));
}
});
async function main() {
const llm = new ChatOpenAI({ model: "gpt-4o" });
const prompt = ChatPromptTemplate.fromMessages([
["system", "You are a helpful shopping assistant."],
["human", "{input}"],
["placeholder", "{agent_scratchpad}"]
]);
const agent = await createToolCallingAgent({ llm, tools: [amazonTool], prompt });
const executor = new AgentExecutor({ agent, tools: [amazonTool] });
const result = await executor.invoke({ input: "Best wireless headphones under $150" });
console.log(result.output);
}
main().catch(console.error);Sortie attendue
Based on current Amazon listings, here are the top noise-canceling headphones under $150:
1. Anker Soundcore Q45 — $59.99 (4.4 stars, 28,000+ reviews)
Great ANC for the price, up to 50 hours battery life.
2. Sony WH-CH720N — $149.00 (4.5 stars, 15,000+ reviews)
Lightweight with Sony's proprietary ANC, folds flat.