Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se muestra cómo crear una aplicación de traducción mediante el SDK local de Foundry y LangChain. Use un modelo local para traducir texto entre idiomas.
Requisitos previos
Antes de comenzar este tutorial, necesita:
- Python 3.11 o posterior instalado en el equipo. Puede descargar Python desde el sitio web de official.
Repositorio de ejemplos
El código de ejemplo completo de este artículo está disponible en el repositorio foundry-samples GitHub. Cómo clonar el repositorio y acceder al directorio de ejemplo:
git clone https://github.com/microsoft-foundry/foundry-samples.git
cd foundry-samples/samples/python/foundry-local/langchain-integration
Instalación de paquetes
Si está desarrollando o distribuyendo en Windows, seleccione la pestaña Windows. El paquete de Windows se integra con el entorno de ejecución Windows ML y proporciona la misma superficie del API con una mayor amplitud de aceleración de hardware.
pip install foundry-local-sdk-winml openai
También debe instalar el siguiente paquete LangChain:
pip install langchain[openai]
Creación de una aplicación de traducción
Cree un nuevo archivo Python denominado translation_app.py en su IDE favorito y agregue el código siguiente:
from foundry_local_sdk import Configuration, FoundryLocalManager
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# Initialize the Foundry Local SDK
config = Configuration(app_name="foundry_local_samples")
FoundryLocalManager.initialize(config)
manager = FoundryLocalManager.instance
# Download and register all execution providers.
current_ep = ""
def _ep_progress(ep_name: str, percent: float):
global current_ep
if ep_name != current_ep:
if current_ep:
print()
current_ep = ep_name
print(f"\r {ep_name:<30} {percent:5.1f}%", end="", flush=True)
manager.download_and_register_eps(progress_callback=_ep_progress)
if current_ep:
print()
# Load a model
model = manager.catalog.get_model("qwen2.5-0.5b")
model.download(
lambda progress: print(
f"\rDownloading model: {progress:.2f}%",
end="",
flush=True,
)
)
print()
model.load()
print("Model loaded.")
# Start the web service to expose an OpenAI-compatible endpoint
manager.start_web_service()
base_url = f"{manager.urls[0]}/v1"
# Create a LangChain ChatOpenAI instance pointing to the local endpoint
llm = ChatOpenAI(
base_url=base_url,
api_key="none",
model=model.id,
)
# Create a translation chain
prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"You are a translator. Translate the following text to {language}. Only output the translation, nothing else.",
),
("user", "{text}"),
]
)
chain = prompt | llm | StrOutputParser()
# Run the chain
result = chain.invoke({"language": "Spanish", "text": "Hello, how are you today?"})
print(f"Translation: {result}")
# Clean up
model.unload()
manager.stop_web_service()
Referencias
- Referencia: Referencia del SDK local de Foundry
- Referencia: Introducción a Foundry Local
Nota
Una de las principales ventajas de Foundry Local es que selecciona automáticamente la variante de modelo más adecuada para el hardware del usuario. Por ejemplo, si el usuario tiene una GPU, descarga la versión de GPU del modelo. Si el usuario tiene una NPU (unidad de procesamiento neuronal), descarga la versión de la NPU. Si el usuario no tiene una GPU o una NPU, descarga la versión de CPU del modelo.
Para ejecutar la aplicación, abra un terminal y vaya al directorio donde guardó el translation_app.py archivo. A continuación, ejecute el siguiente comando:
python translation_app.py
Ha terminado cuando vea una línea Response: con el texto traducido.
Debería ver una salida similar a la siguiente:
Translating 'I love to code.' to French...
Response: <translated text>
Requisitos previos
Antes de comenzar este tutorial, necesita:
- Node.js 20 o posterior instalado en el equipo. Puede descargar Node.js desde el sitio web oficial.
Repositorio de ejemplos
El código de ejemplo completo de este artículo está disponible en el repositorio foundry-samples GitHub. Cómo clonar el repositorio y acceder al directorio de ejemplo:
git clone https://github.com/microsoft-foundry/foundry-samples.git
cd foundry-samples/samples/javascript/foundry-local/langchain-integration-example
Instalación de paquetes
Si está desarrollando o distribuyendo en Windows, seleccione la pestaña Windows. El paquete de Windows se integra con el entorno de ejecución Windows ML y proporciona la misma superficie del API con una mayor amplitud de aceleración de hardware.
npm install foundry-local-sdk-winml openai
Instalación de paquetes LangChain
También debe instalar los siguientes paquetes de Node.js:
npm install @langchain/openai @langchain/core
Creación de una aplicación de traducción
Cree un nuevo archivo JavaScript denominado translation_app.js en su IDE favorito y agregue el código siguiente:
import { ChatOpenAI } from "@langchain/openai";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { FoundryLocalManager } from 'foundry-local-sdk';
// Initialize the Foundry Local SDK
console.log('Initializing Foundry Local SDK...');
const endpointUrl = 'http://localhost:5764';
const manager = FoundryLocalManager.create({
appName: 'foundry_local_samples',
logLevel: 'info',
webServiceUrls: endpointUrl
});
console.log('✓ SDK initialized successfully');
// Download and register all execution providers.
let currentEp = '';
await manager.downloadAndRegisterEps((epName, percent) => {
if (epName !== currentEp) {
if (currentEp !== '') process.stdout.write('\n');
currentEp = epName;
}
process.stdout.write(`\r ${epName.padEnd(30)} ${percent.toFixed(1).padStart(5)}%`);
});
if (currentEp !== '') process.stdout.write('\n');
// Get the model object
const modelAlias = 'qwen2.5-0.5b'; // Using an available model from the list above
const model = await manager.catalog.getModel(modelAlias);
// Download the model
console.log(`\nDownloading model ${modelAlias}...`);
await model.download((progress) => {
process.stdout.write(`\rDownloading... ${progress.toFixed(2)}%`);
});
console.log('\n✓ Model downloaded');
// Load the model
console.log(`\nLoading model ${modelAlias}...`);
await model.load();
console.log('✓ Model loaded');
// Start the web service
console.log('\nStarting web service...');
manager.startWebService();
console.log('✓ Web service started');
// Configure ChatOpenAI to use your locally-running model
const llm = new ChatOpenAI({
model: model.id,
configuration: {
baseURL: endpointUrl + '/v1',
apiKey: 'notneeded'
},
temperature: 0.6,
streaming: false
});
// Create a translation prompt template
const prompt = ChatPromptTemplate.fromMessages([
{
role: "system",
content: "You are a helpful assistant that translates {input_language} to {output_language}."
},
{
role: "user",
content: "{input}"
}
]);
// Build a simple chain by connecting the prompt to the language model
const chain = prompt.pipe(llm);
const input = "I love to code.";
console.log(`Translating '${input}' to French...`);
// Run the chain with your inputs
await chain.invoke({
input_language: "English",
output_language: "French",
input: input
}).then(aiMsg => {
// Print the result content
console.log(`Response: ${aiMsg.content}`);
}).catch(err => {
console.error("Error:", err);
});
// Tidy up
console.log('Unloading model and stopping web service...');
await model.unload();
manager.stopWebService();
console.log(`✓ Model unloaded and web service stopped`);
#To ejecutar la aplicación, abra un terminal y vaya al directorio donde guardó el translation_app.js archivo. A continuación, ejecute el siguiente comando:
node translation_app.js
Ha terminado cuando vea una línea Response: con el texto traducido.
Debería ver una salida similar a la siguiente:
Translating 'I love to code.' to French...
Response: J'aime le coder
Solución de problemas
- Si ve un error de conexión de servicio, reinicie el servicio local Foundry e inténtelo de nuevo.
- La primera ejecución puede tardar más tiempo porque Foundry Local podría descargar el modelo.
- Si Node.js produce un error de importación o un error con 'await' a nivel superior, confirme que su proyecto está configurado para módulos ES.
Contenido relacionado
- Explore la documentación de LangChain para conocer las características avanzadas.
- Compilar modelos de Hugging Face para ejecutarse en Foundry Local