Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo mostra-lhe como construir uma aplicação de tradução usando o Foundry Local SDK e o LangChain. Use um modelo local para traduzir texto entre línguas.
Pré-requisitos
Antes de começares este tutorial, precisas de:
- Python 3.11 ou posterior instalado no seu computador. Pode descarregar Python do site oficial.
Repositório de samples
O código de exemplo completo deste artigo está disponível no repositório foundry-samples do GitHub. Para clonar o repositório e navegar até ao exemplo de uso:
git clone https://github.com/microsoft-foundry/foundry-samples.git
cd foundry-samples/samples/python/foundry-local/langchain-integration
Pacotes de instalação
Se estiver a desenvolver ou a enviar no Windows, selecione o separador Windows. O pacote Windows integra-se com o runtime Windows ML — fornece a mesma área de superfície da API com uma maior amplitude de aceleração por hardware.
pip install foundry-local-sdk-winml openai
Também precisa de instalar o seguinte pacote LangChain:
pip install langchain[openai]
Criar uma aplicação de tradução
Crie um novo ficheiro Python chamado translation_app.py no seu IDE favorito e adicione o seguinte código:
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()
Referências
- Referência: Referência do Foundry Local SDK
- Referência: Comece com a Foundry Local
Nota
Um dos principais benefícios do Foundry Local é que seleciona automaticamente a variante de modelo mais adequada para o hardware do utilizador. Por exemplo, se o utilizador tiver uma GPU, descarrega a versão GPU do modelo. Se o utilizador tiver uma NPU (Unidade de Processamento Neural), descarrega a versão da NPU. Se o utilizador não tiver nem GPU nem NPU, descarrega a versão CPU do modelo.
Para executar a aplicação, abre um terminal e navega até ao diretório onde guardaste o translation_app.py ficheiro. Depois, execute o seguinte comando:
python translation_app.py
Terminas quando vês uma Response: linha com o texto traduzido.
Deverias ver resultados semelhantes a:
Translating 'I love to code.' to French...
Response: <translated text>
Pré-requisitos
Antes de começares este tutorial, precisas de:
- Node.js 20 ou uma versão posterior instalada no teu computador. Pode descarregar Node.js no site oficial.
Repositório de samples
O código de exemplo completo deste artigo está disponível no repositório foundry-samples do GitHub. Para clonar o repositório e navegar até ao exemplo de uso:
git clone https://github.com/microsoft-foundry/foundry-samples.git
cd foundry-samples/samples/javascript/foundry-local/langchain-integration-example
Pacotes de instalação
Se estiver a desenvolver ou a enviar no Windows, selecione o separador Windows. O pacote Windows integra-se com o runtime Windows ML — fornece a mesma área de superfície da API com uma maior amplitude de aceleração por hardware.
npm install foundry-local-sdk-winml openai
Instalar pacotes LangChain
Também precisa de instalar os seguintes pacotes Node.js:
npm install @langchain/openai @langchain/core
Criar uma aplicação de tradução
Crie um novo ficheiro JavaScript nomeado translation_app.js no seu IDE favorito e adicione o seguinte código:
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 executar a aplicação, abrir um terminal e navegar até ao diretório onde guardou o translation_app.js ficheiro. Depois, execute o seguinte comando:
node translation_app.js
Terminas quando vês uma Response: linha com o texto traduzido.
Deverias ver resultados semelhantes a:
Translating 'I love to code.' to French...
Response: J'aime le coder
Resolução de problemas
- Se detetar um erro na ligação ao serviço, reinicie o serviço local da Foundry e tente novamente.
- A primeira execução pode demorar mais porque o Foundry Local pode fazer o download do modelo.
- Se o Node.js falhar com um erro de importação ou await no nível superior, confirme que o seu projeto está configurado para módulos ES.
Conteúdo relacionado
- Explore a documentação do LangChain para funcionalidades avançadas.
- Compilar modelos Hugging Face para executar no Foundry Local